Avaliar agentes de pedidos usando o framework de avaliação

Este guia explica como usar o framework de avaliação no Agente de IA para pedidos de comida para testar, validar e comparar seus agentes de pedidos de comida com IA.

A avaliação automatizada permite verificar se o agente de pedidos recebe os pedidos com precisão, processa seleções complexas de modificadores, aplica as regras do cardápio corretamente e verifica o comportamento do agente.

Visão geral do framework de avaliação

O framework de avaliação oferece simulação e verificação automatizadas para conversas de pedidos de comida. Em vez de testar manualmente cada item do cardápio e caso limite de conversa, você pode definir conjuntos de testes que executam sessões de clientes simuladas no agente e verificar o estado e o diálogo do carrinho resultantes.

Durante uma execução de avaliação, o framework simula o lado do cliente da conversa usando um dos dois tipos de casos de teste:

  • Turnos de conversa predefinidos: forneça uma sequência programada de entradas de texto do cliente para testes de regressão determinísticos. Use esse modo para verificar se frases exatas do cliente produzem respostas esperadas do agente ou para reproduzir sessões e escalonamentos reais de clientes da produção.
  • Simulação de sessão dinâmica baseada em instruções: forneça uma instrução de pedido de linguagem natural de alto nível (como pedir itens específicos, solicitar substituições ou perguntar sobre alérgenos). Um simulador de cliente LLM representa a conversa de forma dinâmica, testando como o agente lida com diálogos realistas, perguntas de esclarecimento, mudanças de ideia no meio do pedido e frases variadas do cliente.

Modelo de recurso de avaliação

O framework de avaliação é estruturado em torno de quatro recursos principais:

  • EvaluationDataset: uma coleção nomeada de casos de avaliação que representam um conjunto de testes, como um conjunto de regressão de cardápio principal ou testes de combos de café da manhã.
  • EvaluationCase: um cenário de teste individual que avalia uma interação de pedidos (usando turnos predefinidos ou instruções dinâmicas) em relação a um contexto de avaliação e um conjunto de correspondências.
  • EvaluationContext: o ambiente de execução de um caso de teste ou conjunto de dados, incluindo a localização da loja de destino, o menu ativo, o período do dia e o horário de início da sessão simulada.
  • EvaluationMatcher: uma regra de declaração avaliada no final da sessão de pedidos que verifica estados específicos do carrinho, texto de declaração ou critérios semânticos.

Correspondências de avaliação

Um EvaluationMatcher define uma condição que o agente precisa atender para que o caso de teste seja aprovado. Um caso de avaliação pode referenciar várias correspondências, e cada correspondência produz um resultado booleano de aprovação ou reprovação:

  • Correspondência de resultado do pedido: compara o carrinho final do cliente com um Order esperado. A correspondência verifica se todos os itens, grupos de modificadores, modificadores aninhados e quantidades de itens correspondem após a normalização.
  • Correspondência de string de declaração do agente: verifica se as respostas do agente contêm uma substring específica ou correspondem a uma expressão regular. É possível inverter a condição de correspondência para verificar se o agente não diz frases proibidas.
  • Correspondência de julgamento de LLM: usa um juiz de LLM para avaliar critérios de linguagem natural que não podem ser validados com correspondência de string exata. Por exemplo, é possível afirmar: "O agente confirmou se o cliente queria queijo antes de finalizar o pedido" ou "O agente informou educadamente ao cliente que os milkshakes não estão disponíveis durante o café da manhã".

Contextos de avaliação

Um EvaluationContext configura o ambiente do restaurante em que a sessão de avaliação é executada:

  • Loja: o nome do recurso da loja de destino (projects/{project}/locations/{location}/brands/{brand}/stores/{store}). A loja determina o cardápio ativo, os preços, o fuso horário e as substituições de personalização do agente.
  • Cardápio: um nome de recurso de cardápio opcional para testar um cardápio candidato antes de associá-lo a uma loja em produção.
  • ID do período do dia: um ID de período do dia opcional (como breakfast ou dinner) para verificar a disponibilidade de itens do cardápio e as regras de precificação durante períodos específicos de refeição.
  • Horário de início da sessão de teste: um carimbo de data/hora ISO opcional para simular pedidos feitos em um horário ou dia da semana específico.

