评估工程技能:从仓库上下文和追踪构建评估
LangChain 发布了评估工程技能,该技能通过检查代理的仓库结构和追踪记录,以访谈方式提出评估方案,并生成可执行的 Harbor 格式评估任务。
LangChain 于今日正式发布“评估工程技能”(Eval Engineering Skill),这是一项旨在帮助编码代理利用仓库上下文和代理追踪构建评估系统的功能。
该技能的核心流程包括:首先检查代理的结构,包括提示词、模型、工具、技能和钩子等;其次,若有追踪记录,则从追踪中挖掘模式,提出需要测试的能力。技能会以访谈形式与用户交互,用户对提案提供反馈并逐步批准每个评估。最终产出为 Harbor 格式的可执行评估。
在环境与任务构建阶段,技能首先读取仓库,映射代理的表面结构,并识别支撑这些行为的数据和服务(如 API 调用)。用户还可通过 langsmith-cli 等工具将追踪记录指向代理,追踪展示了工具在实际中的表现,包括参数、结果和错误。这些观察到的合约帮助技能在受控环境中复现生产行为。
通过爬取仓库和追踪,技能能够了解哪些能力对代理至关重要,并据此提出评估任务。LangChain 发现,与用户进行访谈比一次性生成能获得更高的评估接受率。用户可从提议的评估方向中选择,并给出指导,例如哪些工具和依赖需要实时运行,哪些需要模拟。例如,涉及成本或写入生产的工具调用可在每次评估调用时模拟而非实际执行。
LangChain 在文档问答代理 chat-langchain 上测试了该流程。对该代理而言,环境需要一个通过代理搜索工具暴露的数据语料库,该工具模拟了生产代理的模型。任务包括从真实追踪中提取的现实文档问题,以及一个通过标准答案字符串和引用文档来检查答案的验证器。
评估设计是一个迭代过程。实验表明,虽然代理有时能一次性生成评估,但最佳评估往往来自用户反馈,用户指定哪些能力值得测量。编码代理和技能提供了一个自然接口,其中编码了构建良好评估所需的知识,用户可随时间迭代。
例如,构建验证器时,第一个版本很少是最终版本。改进的有效方法是运行评估并检查结果的两面:代理轨迹(包括消息、工具调用和动作)以及验证器轨迹(证据、推理和最终分数)。这有助于揭示任务或验证器设计是否准确测量了关注点,或者是否存在奖励黑客行为——代理可能走捷径,如过度引用不相关来源以获得满分、声称未执行的动作、利用暴露的答案材料、或在不完成任务的情况下满足代理指标。观察代理解决问题的轨迹常常能揭示这些失败的根源。随后可修订任务、环境和验证器并重新运行。
评估采用 Harbor 任务格式,包含三个组件:指令(任务开始时给代理的消息)、环境(Dockerfile,包含设置,如安装工具或填充文件系统数据)和验证器(评分代理是否正确完成任务)。这些组件组合为 Harbor 任务目录结构:evals/<task>/task.toml、instruction.md、environment/ 和 tests/。Harbor 在环境中运行代理,记录其轨迹、工件、奖励和错误。同一评估可针对不同模型、提示词、工具和代理版本运行。
持续学习可以视为一个持续的数据挖掘问题,生产数据用于构建评估,从而随时间改进代理。团队挖掘追踪以发现重复的用户请求、错误、失败的工具调用和不正确的状态变化,这些转化为评估,以便未来测量和预防相同行为。评估是代理的训练数据,团队可通过修改提示词和工具或微调来适配代理行为。评估提供了固定的目标,用于判断变更是否改善了预期能力。
容器化评估加速了这一过程。当代理配置变化时,任务和环境保持稳定,构建者可以更换模型、工具、提示词或完整代理版本,直接比较结果。多种配置可并行运行。可复现的环境对信号至关重要:当评估镜像了生产中的相关工具、数据、权限、状态和故障模式时,构建者获得了一个既稳定又能代表代理实际运行方式的测试平台,无需依赖变化的生产系统或写入生产状态。
最终循环为:挖掘追踪 -> 识别失败 -> 构建评估 -> 改进代理 -> 重新运行。
评估工程技能现已开源,位于 langchain-ai/langchain-skills 仓库。用户可在 Codex 或 Claude Code 中安装该技能,打开待评估代理的仓库,可选提供一组追踪记录,然后使用简单提示启动:"使用评估工程技能与我一起创建评估。先检查代理,提出几个值得测试的能力,推荐一个,并等待我选择。"结果将是一个位于 evals/ 下的 Harbor 任务、实际目标运行,以及验证器是否准确测量了预期行为的审查。
LangChain 表示期待扩展该技能,并构建工具以自动构建评估并自主适配代理。