Research Engineer / Agentic Coding(不同帖) · Agentic Coding Screen

Anthropic Agentic Coding:股票价格工具的多步 Agent Loop

从只能单次工具调用的 starter 扩展到多次查询与计算,明确工具结果回填、回合预算、失败处理和减少往返的优化。

题目重点:从只能单次工具调用的 starter 扩展到多次查询与计算,明确工具结果回填、回合预算、失败处理和减少往返的优化。

题意与假设

这道练习题保留了面经中值得训练的核心约束,并将需要澄清的条件单独列出。现场拿到变体时,先和面试官确认这些条件。

  • 训练版工具只读,返回按 ticker/日期可查询的价格;真实工具名称与参数由 starter 给定,本文不模拟未公开接口。
  • 一个模型回合可返回最终答案或一组工具调用;每个调用都先校验工具名、参数类型和权限,再执行并把结构化结果回填上下文。
  • 回合指模型推理往返次数,而非工具调用次数;若面试平台定义不同,优化指标应随其评测口径调整。股票涨跌计算需明确使用原始价、复权价、币种与交易日口径。

解题路线

  1. 状态机为 `user question → model → (final | tool_calls)`;对 tool_calls 逐个做 schema 校验、去重和预算检查,执行后把每个 call id 与结果/错误一起回填,再调用模型,直到 final、轮数上限或不可恢复错误。
  2. 把回答与证据分开:工具给价格事实,计算层用明确公式做差值、百分比或聚合,并保留日期/ticker 引用;模型不能把未查到的价格当事实补齐。
  3. 设 `max_rounds`、`max_tool_calls`、deadline 与响应大小上限,避免模型反复调用相同工具或通过工具输出注入新的未授权命令。暂时失败可有界重试,参数错误应返回结构化错误让模型改正;跨回合重复的只读查询可缓存。
  4. 要从 3 回合降到 2 或 1 回合,先拆依赖图:独立价格查询可在同一回合并行发出;若全部所需数据可事先由确定性的计划一次性查询,再在本地计算,才可能单模型回合完成。不能把必须等前一工具结果才能确定下一参数的链凭空压成 1 回合。
  5. 评测不仅看回合数,还看答案正确率、价格引用、成本与工具调用数量;减少回合但扩大无关查询或漏掉复权条件并不是真优化。

手动走一遍

训练例用户问“股票 X 在 d1 到 d2 上涨多少百分比”。若工具一次只能查单日,两个价格查询彼此独立,可在一轮模型输出中并行提交 `(X,d1)`、`(X,d2)`;得到 p1=100、p2=110 后按 `(110−100)/100=10%` 回答,并标明两次价格口径。如果 d1 非交易日,不能自选上一交易日而不说明规则。

规模与取舍

设 R 次模型回合、C 次工具调用、每次工具平均延迟 L_t、模型平均延迟 L_m。顺序墙钟约 R·L_m+ΣL_t;同一回合的独立调用并行后该批延迟接近 max(L_t),受并发限额影响。上下文长度随回填结果增长,需摘要或裁剪;时间/成本没有固定 Big-O。

易错点与追问

容易失分的边界

  • 把模型输出文本中的工具命令直接执行,跳过 schema/权限验证。
  • 工具失败后继续用幻觉价格回答。
  • 把一回合多次并行工具调用与一次工具调用混为一谈。
  • 为了减少回合数先广撒网查大量无关价格,成本与限流恶化。
  • 把 的 1/2 回合目标宣称为所有版本的正式评分标准。

继续深挖

  • 工具调用包含价格来源不一致时,怎样挑选或拒答?
  • 若用户请求跨多个 ticker 的相关性,哪些查询可并行,哪些计算需要完整数据后才能执行?
  • 怎样回放一条失败 agent trace,判断是 planner、tool、计算还是答案组织出错?
✓已复制微信号!