Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
FoundryEvalsansluter API:erna för Utvärdering av Agent Framework till Microsoft Foundrys hanterade utvärderingstjänst. Det ger kvalitet, säkerhet, verktygsanvändning, agentbeteende och kriterier utvärderare, med lagrade rapporter tillgängliga i Foundry-portalen.
Lokala kontroller, anpassade utvärderare och strategier för EvalItemkonversationsdelning finns i Agentutvärdering.
Förutsättningar
- Ett Microsoft Foundry-projekt och modelldistribution.
- En slutpunkt med projektomfattning för Foundry.
- Behörighet att skicka utvärderingar och läsa rapporter.
Utvärdera svar eller testfrågor
Konfigurera FoundryEvalsoch utvärdera sedan svar som redan har genererats eller låt EvaluateAsync köra agenten för varje fråga.
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 exemplen visar också foundry rubric evaluators och kvalitetsgrindar per dimension.
Utvärdera en agent
Skicka befintliga svar eller testfrågor till evaluate_agent(). Resultaten inkluderar antal pass/fail och Foundry-rapportens URL.
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")
Ytterligare exempel omfattar spårningsutvärdering, utvärdering av verktygsanrop, utvärdering av flera svar, utvärdering av arbetsflöden, blandade leverantörer och anpassade Foundry-kriterier.
Anmärkning
Microsoft Foundry-utvärderingsintegrering är för närvarande inte tillgängligt för Agent Framework Go. Se Agent Framework Go-lagringsplatsen för den senaste statusen.
Kvalitetsgrindar
Fäst datauppsättningar, modelldistributioner, utvärderingsversioner och kriterier när resultaten måste vara jämförbara mellan körningar. Använd hjälpverktyg för resultatkontroll för att misslyckas med CI när nödvändiga mått regresseras.