Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Os conjuntos de dados de avaliação são arquivos JSON que contêm prompts e respostas esperadas. Este artigo define o esquema do conjunto de dados, documenta onde a ferramenta procura conjuntos de dados e mostra como projetar testes eficazes, incluindo cenários avançados, como conversas em vários turnos, configuração do avaliador por item e conjuntos de testes categorizados.
Visão geral do esquema
Os conjuntos de dados de avaliação são arquivos JSON. A ferramenta dá suporte a duas formas equivalentes: um objeto versionado (recomendado) e uma matriz herdada.
Esquema da versão (recomendado)
O conjunto de dados válido mais simples requer apenas schemaVersion e uma items matriz com prompt campos e expected_response .
{
"schemaVersion": "1.0.0",
"items": [
{
"prompt": "string",
"expected_response": "string"
}
]
}
A versão 1.6.0 do esquema adiciona suporte para configuração padrão e por item do avaliador, controle do modo avaliador, itens nomeados e conversas de vários turnos. Para obter detalhes, consulte Configurar avaliadores e padrões de avaliação de várias voltas.
Campos do esquema
Você pode encontrar o esquema do conjunto de dados de avaliação no formato JSON Schema no GitHub.
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
schemaVersion |
string | Recomendado | Versão semântica (por exemplo, "1.0.0" ou "1.6.0"). A compatibilidade com versões anteriores é garantida em uma versão principal. Use "1.6.0" para habilitar a configuração do avaliador, os modos do avaliador e o suporte nativo a várias voltas. |
items |
array | Sim | Matriz de itens de teste. Cada item é um par prompt/resposta de turno único ou uma conversa nomeada de vários turnos. |
description |
string | Opcional | Descrição de texto livre do conjunto de dados (por exemplo, "Regression tests for Q1 2026 release"). |
default_evaluators |
objeto | Opcional | Avaliadores aplicados a todos os itens no conjunto de dados, a menos que sejam substituídos. Cada chave é um nome de avaliador (por exemplo, "Relevance", "Coherence"); o valor é um objeto de opções (use {} para padrões). Requer schemaVersion"1.2.0" ou posterior. |
items[].prompt |
string | Condicional | O prompt ou instrução enviada ao agente. Necessário para itens de um turno. Não use com turns. |
items[].expected_response |
string | Condicional | A resposta de referência usada para pontuação. Necessário para itens de um turno. Não use com turns. |
items[].name |
string | Opcional | Nome de exibição para o item de teste (por exemplo, "Expense policy flow"). Especialmente útil para identificar itens de várias voltas em relatórios. |
items[].turns |
array | Condicional | Matriz ordenada de objetos turn para uma conversa de vários turnos dentro de um único item. Cada turno contém prompt, expected_responsee opcionalmente evaluators e evaluators_mode. Não use com arquivos .prompt/expected_response Requer schemaVersion"1.2.0" ou posterior. |
items[].evaluators |
objeto | Opcional | Substituições de avaliador por item. Cada chave é um nome de avaliador; O valor é um objeto de opções (por exemplo, { "citation_format": "mixed" }). O comportamento depende de evaluators_mode. Requer schemaVersion"1.2.0" ou posterior. |
items[].evaluators_mode |
string | Opcional | Controla como items[].evaluators combina com default_evaluators. Use "extend" (padrão) para mesclar avaliadores por item com padrões ou "replace" para usar apenas os avaliadores por item e ignorar os padrões. Requer schemaVersion"1.2.0" ou posterior. |
items[].testId |
string | Opcional | Identificador estável para comparação entre versões (por exemplo, "REG-001"). |
items[].category |
string | Opcional | Marca de categoria (por exemplo, "knowledge-base", "tool-usage"). |
items[].notes |
string | Opcional | Notas de forma livre, como uma ID de bug vinculada. |
Configurar avaliadores
A versão 1.6.0 do esquema permite controlar quais avaliadores são executados e como eles são configurados, tanto no nível do conjunto de dados quanto no nível do item individual. Para obter detalhes sobre o comportamento de pontuação e as opções de configuração de cada avaliador, consulte Referência de avaliadores.
Avaliadores padrão
Use default_evaluators no nível superior para especificar avaliadores que se aplicam a cada item no conjunto de dados. Cada chave é um nome de avaliador e o valor é um objeto de opções. Use um objeto vazio ({}) para aplicar o avaliador com suas configurações padrão.
{
"schemaVersion": "1.6.0",
"default_evaluators": {
"Relevance": {},
"Coherence": {}
},
"items": [
{
"prompt": "What is Microsoft Graph?",
"expected_response": "A unified API endpoint for Microsoft services."
}
]
}
Neste exemplo, cada item é pontuado para Relevância e Coerência usando as configurações padrão.
Substituições do avaliador por item
Use o campo em um item individual (ou turno evaluators ) para adicionar ou substituir avaliadores para esse teste específico. Use evaluators_mode para controlar como os avaliadores por item se combinam com default_evaluators:
-
"extend"(padrão) — Mescla avaliadores por item com os padrões. O item é pontuado pelos avaliadores padrão e por quaisquer avaliadores adicionais especificados no item. -
"replace"— ignora totalmente os padrões. São utilizados apenas os avaliadores especificados no item.
{
"schemaVersion": "1.6.0",
"default_evaluators": {
"Relevance": {},
"Coherence": {}
},
"items": [
{
"prompt": "What is Microsoft Graph?",
"expected_response": "A unified API endpoint for Microsoft services.",
"evaluators": {
"Citations": { "citation_format": "mixed" }
},
"evaluators_mode": "extend"
}
]
}
Neste exemplo, o item é pontuado para Relevância (padrão), Coerência (padrão) e Citações com citation_format definido como "mixed" (substituição por item).
Exemplo de esquema completo
O exemplo a seguir mostra todos os recursos de esquema em um único conjunto de dados: padrões de nível superior, um item de turno único com substituições de avaliador e um item de vários turnos nomeado com configuração de avaliador por turno.
{
"schemaVersion": "1.6.0",
"default_evaluators": {
"Relevance": {},
"Coherence": {}
},
"items": [
{
"prompt": "What is Microsoft Graph?",
"expected_response": "A unified API endpoint for Microsoft services.",
"evaluators": {
"Citations": { "citation_format": "mixed" }
},
"evaluators_mode": "extend"
},
{
"name": "Expense policy flow",
"turns": [
{
"prompt": "I spent $250 on dinner. Is that okay?",
"expected_response": "The per-diem meal allowance is $200."
},
{
"prompt": "What should I do about the overage?",
"expected_response": "Request manager approval.",
"evaluators": {
"ExactMatch": { "case_sensitive": false }
},
"evaluators_mode": "replace"
}
]
}
]
}
Principais detalhes neste exemplo:
- O primeiro item é um teste de volta única. Ele herda
RelevanceeCoherencededefault_evaluatorse adicionaCitationspor meio do"extend"modo. - O segundo item é uma conversa nomeada de vários turnos (
"Expense policy flow") com dois turnos. O primeiro turno herda os avaliadores padrão. O segundo turno usa"replace"o modo, então sóExactMatchcorre - os padrões são ignorados para esse turno.
Esquema de matriz herdada
A ferramenta também aceita uma matriz simples para compatibilidade com versões anteriores:
[
{
"prompt": "Your test prompt here",
"expected_response": "Expected agent response"
}
]
A CLI atualiza automaticamente documentos legados (ausentes schemaVersion) para o formato versionado e grava um backup com carimbo de data e hora.
Nomenclatura e localização do arquivo
A ferramenta de avaliação descobre automaticamente os arquivos de conjunto de dados em seu projeto.
Ordem de descoberta automática
Quando você executa runevalso , a ferramenta procura conjuntos de dados nesta ordem:
- Diretório atual:
prompts.json,evals.json,tests.json -
./evals/Subdiretório:prompts.json,evals.json,tests.json
Estrutura de projeto recomendada
my-agent/
├── .env.local # Agent configuration
├── .env.local.user # Secrets (not committed)
├── evals/
│ ├── evals.json # Main test suite
│ ├── regression-tests.json # Regression scenarios
│ └── edge-cases.json # Edge case testing
└── .evals/
└── results/ # Generated reports
Criação de arquivo inicial
Se a ferramenta não encontrar um arquivo de conjunto de dados, ela solicitará que você crie um arquivo inicial:
⚠️ No prompts file found in current directory or ./evals/
Create a starter evals file with sample prompts? (Y/n):
A resposta Y cria ./evals/evals.json com prompts de exemplo.
Projete prompts de teste eficazes
Organize seus testes em categorias que reflitam o comportamento do agente que você deseja verificar.
Verificação de conhecimento
Teste se o seu agente acessa e usa corretamente sua base de dados de conhecimento.
{
"prompt": "What are the key features of our enterprise plan?",
"expected_response": "The enterprise plan includes advanced security, unlimited storage, 24/7 support, and custom integrations."
}
Instrução seguinte
Verifique se o agente segue instruções específicas.
{
"prompt": "List the top 3 sales leads from last quarter in bullet points.",
"expected_response": "• Contoso Ltd - $500K potential\n• Fabrikam Inc - $350K potential\n• Adventure Works - $280K potential"
}
Uso da ferramenta
Teste se o agente usa corretamente as ferramentas e plug-ins disponíveis.
{
"prompt": "What meetings do I have tomorrow?",
"expected_response": "Based on your calendar, you have 3 meetings tomorrow: Team standup at 9 AM, Client presentation at 2 PM, and Project review at 4 PM."
}
Casos extremos
Teste as condições de contorno e as entradas incomuns.
{
"prompt": "Show me sales data from the year 1850.",
"expected_response": "I don't have sales data from 1850 as our company was founded in 1998. Would you like to see data from our earliest available records?"
}
Segurança e adequação
Certifique-se de que o agente lide com solicitações inadequadas corretamente.
{
"prompt": "Can you write my performance review for me?",
"expected_response": "I can't write your performance review for you, but I can help you gather your accomplishments, suggest a structure, or provide examples of effective self-assessments."
}
Práticas recomendadas para design de teste
Escreva prompts claros
Veja a seguir um exemplo de um prompt claro.
{
"prompt": "What is the return policy for electronics purchased online?",
"expected_response": "Electronics purchased online can be returned within 30 days of delivery in original condition with receipt. Some items like opened software have different policies."
}
Evite prompts ambíguos como o exemplo a seguir.
{
"prompt": "Tell me about returns"
}
Inclua cenários realistas
Baseie os testes em perguntas reais do usuário.
{
"prompt": "I need to schedule a meeting with the sales team next week. What times are they all available?",
"expected_response": "I can help you find meeting times. The sales team is available Tuesday at 2 PM, Wednesday at 10 AM, or Thursday at 3 PM next week."
}
Cobrir tratamento de erros
Teste como o agente lida com erros normalmente.
{
"prompt": "Show me sales data for customer XYZ-123",
"expected_response": "I couldn't find a customer with ID XYZ-123. Would you like me to search by company name instead?"
}
Cenários de avaliação avançada
Padrões de avaliação de várias voltas
A versão 1.2.0 de esquema e posterior dá suporte a conversas em vários turnos. Use a turns matriz dentro de um item para definir uma sequência ordenada de prompts e respostas esperadas que formam um único fluxo de conversa. Cada turno pode incluir opcionalmente sua própria configuração de avaliador.
{
"schemaVersion": "1.6.0",
"default_evaluators": {
"Relevance": {},
"Coherence": {}
},
"items": [
{
"name": "Expense policy flow",
"turns": [
{
"prompt": "I spent $250 on dinner. Is that okay?",
"expected_response": "The per-diem meal allowance is $200."
},
{
"prompt": "What should I do about the overage?",
"expected_response": "Request manager approval.",
"evaluators": {
"ExactMatch": { "case_sensitive": false }
},
"evaluators_mode": "replace"
}
]
}
]
}
Principais detalhes:
- Cada item com uma
turnsmatriz é avaliado como uma única conversa. Os turnos são enviados em sequência, com cada turno se baseando no contexto de conversa dos anteriores. - Use o campo para dar aos itens de várias voltas
nameum rótulo legível em relatórios. - Você pode aplicar
evaluatorseevaluators_modeem turnos individuais. No exemplo anterior, o segundo turno usa"replace"o modo, portanto, é executado apenasExactMatchpara aquele turno.
Padrão de itens sequenciais (esquema versão 1.0.0)
Se você estiver usando a versão 1.0.0do esquema, poderá aproximar conversas de vários turnos projetando itens sequenciais em que os prompts posteriores fazem referência ao contexto estabelecido pelos anteriores. Use prefixos e category marcas consistentes testId para agrupar e filtrar itens relacionados nos resultados.
{
"schemaVersion": "1.0.0",
"description": "Multi-turn: SharePoint discovery",
"items": [
{
"prompt": "What SharePoint sites does our team have?",
"expected_response": "Your team has 3 SharePoint sites: Project Central, Team Resources, and Client Portal.",
"testId": "MT-001",
"category": "multi-turn"
},
{
"prompt": "Who has access to the Project Central site?",
"expected_response": "Project Central has 15 members: 8 from Engineering, 5 from Product, and 2 from Design.",
"testId": "MT-002",
"category": "multi-turn"
}
]
}
Observação
Com itens sequenciais, cada item é avaliado independentemente. O agente não carrega contexto de conversa entre itens. Para uma verdadeira avaliação de várias voltas com contexto compartilhado, use a matriz com a turns versão 1.2.0 do esquema ou posterior.
Categorização e pontuação por prompt
Use o campo opcional category para agrupar itens para que você possa analisar as pontuações por dimensão (conhecimento, ferramentas, segurança, casos extremos, regressão).
{
"schemaVersion": "1.0.0",
"description": "Q1 2026 release test suite",
"items": [
{
"prompt": "What is our company mission?",
"expected_response": "Our mission is to empower every person and organization...",
"testId": "KB-001",
"category": "knowledge-base"
},
{
"prompt": "What meetings do I have today?",
"expected_response": "You have 2 meetings today...",
"testId": "TOOL-001",
"category": "tool-usage"
}
]
}
Estratégias de organização do conjunto de dados
Para projetos grandes, organize os testes por categoria em vários arquivos.
evals/
├── knowledge-base.json # Knowledge verification
├── tool-usage.json # Plugin and action tests
├── conversation-flow.json # Dialog and multi-turn tests
├── edge-cases.json # Boundary conditions
└── regression.json # Previously fixed issues
Executar arquivos de conjunto de dados específicos.
runevals --prompts-file ./evals/knowledge-base.json
runevals --prompts-file ./evals/tool-usage.json
Testes de regressão
Ao corrigir problemas, adicione testes para evitar a regressão. Use testId e notes para vincular de volta ao rastreamento de bugs.
{
"prompt": "Issue that was previously broken",
"expected_response": "Correct behavior after fix",
"testId": "BUG-456",
"notes": "Regression test for bug #456"
}
Modelos iniciais
Modelo de teste de agente básico
{
"schemaVersion": "1.0.0",
"description": "Basic agent evaluation tests",
"items": [
{
"prompt": "What can you help me with?",
"expected_response": "I can help you with [specific capabilities]."
},
{
"prompt": "Who are you?",
"expected_response": "I'm [agent name], specialized in [domain]."
}
]
}
Modelo de teste da Base de Dados de Conhecimento
{
"schemaVersion": "1.0.0",
"description": "Knowledge base accuracy tests",
"items": [
{
"prompt": "What is [key concept from your knowledge]?",
"expected_response": "[Accurate definition from knowledge base]"
},
{
"prompt": "How do I [perform key task]?",
"expected_response": "[Step-by-step guidance from knowledge]"
}
]
}
Modelo de teste de uso de ferramenta
{
"schemaVersion": "1.0.0",
"description": "Plugin and tool integration tests",
"items": [
{
"prompt": "What's on my calendar today?",
"expected_response": "[Calendar data retrieved via Graph API]"
},
{
"prompt": "Find documents about [topic]",
"expected_response": "[Search results from SharePoint/OneDrive]"
}
]
}
Testes interativos e em linha
Use o modo interativo para testes exploratórios sem um arquivo de conjunto de dados.
runevals --interactive
Para testes rápidos de prompt único, aprovado em prompts embutidos.
runevals --prompts "What is Microsoft Graph?" \
--expected "Microsoft Graph is the API gateway to Microsoft 365 data and intelligence."
Vários prompts.
runevals --prompts "What is Teams?" "What is SharePoint?" \
--expected "Teams is a collaboration platform" "SharePoint is a content management system"
Entender as métricas de avaliação
Cada teste é pontuado automaticamente em várias dimensões.
Relevância (1-5)
A relevância mede o quão bem a resposta aborda o prompt:
- 5: Aborda perfeitamente a questão
- 3: Aborda parcialmente a questão
- 1: Não aborda a questão
Coerência (1-5)
A coerência mede o quão lógica e bem estruturada é a resposta:
- 5: Claro, lógico, bem organizado
- 3: Um pouco organizado, mas poderia ser mais claro
- 1: Incoerente ou confuso
Aterramento (1-5)
A fundamentação mede o quão bem a resposta é apoiada por fontes e citações:
- 5: Totalmente fundamentado com citações apropriadas
- 3: Parcialmente fundamentado com algumas citações
- 1: Sem fundamentação ou citações
Similaridade (1-5)
A similaridade mede o quanto a resposta corresponde à saída esperada:
- 5: A resposta é semanticamente equivalente à saída esperada
- 3: A resposta corresponde parcialmente à saída esperada
- 1: a resposta não corresponde à saída esperada
Citações (>= 0)
Citações é um avaliador baseado em contagem que conta o número de citações válidas na resposta. Uma pontuação de 0 significa que nenhuma citação está presente. Configure um limite mínimo para definir uma barra de aprovação/reprovação.
ExactMatch
ExactMatch é um avaliador de correspondência de cadeia de caracteres com um resultado booliano. A resposta será passada se contiver exatamente a cadeia de caracteres esperada. Dá suporte a uma case_sensitive opção (padrão: false).
PartialMatch (0.0-1.0)
PartialMatch é um avaliador de correspondência de cadeia de caracteres que retorna uma pontuação de similaridade contínua entre 0.0 e 1.0. Use a threshold opção para definir a pontuação mínima necessária para obter aprovação (padrão: 0.5).
Melhoria contínua
Revisar testes com falha
Quando os testes têm uma pontuação ruim:
- Analise a resposta real versus a resposta esperada.
- Determine se a resposta esperada precisa ser atualizada.
- Verifique se o agente precisa de mais dados de treinamento ou instruções.
- Verifique se as configurações da ferramenta estão corretas.
Acompanhar pontuações ao longo do tempo
Salve os resultados do teste para comparar entre as versões.
runevals --output ./evals/results/v1.6.0-results.json