普洱市网站建设_网站建设公司_页面加载速度_seo优化
2026/1/6 21:27:11 网站建设 项目流程

LangChain团队分享了评测深度Agent的五大核心模式:定制化测试逻辑、单步评测、完整Agent轮次、多轮次运行评测及正确环境设置。与传统LLM评测不同,深度Agent评测需关注轨迹、状态和工具调用。单步评测适合开发快速迭代,完整轮次适合回归测试,同时需确保每次测试环境干净可复现。Mock API请求可提高评测效率。掌握这些评测方法有助于在Agent落地应用中建立优势。


过去一个月,LangChain团队基于Deep Agents框架发布了四款应用:DeepAgents CLI(编程Agent)、LangSmith Assist(应用内助手)、个人邮件助理、以及Agent Builder(无代码Agent构建平台)。

在构建和发布这些Agent的过程中,团队积累了大量评测经验。本文将深入分享评测深度Agent的五个核心模式。

术语说明

在正式开始之前,先明确Agent运行方式的几个关键概念:

  • 单步运行(Single step):限制Agent只执行一个动作,用于观察Agent在特定场景下的下一步决策
  • 完整轮次(Full turn):让Agent完整运行一次输入,可能包含多次工具调用迭代
  • 多轮次(Multiple turns):Agent完整运行多次,模拟用户与Agent之间的多轮对话交互

可测试的内容:

  • 轨迹(Trajectory):Agent调用的工具序列,以及生成的具体工具参数
  • 最终响应(Final response):Agent返回给用户的最终回复
  • 其他状态(Other state):Agent运行过程中生成的其他值,如文件、产物等

模式一:深度Agent需要为每个测试点编写定制化测试逻辑

传统LLM评测流程很简单:构建数据集 → 编写评测器 → 运行应用生成输出 → 用评测器打分。每个数据点的处理方式完全相同。

但深度Agent打破了这个假设。你不仅需要测试最终消息,"成功标准"也可能因数据点而异,需要针对Agent的轨迹和状态做特定断言。

看一个具体例子:

假设有一个具备记忆用户偏好能力的日历调度Agent。用户说"记住,永远不要在早上9点之前安排会议"。我们需要验证Agent是否在文件系统中更新了自己的记忆。

为此,需要编写断言来验证:

  • Agent 对 memories.md 文件路径调用了edit_file
  • Agent在最终消息中向用户确认了记忆更新
  • memories.md 文件实际包含了关于不安排早会的信息(可以用正则表达式查找"9am"的提及,或使用LLM-as-judge进行更全面的分析)

LangSmith的Pytest和Vitest集成支持这种定制化测试,可以为每个测试用例对Agent的轨迹、最终消息和状态做不同的断言。

这种LangSmith集成会自动将所有测试用例记录到实验中,可以查看失败测试用例的完整trace来调试问题,并追踪历史结果。

# 标记为LangSmith测试用例 @pytest.mark.langsmith def test_remember_no_early_meetings() -> None: user_input = "I don't want any meetings scheduled before 9 AM ET" # 将Agent输入记录到LangSmith t.log_inputs({"question": user_input}) response = run_agent(user_input) # 将Agent输出记录到LangSmith t.log_outputs({"outputs": response}) agent_tool_calls = get_agent_tool_calls(response) # 断言Agent调用了edit_file工具来更新记忆 assert any([tc["name"] == "edit_file" and tc["args"]["path"] == "memories.md" for tc in agent_tool_calls]) # 用LLM-as-judge记录最终消息是否确认了记忆更新 communicated_to_user = llm_as_judge_A(response) t.log_feedback(key="communicated_to_user", score=communicated_to_user) # 用LLM-as-judge记录记忆文件是否包含正确信息 memory_updated = llm_as_judge_B(response) t.log_feedback(key="memory_updated", score=memory_updated)
模式二:单步评测既有价值又高效

在Deep Agents的评测中,大约一半的测试用例是单步评测——在特定输入消息序列之后,LLM决定做什么?

这对于验证Agent在特定场景下是否调用了正确的工具、使用了正确的参数特别有用。常见测试用例包括:

  • 是否调用了正确的工具来搜索会议时间?
  • 是否检查了正确的目录内容?
  • 是否更新了记忆?

回归问题通常发生在单个决策点,而非整个执行序列。如果使用LangGraph,其流式能力允许你在单次工具调用后中断Agent来检查输出——这样可以在完整Agent序列的开销之前及早发现问题。