Avaliar no console do Agente de IA para pedidos de comida

O console do Agente de IA para pedidos de comida oferece uma interface interativa para gerenciar conjuntos de dados de avaliação, executar testes e analisar resultados.

1. Criar um contexto de avaliação

  1. No console do Agente de IA para pedidos de comida, selecione seu projeto e marca.
  2. No menu de navegação, clique em Avaliação.
  3. Clique na guia Contextos.
  4. Clique em Novo contexto.
  5. Insira um nome de exibição e selecione a Loja de destino.
  6. Opcional: selecione uma substituição específica de Cardápio ou Período do dia.
  7. Clique em Criar.

2. Criar correspondências de avaliação

  1. Na página Avaliação, clique na guia Correspondências.
  2. Clique em Nova correspondência.
  3. Insira um nome de exibição e escolha o tipo de correspondência:
    • Resultado do pedido: crie o pedido esperado selecionando itens, modificadores e quantidades.
    • Declaração do agente: insira a substring ou o padrão de expressão regular necessário.
    • Julgamento de LLM: insira os critérios de linguagem natural para o juiz de LLM.
  4. Clique em Criar.

3. Criar conjuntos de dados e importar casos de teste

No console, os casos de teste podem existir por conta própria ou ser organizados em conjuntos de dados. É possível criar conjuntos de dados diretamente no console, mas os casos de teste precisam ser importados de arquivos YAML ou convertidos de sessões de produção.

Criar um conjunto de dados

  1. No console do Agente de IA para pedidos de comida, acesse Avaliação > Conjuntos de dados e casos.
  2. No painel Conjuntos de dados, clique em Novo conjunto de dados.
  3. Insira um nome de exibição (como Combo Meals Regression) e uma descrição opcional.
  4. Clique em Criar.

Também é possível clicar em Importar no painel Conjuntos de dados para importar conjuntos de dados de um arquivo YAML.

O arquivo YAML de exemplo a seguir define um conjunto de dados de avaliação com casos de avaliação inline:

- name: projects/PROJECT_ID/locations/LOCATION/brands/BRAND_ID/evaluationDatasets/DATASET_ID
  displayName: Core Combo Regression
  description: Core combo ordering and modifier selection regression suite
  evaluationContext: projects/PROJECT_ID/locations/LOCATION/brands/BRAND_ID/evaluationContexts/CONTEXT_ID
  evaluationCases:
    - name: projects/PROJECT_ID/locations/LOCATION/brands/BRAND_ID/evaluationCases/CASE_ID_1
      displayName: double_cheeseburger_combo
      description: Tests combo meal ordering with side and drink modifier selections
      evaluationContext: projects/PROJECT_ID/locations/LOCATION/brands/BRAND_ID/evaluationContexts/CONTEXT_ID
      evaluationMatchers:
        - projects/PROJECT_ID/locations/LOCATION/brands/BRAND_ID/evaluationMatchers/ORDER_MATCHER_ID
      staticTextTurnCase:
        textTurns:
          - userTextInput: "I'd like a double cheeseburger combo."
            exampleAgentResponse: "What drink and side would you like with your combo?"
          - userTextInput: "Onion rings and a large diet cola, please."
            exampleAgentResponse: "Got it, a double cheeseburger combo with onion rings and a large diet cola. Anything else?"
          - userTextInput: "No, that's everything."
            exampleAgentResponse: ''

Importar casos de avaliação

  1. No painel Casos, clique em Importar.
  2. Selecione um arquivo YAML que defina seus casos de avaliação.
  3. Confirme o upload. Os casos importados aparecem na lista Casos.

Também é possível clicar em Exportar no painel Conjuntos de dados ou Casos para fazer o download das definições atuais como arquivos YAML.

O arquivo YAML de exemplo a seguir define casos de avaliação com turnos de conversa predefinidos, contextos de avaliação e correspondências:

