Microsoft Öntöde kiértékelése

FoundryEvalsaz Agent Framework kiértékelési API-jait az Foundry felügyelt kiértékelési szolgáltatásának Microsoft csatlakoztatja. Minőséget, biztonságot, eszközhasználatot, ügynök-viselkedést és rubrica-kiértékelőket biztosít az Foundry portálon elérhető tárolt jelentésekkel.

A helyi ellenőrzések, az egyéni kiértékelők és a beszélgetések felosztási stratégiáiért EvalItemtekintse meg az ügynökértékelést.

Prerequisites

  • Egy Microsoft Foundry-projekt és modell üzembe helyezése.
  • Projekt hatókörű Foundry-végpont.
  • A kiértékelések beküldésére és a jelentések olvasására vonatkozó engedély.

Válaszok kiértékelése vagy lekérdezések tesztelése

Konfigurálja FoundryEvals, majd értékelje ki a már létrehozott válaszokat, vagy futtassa EvaluateAsync az ügynököt az egyes lekérdezésekhez.

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);

A .NET minták az Öntödei rubrica kiértékelőit és dimenziónkénti minőségi kapukat is szemléltetik.

Ügynök kiértékelése

Meglévő válaszok vagy teszt lekérdezések átadása a következőnek evaluate_agent(): . Az eredmények közé tartozik a pass/fail counts és az Foundry jelentés URL-címe.

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")

A további minták a nyomkövetés kiértékelését, az eszközhívások kiértékelését, a többfordulós kiértékelést, a munkafolyamat kiértékelését, a vegyes szolgáltatókat és az egyéni Foundry-rubricsokat fedik le.

Megjegyzés:

Microsoft Foundry-kiértékelési integráció jelenleg nem érhető el az Agent Framework Go-hoz. A legújabb állapotot az Agent Framework Go-adattárában tekinthet meg.

Minőségi kapuk

Rögzítheti az adatkészleteket, a modelltelepítéseket, a kiértékelőverziókat és a rubric verziókat, ha az eredményeknek összehasonlíthatónak kell lenniük a futtatások között. Ha szükséges metrikák regressziója szükséges, használjon eredményérvényesítési segédeket a CI meghiúsulásához.

Következő lépések