ask_followup_question
A ferramenta ask_followup_question
permite a comunicação interativa, fazendo perguntas específicas para coletar informações adicionais necessárias para concluir as tarefas de forma eficaz.
Parâmetros
A ferramenta aceita estes parâmetros:
question
(obrigatório): A pergunta específica a ser feita ao usuáriofollow_up
(opcional): Uma lista de 2 a 4 respostas sugeridas que ajudam a orientar as respostas do usuário, cada uma dentro de tags<suggest>
O Que Faz
Esta ferramenta cria uma interface de conversação entre o AI Cockpit Reasoning e o usuário, permitindo a coleta de esclarecimentos, detalhes adicionais ou preferências do usuário ao enfrentar ambiguidades ou pontos de decisão. Cada pergunta pode incluir respostas sugeridas para agilizar a interação.
Quando é usada?
- Quando informações críticas estão ausentes na solicitação original
- Quando o AI Cockpit Reasoning precisa escolher entre várias abordagens de implementação válidas
- Quando detalhes técnicos ou preferências são necessários para prosseguir
- Quando o AI Cockpit Reasoning encontra ambiguidades que precisam de resolução
- Quando um contexto adicional melhoraria significativamente a qualidade da solução
Principais Características
- Fornece uma maneira estruturada de coletar informações específicas sem interromper o fluxo de trabalho
- Inclui respostas sugeridas para reduzir a digitação do usuário e orientar as respostas
- Mantém o histórico da conversa e o contexto em todas as interações
- Suporta respostas contendo imagens e trechos de código
- Disponível em todos os modos como parte do conjunto de ferramentas "sempre disponível"
- Permite a orientação direta do usuário sobre as decisões de implementação
- Formata as respostas com tags
<answer>
para distingui-las da conversa regular - Zera o contador de erros consecutivos quando usado com sucesso
Limitações
- Limitado a fazer uma pergunta específica por uso da ferramenta
- Apresenta sugestões como opções selecionáveis na interface do usuário
- Não pode forçar respostas estruturadas – os usuários ainda podem responder livremente
- O uso excessivo pode retardar a conclusão da tarefa e criar uma experiência fragmentada
- As respostas sugeridas devem ser completas, sem espaços reservados que exijam edições do usuário
- Não há validação integrada para as respostas do usuário
- Não contém mecanismo para impor formatos de resposta específicos
Como Funciona
Quando a ferramenta ask_followup_question
é invocada, ela segue este processo:
-
Validação de Parâmetros: Valida o parâmetro obrigatório
question
e verifica se há sugestões opcionais- Garante que o texto da pergunta seja fornecido
- Analisa quaisquer respostas sugeridas do parâmetro
follow_up
usando a bibliotecafast-xml-parser
- Normaliza as sugestões em um formato de array, mesmo que haja apenas uma sugestão
-
Transformação JSON: Converte a estrutura XML em um formato JSON padronizado para exibição na interface do usuário
{
question: "Pergunta do usuário aqui",
suggest: [
{ answer: "Sugestão 1" },
{ answer: "Sugestão 2" }
]
} -
Integração com a UI:
- Passa a estrutura JSON para a camada da UI através do método
ask("followup", ...)
- Exibe botões de sugestão selecionáveis para o usuário na interface
- Cria uma experiência interativa para selecionar ou digitar uma resposta
- Passa a estrutura JSON para a camada da UI através do método
-
Coleta e Processamento de Respostas:
- Captura a entrada de texto do usuário e quaisquer imagens incluídas na resposta
- Envolve as respostas do usuário em tags
<answer>
ao retornar para o assistente - Preserva quaisquer imagens incluídas na resposta do usuário
- Mantém o contexto da conversa adicionando a resposta ao histórico
- Zera o contador de erros consecutivos quando a ferramenta é usada com sucesso
-
Tratamento de Erros:
- Rastreia erros consecutivos usando um contador
- Zera o contador quando a ferramenta é usada com sucesso
- Fornece mensagens de erro específicas:
- Para parâmetros ausentes: "Parâmetro obrigatório 'question' ausente"
- Para análise de XML: "Falha ao analisar operações: [mensagem de erro]"
- Para formato inválido: "Formato xml de operações inválido"
- Contém salvaguardas para impedir a execução da ferramenta quando os parâmetros obrigatórios estão ausentes
- Incrementa a contagem de erros consecutivos quando ocorrem erros
Sequência do Fluxo de Trabalho
O ciclo de pergunta e resposta segue esta sequência:
- Reconhecimento da Lacuna de Informação: O AI Cockpit Reasoning identifica as informações ausentes necessárias para prosseguir
- Criação de Pergunta Específica: O AI Cockpit Reasoning formula uma pergunta clara e direcionada
- Desenvolvimento de Sugestões: O AI Cockpit Reasoning cria respostas sugeridas relevantes (opcional, mas recomendado)
- Invocação da Ferramenta: O assistente invoca a ferramenta com a pergunta e sugestões opcionais
- Apresentação na UI: A pergunta e as sugestões são exibidas ao usuário como elementos interativos
- Resposta do Usuário: O usuário seleciona uma sugestão ou fornece uma resposta personalizada
- Manuseio de Mensagens: O sistema lida com mensagens parciais e completas
- Para respostas de streaming, processa os pedaços à medida que chegam
- Para mensagens completas, processa toda a resposta de uma vez
- Mantém a consistência do estado, independentemente do fracionamento da mensagem
- Processamento da Resposta: O sistema envolve a resposta em tags
<answer>
e preserva as imagens - Integração de Contexto: A resposta é adicionada ao histórico da conversa
- Continuação da Tarefa: O AI Cockpit Reasoning prossegue com a tarefa usando as novas informações
Exemplos de Quando Usado
- Ao desenvolver uma aplicação web, o AI Cockpit Reasoning pode perguntar sobre frameworks de estilização preferidos (Bootstrap, Tailwind, CSS personalizado)
- Ao criar uma API, o AI Cockpit Reasoning pode perguntar sobre métodos de autenticação (JWT, OAuth, chaves de API)
- Ao refatorar código, o AI Cockpit Reasoning pode perguntar sobre a priorização de desempenho vs. legibilidade
- Ao configurar um banco de dados, o AI Cockpit Reasoning pode perguntar sobre preferências específicas de design de esquema
- Ao criar um recurso personalizado, o AI Cockpit Reasoning pode perguntar sobre expectativas de comportamento específicas
- Ao solucionar erros, o AI Cockpit Reasoning pode perguntar sobre detalhes específicos do ambiente
Formato da Resposta
Quando um usuário responde a uma pergunta, a resposta é formatada com tags <answer>
para clareza e consistência. Este formato ajuda a separar claramente a resposta do usuário de outros elementos da conversa.
Formato de exemplo de resposta:
<answer>
Use o Tailwind CSS para estilização utilitária com máxima flexibilidade
</answer>
Principais características do formato de resposta:
- Envolvido por tags
<answer>
- Preserva a formatação da resposta original
- Mantém as imagens se incluídas na resposta
- Retorna o texto completo, mesmo para respostas longas
Exemplos de Uso
Perguntando sobre preferências de implementação:
<ask_followup_question>
<question>Qual abordagem de estilização você prefere para esta aplicação web?</question>
<follow_up>
<suggest>Usar Bootstrap para desenvolvimento rápido com componentes consistentes</suggest>
<suggest>Usar Tailwind CSS para estilização utilitária com máxima flexibilidade</suggest>
<suggest>Usar CSS puro com estilização personalizada para controle total e dependências mínimas</suggest>
</follow_up>
</ask_followup_question>
Solicitando esclarecimento técnico:
<ask_followup_question>
<question>Qual banco de dados esta aplicação deve usar para armazenar os dados do usuário?</question>
<follow_up>
<suggest>MongoDB para esquema flexível e armazenamento baseado em documentos</suggest>
<suggest>PostgreSQL para dados relacionais com fortes garantias de consistência</suggest>
<suggest>Firebase para atualizações em tempo real e gerenciamento simplificado de backend</suggest>
<suggest>SQLite para armazenamento local leve sem dependências externas</suggest>
</follow_up>
</ask_followup_question>
Abordando a ambiguidade nos requisitos:
<ask_followup_question>
<question>Como a aplicação deve lidar com a autenticação do usuário?</question>
<follow_up>
<suggest>Implementar autenticação por e-mail/senha com verificação de conta</suggest>
<suggest>Usar provedores de login social (Google, GitHub, etc.) para inscrição rápida</suggest>
<suggest>Implementar opções de login por e-mail/senha e social</suggest>
</follow_up>
</ask_followup_question>