ask_followup_question
La herramienta ask_followup_question habilita la comunicación interactiva haciendo preguntas específicas para recopilar información adicional necesaria para completar las tareas de manera efectiva.
Parámetros
La herramienta acepta estos parámetros:
question(requerido): La pregunta específica a hacer al usuariofollow_up(opcional): Una lista de 2-4 respuestas sugeridas que ayudan a guiar las respuestas del usuario, cada una dentro de etiquetas<suggest>
Qué Hace
Esta herramienta crea una interfaz conversacional entre AI Cockpit Reasoning y el usuario, permitiendo recopilar aclaraciones, detalles adicionales o preferencias del usuario cuando se enfrentan ambigüedades o puntos de decisión. Cada pregunta puede incluir respuestas sugeridas para agilizar la interacción.
¿Cuándo se usa?
- Cuando falta información crítica en la solicitud original
- Cuando AI Cockpit Reasoning necesita elegir entre múltiples enfoques de implementación válidos
- Cuando se requieren detalles técnicos o preferencias para continuar
- Cuando AI Cockpit Reasoning encuentra ambigüedades que necesitan resolución
- Cuando el contexto adicional mejoraría significativamente la calidad de la solución
Características Principales
- Proporciona una forma estructurada de recopilar información específica sin interrumpir el flujo de trabajo
- Incluye respuestas sugeridas para reducir la escritura del usuario y guiar las respuestas
- Mantiene el historial de conversación y el contexto entre interacciones
- Admite respuestas que contienen imágenes y fragmentos de código
- Disponible en todos los modos como parte del conjunto de herramientas "siempre disponibles"
- Habilita la orientación directa del usuario sobre las decisiones de implementación
- Formatea las respuestas con etiquetas
<answer>para distinguirlas de la conversación regular - Restablece el contador de errores consecutivos cuando se usa con éxito
Limitaciones
- Limitada a hacer una pregunta específica por uso de herramienta
- Presenta sugerencias como opciones seleccionables en la interfaz
- No puede forzar respuestas estructuradas: los usuarios aún pueden responder libremente
- El uso excesivo puede ralentizar la finalización de tareas y crear una experiencia fragmentada
- Las respuestas sugeridas deben ser completas, sin marcadores de posición que requieran ediciones del usuario
- Sin validación integrada para las respuestas del usuario
- No contiene ningún mecanismo para aplicar formatos de respuesta específicos
Cómo Funciona
Cuando se invoca la herramienta ask_followup_question, sigue este proceso:
-
Validación de Parámetros: Valida el parámetro requerido
questiony verifica las sugerencias opcionales- Garantiza que se proporcione el texto de la pregunta
- Analiza las respuestas sugeridas del parámetro
follow_upusando la bibliotecafast-xml-parser - Normaliza las sugerencias en un formato de array incluso si solo hay una sugerencia
-
Transformación JSON: Convierte la estructura XML en un formato JSON estandarizado para la visualización en la interfaz
{
question: "Pregunta del usuario aquí",
suggest: [
{ answer: "Sugerencia 1" },
{ answer: "Sugerencia 2" }
]
} -
Integración con la Interfaz:
- Pasa la estructura JSON a la capa de interfaz a través del método
ask("followup", ...) - Muestra botones de sugerencia seleccionables al usuario en la interfaz
- Crea una experiencia interactiva para seleccionar o escribir una respuesta
- Pasa la estructura JSON a la capa de interfaz a través del método
-
Recopilación y Procesamiento de Respuestas:
- Captura la entrada de texto del usuario y cualquier imagen incluida en la respuesta
- Envuelve las respuestas del usuario en etiquetas
<answer>al devolver al asistente - Preserva las imágenes incluidas en la respuesta del usuario
- Mantiene el contexto conversacional agregando la respuesta al historial
- Restablece el contador de errores consecutivos cuando la herramienta se usa con éxito
-
Manejo de Errores:
- Realiza seguimiento de errores consecutivos usando un contador
- Restablece el contador cuando la herramienta se usa con éxito
- Proporciona mensajes de error específicos:
- Para parámetros faltantes: "Missing required parameter 'question'"
- Para análisis XML: "Failed to parse operations: [error message]"
- Para formato inválido: "Invalid operations xml format"
- Contiene salvaguardas para prevenir la ejecución de la herramienta cuando faltan parámetros requeridos
- Incrementa el conteo de errores consecutivos cuando ocurren errores
Secuencia de Flujo de Trabajo
El ciclo pregunta-respuesta sigue esta secuencia:
- Reconocimiento de Brecha de Información: AI Cockpit Reasoning identifica la información faltante necesaria para continuar
- Creación de Pregunta Específica: AI Cockpit Reasoning formula una pregunta clara y dirigida
- Desarrollo de Sugerencias: AI Cockpit Reasoning crea respuestas sugeridas relevantes (opcional pero recomendado)
- Invocación de la Herramienta: El asistente invoca la herramienta con la pregunta y las sugerencias opcionales
- Presentación en la Interfaz: La pregunta y las sugerencias se muestran al usuario como elementos interactivos
- Respuesta del Usuario: El usuario selecciona una sugerencia o proporciona una respuesta personalizada
- Manejo de Mensajes: El sistema maneja tanto mensajes parciales como completos
- Para respuestas en streaming, procesa los fragmentos a medida que llegan
- Para mensajes completos, procesa toda la respuesta a la vez
- Mantiene la consistencia del estado independientemente de la fragmentación de mensajes
- Procesamiento de Respuesta: El sistema envuelve la respuesta en etiquetas
<answer>y preserva las imágenes - Integración de Contexto: La respuesta se agrega al historial de conversación
- Continuación de la Tarea: AI Cockpit Reasoning continúa con la tarea usando la nueva información
Ejemplos de Uso
- Al desarrollar una aplicación web, AI Cockpit Reasoning podría preguntar sobre los frameworks de estilo preferidos (Bootstrap, Tailwind, CSS personalizado)
- Al crear una API, AI Cockpit Reasoning podría preguntar sobre los métodos de autenticación (JWT, OAuth, claves API)
- Al refactorizar código, AI Cockpit Reasoning podría preguntar sobre la priorización del rendimiento vs. la legibilidad
- Al configurar una base de datos, AI Cockpit Reasoning podría preguntar sobre las preferencias específicas de diseño del esquema
- Al crear una característica personalizada, AI Cockpit Reasoning podría preguntar sobre las expectativas de comportamiento específicas
- Al solucionar errores, AI Cockpit Reasoning podría preguntar sobre detalles específicos del entorno
Formato de Respuesta
Cuando un usuario responde a una pregunta, la respuesta se formatea con etiquetas <answer> para mayor claridad y consistencia. Este formato ayuda a separar claramente la respuesta del usuario de otros elementos de la conversación.
Formato de respuesta de ejemplo:
<answer>
Usar Tailwind CSS para estilos de utilidad primero con máxima flexibilidad
</answer>
Características clave del formato de respuesta:
- Rodeado por etiquetas
<answer> - Preserva el formato de la respuesta original
- Mantiene las imágenes si se incluyen en la respuesta
- Devuelve el texto completo, incluso para respuestas largas
Ejemplos de Uso
Preguntar sobre preferencias de implementación:
<ask_followup_question>
<question>¿Qué enfoque de estilo preferirías para esta aplicación web?</question>
<follow_up>
<suggest>Usar Bootstrap para desarrollo rápido con componentes consistentes</suggest>
<suggest>Usar Tailwind CSS para estilos de utilidad primero con máxima flexibilidad</suggest>
<suggest>Usar CSS vanilla con estilos personalizados para control completo y dependencias mínimas</suggest>
</follow_up>
</ask_followup_question>
Solicitar aclaración técnica:
<ask_followup_question>
<question>¿Qué base de datos debería usar esta aplicación para almacenar datos de usuario?</question>
<follow_up>
<suggest>MongoDB para esquema flexible y almacenamiento basado en documentos</suggest>
<suggest>PostgreSQL para datos relacionales con fuertes garantías de consistencia</suggest>
<suggest>Firebase para actualizaciones en tiempo real y gestión simplificada del backend</suggest>
<suggest>SQLite para almacenamiento local ligero sin dependencias externas</suggest>
</follow_up>
</ask_followup_question>
Abordar ambigüedades en los requisitos:
<ask_followup_question>
<question>¿Cómo debería manejar la aplicación la autenticación de usuarios?</question>
<follow_up>
<suggest>Implementar autenticación de correo electrónico/contraseña con verificación de cuenta</suggest>
<suggest>Usar proveedores de inicio de sesión social (Google, GitHub, etc.) para registro rápido</suggest>
<suggest>Implementar tanto opciones de correo electrónico/contraseña como inicio de sesión social</suggest>
</follow_up>
</ask_followup_question>