- name: projects/PROJECT_ID/locations/LOCATION/brands/BRAND_ID/evaluationCases/CASE_ID_1
  displayName: Double Cheeseburger Combo
  description: Tests combo meal ordering with side and drink modifier selections
  evaluationContext: projects/PROJECT_ID/locations/LOCATION/brands/BRAND_ID/evaluationContexts/CONTEXT_ID
  evaluationMatchers:
    - projects/PROJECT_ID/locations/LOCATION/brands/BRAND_ID/evaluationMatchers/ORDER_MATCHER_ID
    - projects/PROJECT_ID/locations/LOCATION/brands/BRAND_ID/evaluationMatchers/UTTERANCE_MATCHER_ID
  staticTextTurnCase:
    textTurns:
      - userTextInput: "I'd like a double cheeseburger combo."
        exampleAgentResponse: "What drink and side would you like with your combo?"
      - userTextInput: "Onion rings and a large diet cola, please."
        exampleAgentResponse: "Got it, a double cheeseburger combo with onion rings and a large diet cola. Anything else?"
      - userTextInput: "No, that's everything."

- name: projects/PROJECT_ID/locations/LOCATION/brands/BRAND_ID/evaluationCases/CASE_ID_2
  displayName: Breakfast Allergen Inquiry
  description: Tests agent handling of customer allergy questions during breakfast
  evaluationContext: projects/PROJECT_ID/locations/LOCATION/brands/BRAND_ID/evaluationContexts/CONTEXT_ID
  evaluationMatchers:
    - projects/PROJECT_ID/locations/LOCATION/brands/BRAND_ID/evaluationMatchers/LLM_JUDGEMENT_MATCHER_ID
  staticTextTurnCase:
    textTurns:
      - userTextInput: "Are your pancakes prepared with peanut oil?"
      - userTextInput: "Okay, I'll take the oatmeal instead."

Organizar casos em conjuntos de dados

Os casos de avaliação podem existir de forma independente sem pertencer a um conjunto de dados. Para organizar casos em um conjunto de dados:

  1. No painel Casos, selecione um ou mais casos de teste usando as caixas de seleção.
  2. Arraste os casos selecionados para o conjunto de dados de destino no painel Conjuntos de dados.
  3. Clique no conjunto de dados no painel Conjuntos de dados para expandi-lo e analisar os casos atribuídos.

4. Converter sessões de clientes do histórico de pedidos

Para reproduzir problemas relatados pelo cliente ou criar conjuntos de testes diretamente do tráfego de produção real:

  1. No menu de navegação, clique em Histórico de pedidos.
  2. Clique na linha da sessão de pedidos que você quer testar.
  3. No painel Detalhes do pedido, clique em Converter em caso de avaliação.
  4. Selecione ou crie um contexto de avaliação e correspondências.
  5. Clique em Converter. As declarações do cliente na navegação guiada são convertidas em um caso de avaliação automaticamente.

5. Executar avaliações e inspecionar resultados

É possível executar um conjunto de dados inteiro ou casos selecionados individuais:

  • Executar um conjunto de dados: no painel Conjuntos de dados, clique em Executar conjunto de dados ao lado do conjunto de dados de destino.
  • Executar casos individuais: no painel Casos, selecione um ou mais casos usando as caixas de seleção e clique em Executar na barra de ações de seleção.

Para monitorar execuções e inspecionar resultados detalhados:

  1. Clique na guia Histórico para acompanhar o progresso da execução, a taxa de aprovação geral e a duração da execução.
  2. Clique em qualquer execução na tabela de histórico para conferir os resultados detalhados do caso:
    • Resumo: analise a porcentagem geral de aprovação ou reprovação e o total de casos aprovados.
    • Transcrições de turnos: inspecione o diálogo turno a turno entre o cliente simulado e o agente.
    • Detalhes da correspondência: analise quais correspondências foram aprovadas ou reprovadas, incluindo explicações do juiz de LLM para critérios qualitativos reprovados.

A seguir