面 agent开发 岗位时,先看模型失效后还能不能交出合法工单
这道 take-home 的胜负手不在提示词,而在模型超时、返回垃圾或缺 key 时,服务还能不能给出合法工单并交给人审。下面把评分点和自查步骤拆开,读完就能判断一份答案该不该进下一轮。
这道题到底在筛什么
题目描述的场景很具体:深夜十一点四十,候选人的仓库躺进评审邮箱。录屏很顺,一行日志进去,一张工单出来,agent 全程不卡。打开代码却只有一个提示词、没有测试,.env 里还躺着一把可用的 key。这种反差就是题目想抓的东西。九十秒的演示可以很漂亮,但它证明不了候选人能让一个 AI 功能扛住坏响应、缺 key,以及评审在火车上跑测试。
题目本身很小:一个 HTTP 服务,把一行日志变成支持工单,返回符合 schema 的 JSON,字段是 service、severity、first_seen、evidence、confidence、needs_human。模型不可用或返回垃圾时,服务仍要返回合法工单,并标记人审。测试必须在无网络、无 API key 的条件下跑通。runbook 要有启动、测试、回放 fixture 各一条命令。模型调用、缓存命中、降级都要进 ledger。
最后这句才是面试。会调模型的人很多,能说清模型什么时候被调用、什么时候没被调用、失败后发生了什么的人少。前者是 demo,后者才是服务。
评分表为什么先看可靠再看聪明
四块权重里没有“模型文采”这一项。正确性 35 分:输出符合 schema;evidence 必须是输入日志里的原句;时间戳未知就写 unknown 并转人审。可复现 25 分:pytest 离线通过,依赖锁定,fixture 回放输出一致。失败处理 25 分:超时、无效 JSON、缺 key 都能降级且不崩,缓存避免重复花费。沟通 15 分:runbook 写清取舍、限制和下一步想做什么。
顺序比分数更重要。一个提示词写得很强、却没有兜底的答案,评审只要把网络断掉就能判出局。反过来,提示词普通但降级路径完整,至少能证明这个人知道线上服务会怎么坏。
这里有个容易失分的细节:如果 evidence 让模型自由改写,评审拿输出和输入一比就会发现对不上。更稳的做法是让模型只给出定位信息,服务端按位置从原文截取;日志里没有时间时,first_seen 写 unknown,不要猜一个看起来合理的值。猜时间会让整张工单的可信度一起垮掉。
一份能过线的交付物长什么样
- 入口只做一件事:接收一行日志,空输入或格式不对就明确拒绝,不要让它进入模型调用。
- 模型调用外面包超时和异常处理;超时、invalid JSON、缺 key 都走同一条规则兜底,返回结构相同的工单,并把 needs_human 置为真。
- 缓存键至少包含日志内容、提示词版本和模型标识;只按日志内容做键,换模型或改提示词后还会读旧结果。
- ledger 不只记次数,要记每次调用的结果和降级原因。只写“fallback 发生了”没法回答评审“为什么降级”。
- 测试用
pytest,断网、移除 API key 后仍要通过;fixture 回放要和第一次输出一致。依赖写进锁定文件,别让评审装到一半报错。 - runbook 的启动、测试、回放三条命令要能在干净目录直接复制执行,并写清当前限制和下一步。
这六项里缺哪一项,面试官都能很快看出来。尤其是测试:如果跑 pytest 还需要联网或读取 .env,说明测试没有和外部服务隔离,可复现那 25 分基本拿不到。
免费额度降低的是练习成本,不是题目难度
原始材料提到 MonkeyCode 是一个开源 AI 编程项目,提供免费模型访问和免费服务器选项,并注明这篇文章属于它的产品推广内容。免费额度确实能让候选人少为 key 和部署发愁,但它不会替候选人设计降级路径。
配额是快照,不是规格。今天有多少免费 token,不代表面试时还是这个数。候选人如果围着当天的额度做设计,额度一变,服务就跟着失效;更合理的做法是把缓存、规则兜底和人工复核放在模型前面,让额度只影响成本,不影响可用性。
免费服务器也一样。它解决“把服务放到哪里”的问题,不解决“模型挂了怎么办”。把 demo 部署上去,只能证明账号能跑;能不能在没有 key 的机器上跑测试,才是题目要的证据。
面试官怎么快速验证
- 让候选人断网跑一次
pytest,再删掉环境变量跑一次。两次都过,才谈得上可复现。 - 打开 ledger,随便挑一次 fallback 问原因。只记次数、不记原因的答案会在这里卡住。
- 改一条 fixture 里的日志,检查 evidence 是否仍是原文子串。模型改写过的输出会露馅。
- 问缓存键包含什么。答不出提示词版本和模型标识,说明没考虑过升级后的脏读。
- 让候选人按 runbook 从干净目录启动。依赖没锁、命令缺参数,会当场失败。
这些检查不需要评审懂模型内部,只需要看候选人有没有把失败路径当成正常路径来设计。对招聘方来说,这比让候选人现场解释提示词技巧更能预测入职后的表现。
时间不够时先补哪一块
如果只能改一处,先补失败处理和离线测试,再回头润色提示词。提示词可以现场讲,降级路径和测试隔离很难临时编。尤其是缺 key 的场景:很多答案在本地能跑,是因为 .env 里一直有 key;把 key 拿掉,服务直接起不来,这就不是可交付的工单服务。
这套题更适合偏后端、AI 应用落地的 agent开发 岗位。如果岗位主要做模型训练或算法研究,评分权重可以调整,不必照搬。但只要你招的是要把 AI 功能放进线上服务的人,可靠性就应该排在创意前面。
一份及格的答案不会让评审惊叹模型多聪明,只会让他确认:模型出问题时,这个人知道下一步该做什么。
我当年就栽在没写 fixture 回放上,结果面试官直接断网跑测试,当场卡死在 confidence 字段那儿,太绝了。