evaluación de Microsoft Foundry

FoundryEvals conecta las API de evaluación de Agent Framework con el servicio de evaluación administrado de Microsoft Foundry. Proporciona evaluadores de calidad, seguridad, uso de herramientas, comportamiento del agente y rubrices, con informes almacenados disponibles en el portal de Foundry.

Para EvalItem, comprobaciones locales, evaluadores personalizados y estrategias de segmentación de conversaciones, consulta Evaluación del agente.

Prerequisites

  • Un proyecto y una implementación de modelos Microsoft Foundry.
  • Un punto de conexión de Foundry con ámbito de proyecto.
  • Permiso para enviar evaluaciones y leer informes.

Evaluación de respuestas o consultas de prueba

Configure FoundryEvalsy, a continuación, evalúe las respuestas ya generadas o deje EvaluateAsync ejecutar el 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);

Los ejemplos de .NET también muestran evaluadores de rúbrica de Foundry y controles de calidad por dimensión.

Evaluación de un agente

Pase las respuestas existentes o las consultas de prueba a evaluate_agent(). Los resultados incluyen recuentos de pasos y errores y la dirección URL del informe 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")

Los ejemplos adicionales abarcan la evaluación de trazas, la evaluación de llamadas a herramientas, la evaluación de varios turnos, la evaluación de flujos de trabajo, los proveedores mixtos y las rúbricas personalizadas de Foundry.

Note

La integración de evaluación de Microsoft Foundry no está disponible actualmente para Agent Framework Go. Consulte el repositorio de Agent Framework Go para obtener el estado más reciente.

Puertas de calidad

Fijar conjuntos de datos, despliegues de modelos, versiones del evaluador y versiones de la rúbrica cuando los resultados deban ser comparables entre ejecuciones. Utilice funciones auxiliares de aserción de resultados para hacer fallar la CI cuando las métricas requeridas sufran una regresión.

Pasos siguientes