Agent 实现方法论
From Scratch
学习地图
练习
术语表
← 返回首页
本章教程
本章练习
第 06 章测验
第 06 章测验
对应章节:Tool Calling 手动全流程
共 8 题,答对率 ≥ 80% 即通过。请完成全部题目后点击「提交」。
Q1
模型返回 tool_calls 时,assistant 消息的 content 字段通常是?
模型的部分回答文本,与 tool_calls 并存
null——这一轮模型没有回答问题,而是请求调用工具
工具的执行结果
用户原始问题的复述
Q2
模型返回的 tool_calls 中,function.arguments 是什么类型?
一个已解析好的 JavaScript 对象
一段 JSON 字符串,需要先 JSON.parse 才能使用
一个 JSON Schema
一个 base64 编码的参数列表
Q3
响应中 finish_reason 为 'tool_calls' 意味着什么?
模型已经给出最终答案,对话结束
模型停下来是因为要请求调用工具,这轮输出不是最终回答
请求参数有误,需要重试
模型被截断,输出不完整
Q4
执行完工具后执行了如下回填,第二轮请求模型仍答非所问。这段回填缺了什么?
缺了 role 字段
缺了 tool_call_id——结果与哪个调用配对无从得知
content 必须是对象而不是字符串
缺了 type: 'function' 字段
Q5
下面的第二轮请求只回填了工具结果,模型表现「失忆」,看不到自己刚才请求过 get_weather。还缺了什么?
缺了带 tool_calls 的 assistant 消息——模型看不到自己的请求记录
缺了 model 字段
缺了 system 消息
toolMessages 的顺序反了
Q6
模型在同一轮返回了两个 tool_calls(查北京和上海的天气),正确的处理方式是?
只执行第一个,忽略第二个
并发执行两个,结果按 tool_calls 顺序排列,各配一条带自己 tool_call_id 的 tool 消息回填
把两个结果合并成一条 tool 消息回填
必须串行执行,第一个完成才能执行第二个
Q7
关于畸形输出的兜底,正确的原则是?
arguments 解析失败直接抛异常,让上层发现错误
工具不存在时终止整个对话
任何畸形都不炸掉对话,回填一条说明性消息(如 Error: unknown tool: xxx),让模型看到错误后自行恢复
结果过长时原样回填,保证信息完整
Q8
Anthropic 的 tool_use 与 OpenAI 的 tool_calls 相比,以下说法正确的是?
Anthropic 的参数(input)也是 JSON 字符串,同样需要 parse
两者配对机制相同(用 id 与结果配对),只是载体不同:tool_result block vs role:tool 消息
Anthropic 不需要把结果回填给模型
两者协议完全相同,只是字段名略有差异
提交