Ir al contenido principal

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 usuario
  • follow_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:

  1. Validación de Parámetros: Valida el parámetro requerido question y verifica las sugerencias opcionales

    • Garantiza que se proporcione el texto de la pregunta
    • Analiza las respuestas sugeridas del parámetro follow_up usando la biblioteca fast-xml-parser
    • Normaliza las sugerencias en un formato de array incluso si solo hay una sugerencia
  2. 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" }
    ]
    }
  3. 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
  4. 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
  5. 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:

  1. Reconocimiento de Brecha de Información: AI Cockpit Reasoning identifica la información faltante necesaria para continuar
  2. Creación de Pregunta Específica: AI Cockpit Reasoning formula una pregunta clara y dirigida
  3. Desarrollo de Sugerencias: AI Cockpit Reasoning crea respuestas sugeridas relevantes (opcional pero recomendado)
  4. Invocación de la Herramienta: El asistente invoca la herramienta con la pregunta y las sugerencias opcionales
  5. Presentación en la Interfaz: La pregunta y las sugerencias se muestran al usuario como elementos interactivos
  6. Respuesta del Usuario: El usuario selecciona una sugerencia o proporciona una respuesta personalizada
  7. 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
  8. Procesamiento de Respuesta: El sistema envuelve la respuesta en etiquetas <answer> y preserva las imágenes
  9. Integración de Contexto: La respuesta se agrega al historial de conversación
  10. 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>