Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Importante
O Agent Optimizer está atualmente em pré-visualização. Esta pré-visualização é fornecida sem um acordo de nível de serviço, e não a recomendamos para trabalhos em produção. Certas funcionalidades podem não ser suportadas ou podem ter capacidades limitadas. Para mais informações, consulte Termos Suplementares de Utilização para Microsoft Azure Previews.
O otimizador de agentes avalia o seu agente com base num conjunto de dados – uma coleção de tarefas – avaliadas pelos avaliadores. Pode gerar ambos automaticamente a partir da CLI ou criar manualmente um conjunto de dados para controlo total.
Ambas as partes são essenciais para uma boa otimização: o conjunto de dados define o que testar, e os avaliadores definem como avaliar cada resposta. Avaliadores fracos produzem pontuações ruidosas que levam a má otimização, por isso investe tanto em avaliadores fortes como em tarefas representativas.
Criar estes recursos é o segundo passo no fluxo de otimização, depois de preparar o seu agente para otimização. O otimizador usa-os para pontuar a sua linha de base e classificar candidatos.
Pré-requisitos
- Um projeto Foundry com um agente alojado implementado
- A
azure.ai.agentsextensão CLI instalada (ver Quickstart: Otimizar um agente alojado)
Gerar um conjunto de dados e avaliadores (recomendado)
A forma mais rápida de criar ativos de avaliação é com azd ai agent eval generate. O comando deteta automaticamente o seu agente e gera tudo o que o otimizador precisa:
azd ai agent eval generate
Por defeito, gera:
- Um conjunto de dados inicial de tarefas adaptadas ao domínio do seu agente.
-
Avaliadores que avaliam as respostas - um avaliador incorporado (como
builtin.task_adherence) mais um avaliador de rubrica personalizado adaptado ao seu agente. - Um
eval.yamlexecutável que os interliga.
Para o assistente interativo, as opções não interativas e os detalhes sobre os recursos gerados, consulte Inicializar recursos de avaliação.
Após a geração, azd ai agent optimize deteta automaticamente eval.yaml:
azd ai agent optimize
Para personalizar os ativos gerados, consulte Personalizar avaliadores e Criar um conjunto de dados personalizado. Para alterar as opções de execução, edite eval.yaml; veja Configurar a execução de otimização.
Personalizar avaliadores (avançado)
Os avaliadores avaliam a resposta de cada agente. O otimizador suporta dois tipos:
-
Avaliadores incorporados, como
builtin.task_adherence, que pontuam cada critério ao nível da tarefa como aprovado ou reprovado. -
Avaliadores de rubricas personalizados, que avaliam respostas em várias dimensões de qualidade adaptadas ao seu agente.
azd ai agent eval generatecria um automaticamente como ficheiro editávelrubric_dimensions.json.
Para a maioria dos agentes, o avaliador de rubricas gerado dá as pontuações mais significativas porque é adaptado ao seu domínio. Edita o gerado rubric_dimensions.json para refinar as dimensões e depois executa azd ai agent eval update para registar as alterações como uma nova versão. Para detalhes sobre geração, edição e versionamento de avaliadores, consulte Inicializar ativos de avaliação.
Para ligar avaliadores à sua configuração de execução, veja Configurar a execução de otimização.
Criar um conjunto de dados personalizado (avançado)
Crie um conjunto de dados personalizado quando precisar de controlo preciso sobre cenários de teste ou quando tiver dados de produção para usar diretamente. A abordagem recomendada é iterar a partir do conjunto de dados inicial que azd ai agent eval generate produz—refiná-lo até obter um conjunto de dados local, ou apontar para outro conjunto de dados já registado no seu projeto Foundry.
Escolha uma fonte de conjunto de dados
Um conjunto de dados pode provir de uma de duas fontes:
-
Conjunto de dados Foundry — um conjunto de dados já registado no seu projeto Foundry. Referencia-o em
eval.yamlpornameeversion. -
Conjunto de dados local — um ficheiro JSONL que cria e mantém no seu projeto. Faça referência a isso em
eval.yamlatravés delocal_uri.
Ambas as fontes utilizam o mesmo esquema de tarefas descrito na secção seguinte. Para a cablagem de eval.yaml, consulte Configurar a execução da otimização.
Esquema de conjunto de dados
Um conjunto de dados utiliza o formato JSONL (JSON Lines). Cada linha é um objeto JSON que representa uma única tarefa de avaliação — um cenário individual. Uma tarefa tem um prompt (query) e, opcionalmente, criteria ao nível da tarefa.
{"name": "task_1", "query": "Your prompt here"}
{"name": "task_2", "query": "Another prompt", "ground_truth": "Expected answer"}
| Campo | Obrigatório | Description |
|---|---|---|
name |
Sim | Identificador único de tarefa (por exemplo, "greeting", "math_test"). |
query |
Sim | A mensagem enviada ao agente. |
ground_truth |
No | Resposta esperada, usada por avaliadores que apoiam uma referência. |
criteria |
No | Verificações opcionais ao nível da tarefa. Ver Adicionar critérios ao nível da tarefa. |
Quando usar um conjunto de dados local, valide a sintaxe JSONL antes de executar a otimização:
python -c "import json; [json.loads(l) for l in open('eval.jsonl')]"
Adicionar critérios ao nível da tarefa
Os critérios são opcionais. Os avaliadores que configuras eval.yaml aplicam-se a todas as tarefas do conjunto de dados. Adicione criteria em cada tarefa apenas quando uma tarefa específica necessitar de verificações além das efetuadas por esses avaliadores partilhados. Quando presente, as tarefas criteria são pontuadas e agregadas juntamente com os avaliadores partilhados para produzir a pontuação global da tarefa.
| Campo | Obrigatório | Description |
|---|---|---|
criteria[].name |
Sim | Nome abreviado para o critério (por exemplo, "is_polite"). |
criteria[].instruction |
Sim | O que o avaliador verifica. Seja específico e testável. |
O seguinte conjunto de dados de apoio ao cliente mostra tarefas com critérios ao nível da tarefa:
{"name": "refund_policy", "query": "What is your refund policy?", "criteria": [{"name": "mentions_30_days", "instruction": "Response must mention the 30-day refund window"}, {"name": "polite_tone", "instruction": "Response must be professional and empathetic"}]}
{"name": "order_status", "query": "Where is my order #12345?", "criteria": [{"name": "asks_for_details", "instruction": "Agent should ask for email or order details to look up the order"}, {"name": "no_hallucination", "instruction": "Agent must NOT make up a fake order status"}]}
{"name": "out_of_scope", "query": "Can you help me fix my car?", "criteria": [{"name": "polite_decline", "instruction": "Agent should politely explain this is outside its scope"}, {"name": "redirect", "instruction": "Agent should suggest contacting an appropriate service"}]}
Dicas para escrever bons conjuntos de dados
Incluir casos excepcionais
Teste para além do cenário ideal. Inclui:
- Pedidos fora do âmbito — Entradas que o seu agente deve recusar ou redirecionar
- Consultas ambíguas — Tarefas onde o agente deve pedir esclarecimentos
- Inputs adversariais — Tentativas de levar o agente a comportar-se mal
- Tarefas em vários passos — Pedidos complexos que requerem raciocínio estruturado
Diretrizes de tamanho
| Tamanho do conjunto de dados | Compromisso |
|---|---|
| 3–5 tarefas | Iteração rápida, sinal limitado |
| 5–10 tarefas | Bom equilíbrio entre velocidade e cobertura |
| 10–20 tarefas | Avaliação abrangente, corridas mais longas |
| 20+ tarefas | Minucioso mas lento — considera para validação final |
Conjuntos de dados maiores oferecem uma cobertura mais ampla, mas demoram mais tempo a ser avaliados.
Forneça dados de referência quando útil
O ground_truth campo fornece aos avaliadores uma resposta de referência para comparar. Não é obrigatório – os avaliadores também podem avaliar as respostas apenas com base nas suas instruções e em quaisquer critérios ao nível da tarefa.
{"name": "geography_fact", "query": "What is the largest city in France by population?", "ground_truth": "Paris", "criteria": [{"name": "correct_answer", "instruction": "Response must state that Paris is the largest city in France by population"}]}
Escrever pedidos como utilizadores reais
Use mensagens reais dos seus utilizadores, se possível. Os prompts reais captam o vocabulário e o contexto que o seu agente enfrenta na produção, o que também o ajuda a escrever critérios realistas ao nível da tarefa.
Seja específico nos critérios
Critérios vagos levam a pontuações inconsistentes. Torne cada critério específico e testável.
Fraco:
{"name": "good_answer", "instruction": "The response should be good"}
Bom:
{"name": "mentions_30_days", "instruction": "Response must explicitly mention the 30-day refund window"}
Troubleshooting
| Problema | Motivo | Corrigir |
|---|---|---|
dataset not found |
Caminho incorreto em eval.yaml |
Para dataset.local_uri, use um caminho relativo à localização do ficheiro de configuração. Para um conjunto de dados Foundry, verifique dataset.name e dataset.version. |
invalid JSON on line N |
JSONL malformado | Valida que cada linha é JSON válida. Verifique se há vírgulas finais. |
| As pontuações são inconsistentes entre as corridas | Critérios vagos | Crie critérios específicos e testáveis. |