@pytest.mark.langsmith def test_single_step() -> None: state_before_tool_execution = await agent.ainvoke( inputs, # interrupt_before指定在哪些节点前停止 # 在tools节点前中断,可以检查工具调用参数 interrupt_before=["tools"] ) # 可以查看Agent的消息历史,包括最新的工具调用 print(state_before_tool_execution["messages"])
模式三:完整Agent轮次提供全局视角

把单步评测看作"单元测试",确保Agent在特定场景下采取预期动作。而完整Agent轮次同样有价值——它展示了Agent端到端行动的完整画面。

完整Agent轮次可以从多个维度测试Agent行为:

1. 轨迹评测:验证某个特定工具在执行过程中某个时刻被调用过,但不关心具体何时。比如在日历调度示例中,调度器可能需要多次工具调用才能找到适合所有参与者的时间段。

2. 最终响应评测:某些情况下,最终输出的质量比Agent走过的具体路径更重要。在编程和研究等开放性任务中尤为如此。

3. 其他状态评测:与评测最终响应类似。一些Agent会创建产物而非以对话形式回复用户。在LangGraph中检查和测试这些产物很方便:

  • 编程Agent → 读取并测试Agent编写的文件
  • 研究Agent → 断言Agent找到了正确的链接或来源

完整Agent轮次提供Agent执行的完整视角。LangSmith可以将完整Agent轮次以trace形式展示,你可以看到延迟和token使用等高级指标,同时也能深入分析每个模型调用或工具调用的具体步骤。

模式四:多轮次运行模拟真实用户交互

某些场景需要测试包含多个连续用户输入的多轮对话。挑战在于:如果你硬编码一系列输入,而Agent偏离了预期路径,后续硬编码的用户输入可能就不再合理。

通过在Pytest和Vitest测试中添加条件逻辑来解决这个问题:

  • 运行第一轮,检查Agent输出
  • 如果输出符合预期,运行下一轮
  • 如果不符合预期,提前终止测试

这种方法让我们能够运行多轮评测,而无需建模Agent的每个可能分支。如果想单独测试第二轮或第三轮,只需设置一个从该点开始的测试,并配置适当的初始状态。

模式五:正确的评测环境设置至关重要

深度Agent是有状态的,专为处理复杂的长时间任务而设计——通常需要更复杂的评测环境。

与简单LLM评测不同(环境仅限于几个通常无状态的工具),深度Agent需要为每次评测运行提供一个干净的全新环境,以确保结果可复现。

编程Agent就是很好的例子。Harbor为TerminalBench提供了一个运行在专用Docker容器或沙箱中的评测环境。对于DeepAgents CLI,我们采用更轻量的方法:为每个测试用例创建临时目录,并在其中运行Agent。

核心要点:深度Agent评测需要每次测试都重置的环境——否则评测会变得不稳定且难以复现。

实用技巧:Mock掉API请求

LangSmith Assist需要连接真实的LangSmith API。针对实时服务运行评测可能既慢又贵。更好的做法是:将HTTP请求录制到文件系统,在测试执行时回放。Python可以用vcr库,JS可以通过Hono应用代理fetch请求。

Mock或回放API请求让深度Agent评测更快、更容易调试,特别是当Agent严重依赖外部系统状态时。

总结

Agent评测和传统LLM评测是两回事。LLM评测看输入输出,Agent评测必须打开黑盒看中间过程——轨迹对不对、状态变了没、工具调没调对。

实际操作中,单步评测适合开发阶段快速迭代,完整轮次适合上线前回归测试,两者结合用。另外别小看环境隔离这事,很多团队花大量时间debug的"bug"其实是测试环境不干净导致的。总之,谁先把Agent评测这套流程跑通,谁就能在落地上建立优势。

如何学习AI大模型?

如果你对AI大模型入门感兴趣,那么你需要的话可以点击这里大模型重磅福利:入门进阶全套104G学习资源包免费分享!

这份完整版的大模型 AI 学习和面试资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】

这是一份大模型从零基础到进阶的学习路线大纲全览,小伙伴们记得点个收藏!


第一阶段:从大模型系统设计入手,讲解大模型的主要方法;

第二阶段:在通过大模型提示词工程从Prompts角度入手更好发挥模型的作用;

第三阶段:大模型平台应用开发借助阿里云PAI平台构建电商领域虚拟试衣系统;

第四阶段:大模型知识库应用开发以LangChain框架为例,构建物流行业咨询智能问答系统;

第五阶段:大模型微调开发借助以大健康、新零售、新媒体领域构建适合当前领域大模型;

第六阶段:以SD多模态大模型为主,搭建了文生图小程序案例;

第七阶段:以大模型平台应用与开发为主,通过星火大模型,文心大模型等成熟大模型构建大模型行业应用。

100套AI大模型商业化落地方案

大模型全套视频教程

200本大模型PDF书籍

👉学会后的收获:👈

• 基于大模型全栈工程实现(前端、后端、产品经理、设计、数据分析等),通过这门课可获得不同能力;

• 能够利用大模型解决相关实际项目需求: 大数据时代,越来越多的企业和机构需要处理海量数据,利用大模型技术可以更好地处理这些数据,提高数据分析和决策的准确性。因此,掌握大模型应用开发技能,可以让程序员更好地应对实际项目需求;

• 基于大模型和企业数据AI应用开发,实现大模型理论、掌握GPU算力、硬件、LangChain开发框架和项目实战技能, 学会Fine-tuning垂直训练大模型(数据准备、数据蒸馏、大模型部署)一站式掌握;

• 能够完成时下热门大模型垂直领域模型训练能力,提高程序员的编码能力: 大模型应用开发需要掌握机器学习算法、深度学习框架等技术,这些技术的掌握可以提高程序员的编码能力和分析能力,让程序员更加熟练地编写高质量的代码。

LLM面试题合集

大模型产品经理资源合集

大模型项目实战合集

👉获取方式:
😝有需要的小伙伴,可以保存图片到wx扫描二v码免费领取【保证100%免费】🆓

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询