Exemplos de playbook

Cada playbook precisa ter um ou mais exemplos. Esses exemplos são conversas de amostra entre um usuário final e o playbook, incluindo o diálogo e as ações realizadas pelo agente. Esses são exemplos de comando de poucos disparos para o LLM.

O console fornece uma interface para você inserir ações.

Agentes multilíngues

Se você quiser que o agente gerencie vários idiomas, os exemplos precisam usar cada um deles.

Exemplo de resumo de entrada e resumo de saída

Além dos parâmetros de entrada e saída, os playbooks oferecem suporte ao recebimento de um resumo de entrada e à emissão de um resumo de saída para trocar informações com outros playbooks. Os resumos são úteis para transmitir informações contextuais abstratas entre playbooks, enquanto os parâmetros são mais úteis para transmitir campos estruturados e bem definidos entre playbooks. Os parâmetros são a única maneira de trocar dados entre fluxos e playbooks.

Adicione resumos de entrada relevantes aos exemplos para que o playbook ajuste as ações com base nos resumos de entrada no momento da execução. Adicione resumos de saída com detalhes relevantes e precisos sobre o exemplo de conversa para mostrar ao playbook quais detalhes são importantes para resumir.

Exemplo de estado

Em um determinado momento da conversa, um playbook vai estar em um dos seguintes estados:

  • OK: o playbook alcançou a meta e o controle será transferido para o playbook pai.
  • CANCELLED: o usuário decidiu não prosseguir com a meta atribuída ao playbook. O controle vai ser transferido para o playbook pai. Se o playbook pai for um fluxo de CX, a intenção da entrada do usuário será detectada antes da execução do fluxo.
  • FAILED: o playbook não pode prosseguir com a meta devido a algum erro (por exemplo, a ferramenta retorna um erro 500). A sessão será encerrada com o status de falha. Uma mensagem EndInteraction será adicionada à resposta.
  • ESCALATED: o playbook decidiu que não pode alcançar a meta e precisa encaminhar a situação para um humano. A sessão será encerrada com o status elevado. Uma mensagem EndInteraction será adicionada à resposta.
  • PENDING: a conversa ainda está acontecendo no playbook.

O exemplo de nível superior e as invocações de playbook dele precisam ser indicados com um estado que corresponda ao playbook que está sendo referenciado.

Estratégia de seleção

A configuração da estratégia de seleção controla se um exemplo é incluído na solicitação do playbook enviada para o LLM. As seguintes opções estão disponíveis:

  • Seleção dinâmica: o exemplo é incluído condicionalmente, com base na relevância dele para o contexto da conversa atual. O exemplo pode ser omitido se o comando estiver se aproximando do limite de tokens. Você pode fornecer palavras correspondentes.
  • Sempre selecionar: o exemplo é sempre incluído, independente do contexto da conversa. O exemplo pode ser omitido se o comando estiver se aproximando do limite de tokens.
  • Nunca selecionar: o exemplo nunca é incluído no comando. O exemplo não vai afetar a performance do playbook. Essa configuração é útil para excluir temporariamente um exemplo para testes.

Correspondências de palavras

Você pode fornecer correspondências de palavras para exemplos com uma estratégia de seleção dinâmica. Isso permite que você tenha mais controle sobre se o exemplo está incluído no comando. Isso é recomendado para playbooks com mais de 100 exemplos.

É possível fornecer várias expressões de correspondência como palavras simples ou expressões regulares, e cada expressão de correspondência pode ser um dos seguintes tipos:

  • user: as correspondências são verificadas nas mensagens do usuário final.
  • agente: as correspondências são verificadas nas mensagens do agente.
  • any: as correspondências são verificadas em mensagens de usuários finais e agentes, bem como em ações.

Ao verificar uma correspondência, as expressões são comparadas com, no máximo, as cinco últimas rodadas de conversa e a primeira mensagem do usuário final.

Se uma correspondência for encontrada para o exemplo, ele será priorizado em relação a outros exemplos selecionados dinamicamente sem correspondências de palavras.

O formato das correspondências de palavras é uma lista separada por vírgulas, em que cada expressão começa com o tipo de expressão e dois-pontos. Exemplo:

user:red,agent:blue,any:placeOrder

Eles vão corresponder se uma das seguintes condições for verdadeira:

  • Uma mensagem do usuário final contém red.
  • Uma mensagem do agente contém blue.
  • Qualquer mensagem contém ou ação corresponde a placeOrder.

Adicionar ação

Um exemplo fornecido em um playbook consiste em uma série de ações. Essas ações podem variar nas combinações, mas representam principalmente a interação entre o usuário e o playbook, além das ações realizadas para atender à consulta ou aos requisitos do usuário.

