
Microsoft Agent Framework 如何用 Foundry Evals 评估 Agent 行为与工具调用【免费下载链接】agent-frameworkA framework for building, orchestrating and deploying AI agents and multi-agent workflows with support for Python and .NET.项目地址: https://gitcode.com/GitHub_Trending/age/agent-framework如果你已经用 Microsoft Agent Framework 的 Python 包写好了带工具的 Agent想检查它是否按预期执行任务、选对了工具并正确调用参数仓库中的 Foundry Evals 集成示例提供了一条可直接跑通的路径把 Agent 的响应或让它跑一批测试问题提交给 Microsoft Foundry 的内置评估器然后在本地拿到通过/失败统计或打开 Foundry Portal 查看报告。以下内容基于 Foundry Evals 示例 README 和两个示例脚本整理适用环境是仓库python/工作区加一个已部署模型的 Microsoft Foundry 项目。准备条件示例脚本在 文件头注释 中明确列出两项前置条件一个 Microsoft Foundry 项目且项目中已部署模型在示例目录的.env文件中设置FOUNDRY_PROJECT_ENDPOINT和FOUNDRY_MODEL。具体做法在python/samples/05-end-to-end/evaluation/foundry_evals/目录下按同目录的 .env.example 创建.env文件。两个必填项的含义FOUNDRY_PROJECT_ENDPOINT你的 Foundry 项目端点脚本中通过os.environ[FOUNDRY_PROJECT_ENDPOINT]读取缺失会直接报错FOUNDRY_MODEL模型部署名通过os.environ.get(FOUNDRY_MODEL, gpt-4o)读取缺失时回退为gpt-4o所以如果你的模型部署名不是gpt-4o必须显式填写。.env.example中的FOUNDRY_AGENT_NAME、FOUNDRY_AGENT_VERSION、FOUNDRY_RUBRIC_NAME、FOUNDRY_RUBRIC_VERSION只被evaluate_with_rubric_sample.py使用本文主路径不需要配置。示例脚本使用AzureCliCredential()认证即依赖本地 Azure CLI 的登录凭据。依赖安装方面仓库使用 uv 管理 Python 工作区安装 uv 的步骤见 python/DEV_SETUP.md示例命令统一用uv run执行无需手动创建虚拟环境。主路径用 evaluate_agent_sample.py 评估行为与工具调用evaluate_agent_sample.py 是 README 指定的开发内环inner loop示例。它构建了一个名为travel-assistant的Agent绑定两个本地工具get_weather返回固定天气数据和get_flight_price返回固定票价然后用FoundryEvals(clientchat_client)创建评估器依次演示三种模式。在python/目录下执行uv run samples/05-end-to-end/evaluation/foundry_evals/evaluate_agent_sample.py脚本依次运行三个部分Pattern 1评估已有响应—evaluate_agent(agent..., responsesresponse, queries[query], ...)。先await agent.run(query)拿一次真实响应再把agent、responses和queries一起传入。注释里说明了参数用途传agent是为了让框架提取工具定义传queries提供评估条目上下文。此处显式指定evaluators[FoundryEvals.RELEVANCE, FoundryEvals.TOOL_CALL_ACCURACY]。Pattern 2批量跑测试问题— 只传queries[...]列表evaluate_agent()内部会对每个 query 调用agent.run()再评估。传evaluatorsevals默认构造的FoundryEvals时走智能默认默认运行relevance、coherence、task_adherence并且当条目包含工具定义时自动追加tool_call_accuracy。Pattern 3Similarity 对比参考答案— 额外传expected_output[...]与queries一一对应的标准答案评估器用FoundryEvals.SIMILARITY把 Agent 实际输出与参考答案对比。脚本在 Pattern 2 中还演示了conversation_splitConversationSplit.FULL它覆盖各评估器的默认切分策略让整个对话轨迹而不仅是最后一轮相对最初的 query 参与评估。只评估工具调用evaluate_tool_calls_sample.py如果你只关心Agent 是否选对了工具、调用参数对不对用 evaluate_tool_calls_sample.py。它的区别在于不经过evaluate_agent()而是自己构造EvalItemresponse await agent.run(q) item EvalItem( conversation[Message(user, [q]), *response.messages], tools[get_weather, get_flight_price], ) evals FoundryEvals( clientchat_client, evaluators[FoundryEvals.RELEVANCE, FoundryEvals.TOOL_CALL_ACCURACY], ) results await evals.evaluate(items, eval_nameTool Call Accuracy Eval)conversation是用户消息 Agent 响应中的全部消息tools传入工具定义——工具评估器依赖工具 schema 才能判断调用是否准确。执行命令uv run samples/05-end-to-end/evaluation/foundry_evals/evaluate_tool_calls_sample.py如何选择评估器README 列出了 Foundry 内置评估器的四类分组可作为选型参考类别评估器Agent 行为intent_resolution,task_adherence,task_completion,task_navigation_efficiency工具使用tool_call_accuracy,tool_selection,tool_input_accuracy,tool_output_utilization,tool_call_success质量coherence,fluency,relevance,groundedness,response_completeness,similarity安全violence,sexual,self_harm,hate_unfairness代码中通过FoundryEvals类常量如FoundryEvals.RELEVANCE、FoundryEvals.TOOL_CALL_ACCURACY或短名字符串传入。不指定时默认组合是relevancecoherencetask_adherence有工具定义时自动加上tool_call_accuracy。如何判断结果两个示例对结果的输出方式一致围绕EvalResults对象打印四个字段print(fStatus: {r.status}) print(fResults: {r.passed}/{r.total} passed) print(fPortal: {r.report_url})r.status评估运行的状态r.passed/r.total通过数与总数可配合r.all_passed/r.failed做本地判定r.report_urlFoundry Portal 报告链接用于在 Portal 中查看仪表板。示例中r.all_passed为真时打印[PASS] All passed否则打印[FAIL] {r.failed} failed——这就是本地判断是否通过的直接依据。evaluate_agent()返回的results是列表每个评估器一份结果FoundryEvals.evaluate()返回单个EvalResults。架构细节为什么能直接传EvalItem、核心与 Foundry 包各负责什么可以在 python/packages/foundry/README.md 的 Evaluations 一节和 ADR-0023 中对照阅读。限制与注意事项工具评估器需要工具定义ADR-0023 的 Known Limitations 明确工具类评估器依赖 tool definition schema。因此用evaluate_agent(responses...)评估已有响应时要同时提供queries并传入带工具定义的agent工具评估器才有判断依据。内置评估器依赖 Foundry 端点builtin.*评估器是 Foundry 能力FoundryChatClient必须指向 Foundry 项目端点任意指向其他端点的 OpenAI 客户端无法运行它们。评估默认只看最后一轮不指定conversation_split时评估器默认按最后一个用户消息切分只看最后一轮输入输出多轮轨迹评估需显式传ConversationSplit.FULL或ConversationSplit.PER_TURN。同一目录还有 evaluate_traces_sample.py评估历史 Responses/OTel 轨迹无需改动 Agent 代码和 evaluate_with_rubric_sample.py使用在 Foundry Portal 中创建的自定义 rubric 评估器分别对应评估过去的运行和按自定义评分标准打分两个独立目标本文不展开。【免费下载链接】agent-frameworkA framework for building, orchestrating and deploying AI agents and multi-agent workflows with support for Python and .NET.项目地址: https://gitcode.com/GitHub_Trending/age/agent-framework创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考