📄 Especificação do Prompt Estruturado

🔧 Estrutura Geral

O <prompt> define um formato XML para uso em agentes, automações e assistentes. Ele é composto pelas seguintes seções:

🏷️ Tags

Tag Obrigatória Descrição
<prompt>Tag raiz do documento.
<context>Cenário de aplicação do prompt.
<usage-rules>Conjunto de regras de validação. Pode ser usado em <context>, <fallback> e <step>.
---- <rule>Cada regra com id, type, required.
<instructions>Etapas sequenciais de execução.
---- <step>Cada passo com atributo order.
<tools>Bloco opcional de ferramentas executáveis.
---- <tool>Ação, API ou função com name, when, mode.
---- ---- <param>Parâmetros de entrada para a ferramenta.
<fallback>Mensagem ou ação se regras não forem atendidas.
<vars>Variáveis globais usadas no prompt.
---- <var>Definição de uma variável com name e value.

🔑 Atributos das Tags

Tag Atributo Obrigatório Descrição
<rule> id Identificador único da regra.
<rule> type Tipo da regra (ex: condition).
<rule> required Se a regra é obrigatória (true ou false).
<step> order Ordem sequencial do passo.
<rule> action Ação a ser executada se a regra for ativada.
<step> order Ordem sequencial do passo.
<tool> name Nome da ferramenta, função ou API.
<tool> required Se a ferramenta é obrigatória (true ou false).
<tool> when Condição para execução da ferramenta.
<tool> mode Modo de execução (sync ou async).
<fallback> trigger Evento que dispara o fallback (ex: if_failed).
<var> name Nome da variável.
<var> value Valor inicial da variável.

🧪 Exemplo Completo

<prompt>
  <metadata>
    <author>Everaldo</author>
    <version>1.0</version>
    <date>2025-07-08</date>
  </metadata>
  <context>
    Você é um agente que vai lidar com follow up e com a pesquisa de satisfação

    o usuario vai responder com:

    Ótimo
    Bom
    Regular
    Ruim
    Péssimo

    Se for Bom ou Regular pergunta a ele se teria alguém para indicar já que gostou do serviço

    Se for outra opção pergunte porque não gostou e o que poderia melhorar

    Depois que ele responder guarde isso no banco de dados

    Se tiver indicação peça o nome e o numero do telefone (se possível whatsapp)
  </context>
  <instructions>
    <step order="1">Verifique as condições r1 e r2.</step>
    <step order="2">Se forem verdadeiras, prossiga com o envio.</step>
  </instructions>
  <tools>
    <tool name="enviarFormulario" required="true" when="Usuário enviar todos os dados" mode="sync">
      <param>nome</param>
      <param>email</param>
      <usage-rules>
        <rule id="r1" type="condition" required="true">Sem indicação disponível.</rule>
        <rule id="r2" type="condition" required="true">Dados já enviados.</rule>
      </usage-rules>
      <fallback trigger="Não conseguiu capturar o e-mail">
        Você precisa indicar alguém ou enviar os dados antes de continuar.
      </fallback>
    </tool>
  </tools>
  <vars>
    <var name="nome" value="" />
    <var name="email" value="" />
  </vars>
  <fallback action="Executar ferramenta X">
      <usage-rules>
        <rule id="r1" type="condition" required="true">Não conseguiu detectar o telefone.</rule>
      </usage-rules>
  </fallback>
</prompt>
      

📋 Exemplos de Regras (<rule>)