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.
FoundryEvalsconecta as APIs de avaliação do Agent Framework ao serviço de avaliação gerenciada do Microsoft Foundry. Ele fornece avaliadores de qualidade, segurança, uso de ferramentas, comportamento do agente e de rubricas, com relatórios armazenados disponíveis no portal do Foundry.
Para EvalItem, verificações locais, avaliadores personalizados e estratégias de divisão de conversa, consulte Avaliação de agente.
Prerequisites
- Um projeto do Microsoft Foundry e uma implantação de modelo.
- Um endpoint do Foundry com escopo de projeto.
- Permissão para enviar avaliações e ler relatórios.
Avaliar respostas ou consultas de teste
Configure e avalie FoundryEvalsas respostas já geradas ou deixe EvaluateAsync executar o agente para cada consulta.
string endpoint = Environment.GetEnvironmentVariable("FOUNDRY_PROJECT_ENDPOINT") ?? throw new InvalidOperationException("FOUNDRY_PROJECT_ENDPOINT is not set.");
string deploymentName = Environment.GetEnvironmentVariable("FOUNDRY_MODEL") ?? "gpt-4o-mini";
// WARNING: DefaultAzureCredential is convenient for development but requires careful consideration in production.
// In production, consider using a specific credential (e.g., ManagedIdentityCredential) to avoid
// latency issues, unintended credential probing, and potential security risks from fallback mechanisms.
AIProjectClient projectClient = new(new Uri(endpoint), new DefaultAzureCredential());
AIAgent agent = projectClient.AsAIAgent(
model: deploymentName,
instructions: "You are a helpful assistant that provides clear, accurate answers.",
name: "QualityTestAgent");
// Configure Foundry evaluators.
FoundryEvals foundryEvals = new(projectClient, deploymentName, FoundryEvals.Relevance, FoundryEvals.Coherence);
// --- Pattern 1: Run agent, then evaluate pre-existing responses ---
string[] queries = ["What is photosynthesis?", "Explain gravity in simple terms."];
AgentResponse[] responses = new AgentResponse[queries.Length];
for (int i = 0; i < queries.Length; i++)
{
responses[i] = await agent.RunAsync(queries[i]);
}
AgentEvaluationResults results1 = await agent.EvaluateAsync(responses, queries, foundryEvals);
Console.WriteLine("=== Pattern 1: Evaluate pre-existing responses ===");
PrintResults(results1, queries);
// --- Pattern 2: Run + evaluate in one call ---
string[] queries2 = ["What causes rain?", "Why is the sky blue?"];
AgentEvaluationResults results2 = await agent.EvaluateAsync(queries2, foundryEvals);
Console.WriteLine("=== Pattern 2: Run + evaluate in one call ===");
PrintResults(results2, queries2);
Os exemplos .NET também demonstram avaliadores de rubricas do Foundry e portões de qualidade por dimensão.
Avaliar um agente
Passe as respostas ou consultas de teste existentes para evaluate_agent(). Os resultados incluem as contagens de aprovação e reprovação e a URL do relatório do Foundry.
async def main() -> None:
# 1. Set up the FoundryChatClient
chat_client = FoundryChatClient(
project_endpoint=os.environ["FOUNDRY_PROJECT_ENDPOINT"],
model=os.environ.get("FOUNDRY_MODEL", "gpt-4o"),
credential=AzureCliCredential(),
)
# 2. Create an agent with tools
agent = Agent(
client=chat_client,
name="travel-assistant",
instructions=(
"You are a helpful travel assistant. Use your tools to answer questions about weather and flights."
),
tools=[get_weather, get_flight_price],
)
# 3. Create the evaluator — provider config goes here, once
evals = FoundryEvals(client=chat_client)
# =========================================================================
# Pattern 1: evaluate_agent(responses=...) — evaluate a response you already have
# =========================================================================
print("=" * 60)
print("Pattern 1: evaluate_agent(responses=...) — evaluate existing response")
print("=" * 60)
query = "How much does a flight from Seattle to Paris cost?"
response = await agent.run(query)
print(f"Agent said: {response.text[:100]}...")
# Pass agent= so tool definitions are extracted, queries= for the eval item context
results = await evaluate_agent(
agent=agent,
responses=response,
queries=[query],
evaluators=FoundryEvals(
client=chat_client,
evaluators=[FoundryEvals.RELEVANCE, FoundryEvals.TOOL_CALL_ACCURACY],
),
)
for r in results:
print(f"Status: {r.status}")
print(f"Results: {r.passed}/{r.total} passed")
print(f"Portal: {r.report_url}")
if r.all_passed:
print("[PASS] All passed")
else:
print(f"[FAIL] {r.failed} failed")
Exemplos adicionais abrangem a avaliação de traces, a avaliação de chamadas de ferramentas, a avaliação de interações de múltiplos turnos, a avaliação de fluxos de trabalho, provedores mistos e rubricas personalizadas do Foundry.
Note
A integração de avaliação do Microsoft Foundry não está disponível atualmente para o Agent Framework Go. Consulte o repositório Agent Framework Go para obter o status mais recente.
Restrições de qualidade
Fixe conjuntos de dados, implantações de modelos, versões de avaliadores e versões de rubricas quando os resultados precisarem ser comparáveis entre execuções. Use auxiliares de asserção de resultados para falhar a CI quando as métricas monitoradas apresentarem regressão.