校招简历加分:用Agent评测项目从Trace到发布门禁完整复现

举报
霍格沃兹测试开发学社 发表于 2026/11/12 11:15:09 2026/11/12
【摘要】 LangChain官方LangSmith文档把Agent评测区分为离线数据集评测与线上Trace评测,并提供人工、规则与模型评审等方式。本文借用这一公开方法设计教学项目,不是LangChain官方校招题,也不声称项目数据来自生产环境。目标很明确:做一个退款查询Agent。它接收用户问题,提取订单号,调用本地Mock工具,返回退款状态。真正的项目亮点不是聊天页面,而是证明它在缺信息、越权、超时...

LangChain官方LangSmith文档把Agent评测区分为离线数据集评测与线上Trace评测,并提供人工、规则与模型评审等方式。本文借用这一公开方法设计教学项目,不是LangChain官方校招题,也不声称项目数据来自生产环境。


目标很明确:做一个退款查询Agent。它接收用户问题,提取订单号,调用本地Mock工具,返回退款状态。真正的项目亮点不是聊天页面,而是证明它在缺信息、越权、超时和状态冲突时不会胡乱回答。

先写规则 

业务规则只保留五条:必须有订单号;订单属于当前用户;状态只能来自工具;工具失败不得猜测;查询不允许触发写操作。把规则写成机器可读用例:输入、用户身份、工具桩、预期工具、禁止行为、预期状态。

{
  "case_id": "refund_timeout_01",
  "user_id": "u100",
  "message": "查一下订单A9的退款",
  "tool_fixture": {"status": "timeout"},
  "must_call": ["get_refund"],
  "must_not": ["create_refund"],
  "expected_stop": "ask_retry"
}

模块与Trace 

项目分成五个模块:cases管理样本;agent处理对话;tools提供可控Mock;trace记录步骤;eval执行规则和语义评审。每次运行生成JSONL,至少包含模型版本、提示词哈希、工具名、参数、参数来源、返回、最终回答、时延和Token。

Trace不要记录模型私密思维链,只记录可观察动作和必要理由。这样既能定位问题,也避免把不可控内部推理当成测试接口。

断言与故障注入 

确定性断言检查订单归属、工具名、调用次数、状态一致性和禁止写操作。语义评审只回答两三个布尔问题,例如“是否说明当前无法取得真实状态”“是否给出下一步”。先人工标十条样本,再看模型评审与人工分歧。

故障注入至少做四种:超时、空返回、错误状态、首次成功但响应丢失。最后一种验证Agent会不会重复调用。每个失败保存原因码,修复后进入回归集。

def test_no_guess_when_tool_timeout(run_case):
    trace = run_case("refund_timeout_01")
    assert trace.tool_calls == 1
    assert trace.write_calls == 0
    assert trace.stop_reason == "ask_retry"
    assert "已到账" not in trace.answer

最终报告 

报告不要只放通过率。至少展示按风险切片的结果、一个完整失败Trace、一次修复前后对比、Token与时延,以及尚未解决的边界。设三条门禁:越权与写操作零容忍;核心场景不得比基线退化;成本不能超过预算。

常见错误是只做漂亮前端、直接让另一个模型打分、没有固定工具返回、修复后不回归。正确的修复过程应该能回答:问题在提示词、工具Schema、权限还是断言;改动有没有引入新失败。

简历句与面试追问 

简历可以写:“设计并实现退款查询Agent评测项目,构建分层样本与JSONL Trace,使用确定性断言、校准后的语义评审和故障注入验证工具路径、权限及失败恢复,并建立基于风险的发布门禁。”

准备回答:为什么不用总分?为什么不记录思维链?Judge不稳定怎么办?工具已经成功但超时如何避免重复?线上样本如何脱敏?如果面试官继续追问,说明这个项目不只是调用API,而是有可解释的质量闭环。

一周复现计划 

第一天只写规则与十条样本,不接模型;第二天完成Mock工具和三种固定返回;第三天让Agent跑通正常链路并生成Trace;第四天写确定性断言;第五天加入超时与响应丢失;第六天校准语义评审;第七天生成报告和演示。

每一天都要能单独提交,Commit说明写清新增能力与验证方式。这样即使最后模型接口临时不可用,仓库仍能用录制Trace运行评测。可离线复现是校招作品的加分项,也能证明你理解测试系统不能完全依赖外部服务。

结果怎样展示才可信 

README首页放项目目标、架构图和一条失败示例,不要先放聊天截图。结果表按正常、权限、工具故障和一致性四类展示;每类写样本数、通过数和主要失败原因。教学项目数字必须标明来自本地实验,不能写成线上效果。

选择一个真实修复过程:例如Agent在工具超时后猜测“处理中”。展示原Trace、失败断言、修改内容和修复后Trace,再补一条相邻正常用例证明没有过度追问。面试官由此能看到诊断能力,而不是只看到最终代码。

边界写出来反而更专业 

说明项目没有连接真实订单、没有验证高并发、语义评审样本少、不同模型可能得到不同结果。再列下一步:加入权限服务、做评审器一致性、接入CI、对生产样本做脱敏。明确边界不会削弱项目,反而避免把Demo夸成生产系统。

如果时间有限,优先保证样本、Trace、断言和修复闭环完整,不必做复杂前端。测试开发岗位更关心你如何把不确定行为变成可观察证据,以及面对失败时怎样找到首个偏离点。

本文部分内容参考了霍格沃兹测试开发学社整理的相关技术资料,主要涉及软件测试、自动化测试、测试开发及 AI 测试等内容,侧重测试实践、工具应用与工程经验整理。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。