Pular para o conteúdo principal

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ário
  • follow_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:

  1. 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 biblioteca fast-xml-parser
    • Normaliza as sugestões em um formato de array, mesmo que haja apenas uma sugestão
  2. 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" }
    ]
    }
  3. 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
  4. 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
  5. 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:

  1. Reconhecimento da Lacuna de Informação: O AI Cockpit Reasoning identifica as informações ausentes necessárias para prosseguir
  2. Criação de Pergunta Específica: O AI Cockpit Reasoning formula uma pergunta clara e direcionada
  3. Desenvolvimento de Sugestões: O AI Cockpit Reasoning cria respostas sugeridas relevantes (opcional, mas recomendado)
  4. Invocação da Ferramenta: O assistente invoca a ferramenta com a pergunta e sugestões opcionais
  5. Apresentação na UI: A pergunta e as sugestões são exibidas ao usuário como elementos interativos
  6. Resposta do Usuário: O usuário seleciona uma sugestão ou fornece uma resposta personalizada
  7. 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
  8. Processamento da Resposta: O sistema envolve a resposta em tags <answer> e preserva as imagens
  9. Integração de Contexto: A resposta é adicionada ao histórico da conversa
  10. 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>