Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
FoundryEvalsverbindt de Agent Framework-evaluatie-API's met Microsoft beheerde evaluatieservice van Foundry. Het biedt beoordelaars voor kwaliteit, veiligheid, toolgebruik, agentgedrag en rubrieken, waarbij opgeslagen rapporten beschikbaar zijn in de Foundry-portal.
Zie voor EvalItem, lokale controles, aangepaste evaluatoren en strategieën voor het opsplitsen van gesprekken Agentevaluatie.
Prerequisites
- Een Microsoft Foundry-project en modelimplementatie.
- Een Foundry-eindpunt met projectbereik.
- Machtiging voor het verzenden van evaluaties en het lezen van rapporten.
Antwoorden of testzoekopdrachten evalueren
Configureer FoundryEvalsen evalueer vervolgens antwoorden die al zijn gegenereerd of laat EvaluateAsync de agent voor elke query uitvoeren.
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);
De .NET-voorbeelden laten ook Foundry-rubric-evaluators en kwaliteitspoorten per dimensie zien.
Een agent evalueren
Geef bestaande antwoorden of testquery's door aan evaluate_agent(). De resultaten omvatten het aantal geslaagde/mislukte pogingen en de URL van het Foundry-rapport.
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")
Aanvullende voorbeelden omvatten trace-evaluatie, tool-call-evaluatie, multi-turn-evaluatie, workflow-evaluatie, gemengde aanbieders en aangepaste Foundry-beoordelingsrubrieken.
Opmerking
De integratie van Microsoft Foundry-evaluatie is momenteel niet beschikbaar voor Agent Framework Go. Zie de opslagplaats Agent Framework Go voor de meest recente status.
Kwaliteitspoorten
Zet datasets, modeldeployments, evaluatorversies en rubricversies vast wanneer resultaten tussen runs vergelijkbaar moeten zijn. Gebruik resultaatbevestigingshelpers om CI te laten mislukken wanneer vereiste metrische gegevens regresseren.