Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
FoundryEvals verbindet die Agent Framework-Auswertungs-APIs mit dem verwalteten Auswertungsdienst von Microsoft Foundry. Es bietet Evaluatoren für Qualität, Sicherheit, Toolnutzung, Agentenverhalten und Rubriken, wobei gespeicherte Berichte im Foundry-Portal verfügbar sind.
Unter EvalItem finden Sie Informationen zu lokalen Prüfungen, benutzerdefinierten Auswertern und Strategien zur Aufteilung von Konversationen. Weitere Informationen finden Sie unter Agentenbewertung.
Voraussetzungen
- Eine Microsoft Foundry-Projekt- und Modellbereitstellung.
- Ein projektbezogener Foundry-Endpunkt.
- Berechtigung zum Übermitteln von Auswertungen und Lesen von Berichten.
Auswerten von Antworten oder Testabfragen
Konfigurieren Sie FoundryEvals, bewerten Sie dann bereits generierte Antworten oder lassen Sie EvaluateAsync den Agenten für jede Abfrage ausführen.
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);
Die .NET-Beispiele veranschaulichen auch Foundry-Rubric-Evaluatoren und Qualitätsschranken für jede Dimension.
Agenten auswerten
Übergeben Sie vorhandene Antworten oder Testabfragen an evaluate_agent(). Die Ergebnisse umfassen die Anzahlen erfolgreicher und fehlgeschlagener Prüfungen sowie die URL des Foundry-Berichts.
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")
Weitere Beispiele umfassen Trace-Auswertung, Tool-Call-Auswertung, Multi-Turn-Auswertung, Workflow-Auswertung, gemischte Provider und benutzerdefinierte Foundry-Bewertungsrichtlinien.
Note
Die Microsoft Foundry-Auswertungsintegration ist derzeit für Agent Framework Go nicht verfügbar. Den neuesten Status finden Sie im Agent Framework Go-Repository .
Qualitätsschleusen
Fixieren Sie Datensätze, Modellbereitstellungen, Evaluatorversionen und Rubrikversionen, wenn Ergebnisse über verschiedene Läufe hinweg vergleichbar sein müssen. Verwenden Sie Ergebnis assertionshilfsprogramme, um CI fehlzuschlagen, wenn erforderliche Metriken zurücktreten.