Há duas maneiras de adicionar ações a um exemplo:

  • Para adicionar uma ação manualmente, clique no botão + na parte de baixo do painel direito ou no botão Adicionar ação ao manter o ponteiro sobre as ações atuais. Para usar essas opções ao criar um novo exemplo, clique na opção + Exemplo ou edite um exemplo existente.

  • Para gerar ações automaticamente com base nas instruções do playbook, insira uma entrada do usuário no campo Enter user input na parte de baixo do painel à direita. Use essa opção ao criar ou editar um exemplo. Você também pode usar essa opção ao testar o playbook no momento da execução no painel Preview playbook à direita. Para salvar ações em um exemplo no painel Prévia do playbook, clique em Salvar exemplo depois de selecionar a invocação do playbook na lista de invocações à esquerda do painel Prévia do playbook.

Verifique se as ações geradas automaticamente estão corretas e edite-as, se necessário. Isso é especialmente importante para os playbooks com poucos ou nenhum exemplo.

O playbook oferece suporte aos seguintes tipos de ações:

Resposta do playbook

A resposta do playbook à consulta do usuário.

Entrada do usuário

A consulta do usuário.

Uso da ferramenta

Essa é uma invocação de ferramenta para receber outras informações necessárias para atender à consulta do usuário. Essa ação precisa especificar os seguintes detalhes:

  • Tool: nome da ferramenta que será invocada.
  • Ação: nome da operação da ferramenta OpenAPI que precisa ser invocada. Para ferramentas de armazenamento de dados e ferramenta de função, o nome da ação é o mesmo da ferramenta.
  • Entrada da ferramenta: entradas que serão incluídas na chamada da ferramenta. Geralmente, elas são derivadas das conversas anteriores com o usuário.

    Para as ferramentas da API Open, o JSON requestBody é necessário para os tipos de método POST, PUT e PATCH.

    Exemplo de entrada requestBody da ferramenta de API aberta para a ação createPet:

    {
      "id": 1,
      "name": "Luna"
    }
    

    Para a ferramenta de repositório de dados, o requestBody de amostra em que a consulta é obrigatória e outros campos são opcionais.

    {
      "query": "Where is my nearest store?",
      "filter": "country: ANY(\"United States\")",
      "userMetadata": {
        "userCity": "San Fransisco",
      },
      "fallback": "We don't have any stores in your area."
    }
    
  • Saída da ferramenta: a resposta da invocação da ferramenta. Esta é uma resposta JSON válida da ferramenta para a entrada especificada. Para as ferramentas de API aberta, também pode ser um erro de string (por exemplo, "404 Não encontrado").

    Exemplo de saída da ferramenta OpenAPI para a ação listPets:

    {
      "pets": [
        {
          "id": 1,
          "name": "Luna"
        },
        {
          "id": 2,
          "name": "Charlie"
        }]
    }
    

    Exemplo de saída da ferramenta de repositório de dados:

    {
      "answer": "Here's the address to your nearest store ...",
      "snippets": [
        {
          "title": "San Fransisco Downtown",
          "uri": "https://www.example.com/San_Fransisco_Downtown",
          "text": "Address for San Fransisco Downtown .."
        }
      ]
    }
    

Para garantir que o playbook seja seguro, inclua também exemplos de como ele deve responder quando a invocação da ferramenta falhar. A falha de invocação da ferramenta de API aberta pode ser representada como uma string de erro ("404 not found") na saída da ferramenta. Para ferramentas de armazenamento de dados, a entrada fallback pode ser usada para especificar como responder se não houver uma resposta resumida.

Se você quiser que a ferramenta de armazenamento de dados inclua o URI na resposta do playbook, adicione exemplos que contenham o URI que você quer que o playbook responda. Se esse URI vier da ferramenta de armazenamento de dados, a saída da ferramenta de armazenamento de dados vai conter um URI que corresponde ao URI na resposta do playbook. A nota fallback não pode ser usada neste cenário porque desativa a capacidade do playbook de LLM de reformular a resposta da ferramenta de armazenamento de dados para incluir URIs na resposta do playbook.

Exemplos que contêm ações de uso de ferramentas podem ficar muito detalhados e contribuir para o aumento do consumo do limite de tokens de entrada. Para garantir o uso eficiente de tokens, verifique se as saídas das ferramentas são concisas e contêm informações relevantes para as metas do playbook. Para ferramentas de armazenamento de dados, considere remover snippets dos exemplos, já que eles podem contribuir para o alto consumo de tokens de entrada.

Invocação do playbook

Essa ação é usada quando o playbook precisa invocar outro para atender à consulta do usuário. Essa ação precisa especificar os seguintes detalhes:

  • Playbook: nome do playbook a ser invocado.
  • Resumo da entrada de invocação do playbook: um resumo das partes relevantes da conversa anterior que são úteis para o playbook invocado.
  • Parâmetros de entrada: parâmetros de entrada para transmitir ao playbook
  • Resumo da saída da invocação do playbook: um resumo do que o playbook precisa gerar após a conclusão da meta.
  • Parâmetros de saída: parâmetros de saída gerados pelo playbook após a conclusão da meta.