Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
FoundryEvalsподключает API оценки Agent Framework к управляемой службе оценки Foundry Microsoft. Он обеспечивает качество, безопасность, использование инструментов, поведение агента и вычислители рубрик, с сохраненными отчетами, доступными на портале Foundry.
Сведения о EvalItemлокальных проверках, пользовательских вычислителях и стратегиях разделения бесед см. в разделе "Оценка агента".
Необходимые условия
- Развертывание проекта и модели Microsoft Foundry.
- Конечная точка Foundry с областью действия проекта.
- Разрешение на отправку вычислений и чтение отчетов.
Оценка ответов или тестовых запросов
Настройте FoundryEvals, а затем оцените уже созданные ответы или позвольте EvaluateAsync запустить агент для каждого запроса.
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);
В .NET примерах также демонстрируются вычислители параметров Foundry и шлюзы качества для каждого измерения.
Оценка агента
Передайте существующие ответы или тестовые запросы evaluate_agent(). Результаты включают количество проходов и сбоя и URL-адрес отчета 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")
Дополнительные примеры охватывают оценку трассировки, оценку с помощью инструментов, многоэтапную оценку, оценку рабочих процессов, смешанные поставщики и настраиваемые рубрики Foundry.
Замечание
Microsoft интеграция оценки Foundry в настоящее время недоступна для Agent Framework Go. Сведения о последнем состоянии см. в репозитории Agent Framework Go .
Качественные ворота
Закрепление наборов данных, развертываний моделей, версий оценщика и рубиричных версий, когда результаты должны быть сопоставимыми в разных запусках. Используйте вспомогательные средства утверждения результатов для сбоя CI при необходимости регрессии метрик.