Claude AI 工具调用完整指南:从计算器到多工具客服机器人
2026/9/5 15:47:05 网站建设 项目流程

Claude AI 工具调用完整指南:从计算器到多工具客服机器人

【免费下载链接】coursesAnthropic's educational courses项目地址: https://gitcode.com/GitHub_Trending/cours/courses

让 Claude 算"1984135 × 9343116",它给出的结果会错掉约 550 亿——大模型做数学并不可靠,但如果你给它一个计算器,它就能稳定输出正确答案。这就是 AI 工具调用(tool use,也叫 function calling)的全部含义:模型自己不出手,而是"开口点菜",由你的应用执行真实函数,再把结果喂回模型。Anthropic 官方课程 cours/courses 的 tool_use/ 目录用 6 个递进式 notebook,带你走完从单个工具到多工具客服机器人的完整路径。

先定义,后调用:工具由哪三样东西组成

模型不会凭空知道"有计算器可用"。每一次 API 请求里,你都要显式声明工具列表——模型没有任何内置的服务端工具。一个工具定义只有三个字段:

字段作用注意点
name工具标识只能含字母数字下划线,最长 64 字符
description模型选不选它的依据写清楚"何时该用、行为是什么",比代码更影响调用准确性
input_schema参数约束标准 JSON Schema,可用requiredenum限定取值

例如一个查订单的工具只需声明order_id为必填字符串;一个按邮箱/用户名/手机号查用户的工具,则用enumkey参数限定为三选一。定义完工具,整条链路就固定为 4 步闭环:① 你提交"工具集 + 用户问题";② 模型回一个ToolUseBlock(内含工具名和参数)并停止;③ 你的应用执行函数,把结果作为tool_result消息送回;④ 模型基于结果组织最终回答。

🐔 课程里最直观的演示是鸡舍问题:"我有 28 只鸡,飞走了 2 只,还剩几只?"模型收到计算器工具后,先返回ToolUseBlock(name='calculator', input={operand1: 28, operand2: 2, operation: 'subtract'}),应用执行calculator('subtract', 28, 2)得到 26,全程无需模型"心算"。

把工具当"格式模具":零解析拿到结构化 JSON

想要情感分数、实体列表这类规范 JSON,直接"请模型输出 JSON"往往还得自己清洗字符串。03_structured_outputs.ipynb 里有个取巧做法:既然模型调用工具时天然会按input_schema吐出结构化参数,那就把目标数据结构定义成一个"假工具"——比如print_sentiment工具只声明positive_scorenegative_scoreneutral_score三个字段,模型返回的input就是现成的 JSON,直接取用即可。

这个技巧同样适用于实体抽取、Wikipedia 文章分类(主题 + 摘要 + 带分数的类目列表)等场景。配合tool_choice指定强制调用该工具,可以免去"求模型配合"的提示词博弈。

tool_result 的格式:最容易翻车的一步

四步闭环里第 3 步最讲究格式,也是课程花最多笔墨的地方。回传结果必须满足三点:

  1. 新消息的roleuser
  2. 内容块类型为tool_result
  3. tool_use_id必须与模型那条ToolUseBlockid一一对应。

课程用"谁赢得了 2024 年大师赛"做了完整演示:模型先调用get_article工具,你的应用查 Wikipedia 拿到正文,再按上述格式回传,模型即可基于真实资料作答。如果一个问题需要连续多次调用(比如先查诺兰的奥斯卡数,再查斯泰勒的艾美奖数),把"执行 → 回传"包进循环即可,04_complete_workflow.ipynb 末尾的练习正是这个目标。

tool_choice 三种取值:默认、强制、任意

tool_choice参数控制模型"怎么选工具",三种取值对应三种控制粒度:

取值含义典型场景
auto(默认)模型自行决定用不用工具通用对话,配合系统提示词纠偏
tool+ 指定名称必须调用该工具结构化输出流水线,必须拿到规范 JSON
any必须调用某个工具,选哪个随意所有出口都走工具的系统,如只靠短信通信的机器人

⚠️ 课程里反复强调一个现象:模型"爱用工具"。问"祖母绿是什么颜色",它可能硬调计算器加两个零。auto模式下最经济的修复手段是在 system prompt 里加一句"仅在必要时使用工具",效果立竿见影。

多工具客服机器人:串联、越权与坑位清单

压轴课 06_chatbot_with_multiple_tools.ipynb 为虚构电子公司 TechNova 搭了个客服机器人,挂 4 个工具:get_user(按邮箱/用户名/手机号查人)、get_order_by_idget_customer_orderscancel_order。用户一句"帮我查订单,我邮箱是 john@gmail.com",模型会先调get_user拿到 user_id,再用这个 id 调get_customer_orders——上一步输出成为下一步输入的工具链,完全由模型自主编排。

课程同时坦率展示了真实缺陷,整理成一份自检清单:

  • 工具过度热情:模型在用户没给任何身份信息时,凭空编造邮箱去调get_user。修法:system prompt 明确"信息不全时先追问,禁止编造参数"。
  • 越权风险:demo 里任何人只要知道别人邮箱就能取消订单。课程明确警告不得原样用于生产。
  • 思考标签泄漏:Opus 会把<thinking>推理过程输出给用户。修法:要求模型把面向用户的回复包在<reply>标签里,只展示标签内容。
  • 错误处理缺失:示例函数没有 try/except 和输入校验,真实系统必须补齐。

下一步

按顺序走完 01_tool_use_overview.ipynb 到 06_chatbot_with_multiple_tools.ipynb,每个 notebook 都带可运行示例和练习。若想先动手,直接打开 02_your_first_simple_tool.ipynb 复现鸡舍计算器,再挑一个自己的重复性任务(查库存、发邮件、抓数据)改写成工具,比读十遍理论都管用。

【免费下载链接】coursesAnthropic's educational courses项目地址: https://gitcode.com/GitHub_Trending/cours/courses

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询