☰
Claude code课程:工具使用-2.你的第一个简单工具(TaoToken 配置版)
2026/9/26 23:07:35 网站建设 项目流程

1. 从一次“算错数”说起:为什么你的第一个工具应该是计算器

如果你刚开始接触 Claude code,大概率会遇到一个很反直觉的现象:模型写代码、改 bug、解释架构都很在行,但一让它做多位数乘法,答案就开始飘。我实测过,问它 1984135 乘以 9343116,它给出的结果和正确答案差了五百多亿,而且每次重跑还不一样。这不是模型“笨”,而是大语言模型本质上在做概率预测,不是在做精确算术。

工具使用(Tool Use)就是来解决这类问题的。它的核心思路很朴素:模型不擅长的事,交给外部函数去做,模型只负责判断“该不该调用工具、传什么参数”。整个流程最多四步——你提供工具定义和用户提问,模型返回tool_use请求,你在本地执行真实函数并把结果塞回对话,模型再基于结果给出最终回答。

这篇是 Claude code 工具使用系列的第二课,聚焦“你的第一个简单工具”。我会带你用 TaoToken 统一 Key/API 通道,先配好settings.json骨架,再跑通一次真实的工具调用闭环。适合刚上手 Claude code、想搞明白工具调用到底怎么落地的人。全程可复制,不需要你提前理解 JSON Schema 的每个细节。

2. 前置准备:用 TaoToken 打通 Claude code 的 API 通道

Claude code 本身是个命令行编码助手,但它背后要连模型 API。如果你直接去官方申请,流程长、额度紧,对刚入门的人不太友好。TaoToken 做的事情是把模型通道统一起来,你拿一个 Key,就能在 Claude code 里调用 Claude 系列模型,省掉多平台切换的麻烦。

你需要准备三样东西:一个 TaoToken 账号、一个 API Key、以及本地装好的 Claude code。Key 的获取路径是登录后进控制台,在 API Keys 页面新建一个,复制出来先存好,后面配置要用。控制台地址是 https://taotoken.net/console ,API Keys 页面是 https://taotoken.net/api-keys 。

这里有个容易踩的坑:很多人以为 Claude code 的配置写在项目目录里,其实它读的是用户级的settings.json。在 macOS/Linux 上通常是~/.claude/settings.json,Windows 上是%USERPROFILE%\.claude\settings.json。如果这个文件不存在,你需要手动创建.claude目录再建文件。我第一次配的时候就是路径写错,改了半天没生效,后来claude --version能跑但请求一直 401,才发现是配置文件根本没被读到。

提示:配置前先确认 Claude code 能正常启动。如果连claude命令都找不到,先解决安装问题,别急着改配置。

3. 可复制配置:settings.json 骨架与工具调用参数

Claude code 的settings.json支持通过环境变量指定 API 基址和 Key。TaoToken 的 API 入口是 https://taotoken.net/api ,注意这里不带任何查询参数,直接作为 base URL 使用。下面是一份最小可用的骨架,你可以直接复制后替换your_api_key_here:

{ "env": { "ANTHROPIC_BASE_URL": "https://taotoken.net/api", "ANTHROPIC_API_KEY": "your_api_key_here", "ANTHROPIC_MODEL": "claude-sonnet-4-20250514" }, "permissions": { "allow": [ "Read", "Write", "Bash(python:*)" ] } }

几个参数说明一下。ANTHROPIC_BASE_URL指向 TaoToken 的 API 通道,这是让 Claude code 走统一入口的关键。ANTHROPIC_API_KEY填你刚才复制的 Key。ANTHROPIC_MODEL指定默认模型,工具调用对模型能力有要求,建议用 Sonnet 级别,Haiku 也能跑但复杂工具场景下判断会弱一些。

permissions.allow这块是 Claude code 的工具权限白名单。注意这里的“工具”和本文要讲的“工具使用”是两个概念——前者是 Claude code 内置的文件读写、命令执行能力,后者是你通过 API 传给模型的函数定义。但两者在配置层面会互相影响:如果你不允许Bash,那模型想让你跑一段 Python 验证计算器函数时就会被拦。我建议入门阶段先放开Read、Write和受限的Bash(python:*),别一上来就全放开。

配好之后,可以用一条命令验证配置是否被正确加载:

claude --print "reply with ok"

如果返回ok,说明通道通了。如果报 401 或连接超时,先检查 Key 有没有多余空格、base URL 有没有写错。这一步过了,再往下做工具调用。

4. 验证请求:跑通计算器工具的最小闭环

现在进入正题。我们要实现的第一个工具是一个计算器,它能做加、减、乘、除。整个闭环分四步,我把它拆成可直接运行的 Python 脚本。

第一步,定义真实函数。这个函数独立于模型运行,先确保它自己是对的:

def calculator(operation, operand1, operand2): if operation == "add": return operand1 + operand2 elif operation == "subtract": return operand1 - operand2 elif operation == "multiply": return operand1 * operand2 elif operation == "divide": if operand2 == 0: raise ValueError("不能除以零") return operand1 / operand2 else: raise ValueError(f"不支持的操作: {operation}")

第二步,写工具定义。这是要传给模型的 JSON Schema,告诉它这个工具叫什么、干什么、要哪些参数:

calculator_tool = { "name": "calculator", "description": "一个简单计算器,执行基本算术运算。当用户需要精确计算时使用。", "input_schema": { "type": "object", "properties": { "operation": { "type": "string", "enum": ["add", "subtract", "multiply", "divide"], "description": "要执行的算术运算" }, "operand1": {"type": "number", "description": "第一个操作数"}, "operand2": {"type": "number", "description": "第二个操作数"} }, "required": ["operation", "operand1", "operand2"] } }

第三步,发请求并处理tool_use。这里用 Anthropic SDK,通过前面配好的环境变量走 TaoToken 通道:

import os from anthropic import Anthropic client = Anthropic( base_url=os.environ["ANTHROPIC_BASE_URL"], api_key=os.environ["ANTHROPIC_API_KEY"] ) response = client.messages.create( model="claude-sonnet-4-20250514", max_tokens=500, system="你可以使用工具,但只在必要时使用。如果不需要工具,就正常回应。", messages=[{"role": "user", "content": "计算 1984135 乘以 9343116,只返回结果"}], tools=[calculator_tool] ) print("stop_reason:", response.stop_reason)

如果一切正常,stop_reason会是tool_use,response.content里会出现一个ToolUseBlock,里面带着模型判断出的参数:operation是multiply,两个操作数分别是 1984135 和 9343116。

第四步,提取参数、执行函数、拿到结果:

if response.stop_reason == "tool_use": tool_use = response.content[0] inputs = tool_use.input result = calculator( inputs["operation"], inputs["operand1"], inputs["operand2"] ) print("计算结果:", result)

跑完你会看到18538003464660,这才是正确答案。模型没有自己算,它只是把参数填对了,真正的运算发生在你的 Python 函数里。这就是工具使用的价值——把模型的“判断力”和代码的“精确性”拼在一起。

5. 本篇常见错排查:从 401 到工具乱调用

配完跑不通是常态,我把几个高频问题列出来,对照着查会快很多。

报 401 或 invalid api key:九成是 Key 复制时带了空格,或者settings.json里的ANTHROPIC_API_KEY没被正确读取。先确认文件路径对不对,再确认 JSON 格式合法(可以用python -m json.tool settings.json校验)。如果 Key 本身没问题,检查 base URL 是不是写成了带路径的形式,正确写法就是https://taotoken.net/api。

stop_reason 一直是 end_turn,模型不调工具:说明模型判断不需要工具。可能是你的提示词太模糊,或者工具描述写得不够清楚。把description写具体一点,比如加上“当用户需要精确计算时使用”,模型更容易触发。另外系统提示里那句“只在必要时使用”也会抑制调用,调试阶段可以先去掉。

模型乱调工具,问“祖母绿什么颜色”它也去调计算器:这是真实存在的现象,模型有时会过度热情。解决办法就是加系统提示,明确告诉它“不需要工具就正常回应”。加了之后stop_reason会从tool_use变回end_turn,返回正常的文本回答。

参数类型不对,比如把数字传成字符串:检查input_schema里operand1和operand2是不是写的"type": "number"。如果写成string,模型就会传字符串,你的函数一算就报类型错误。Schema 定义和真实函数签名必须对齐,这是最容易忽略的地方。

Bash 权限被拦:如果你在 Claude code 里让它跑 Python 验证,但permissions.allow没放Bash(python:*),命令会被拒绝。回到settings.json补上,或者临时用--dangerously-skip-permissions调试(仅限本地测试,别在生产环境用)。

6. 下一步:把工具调用接进你的编码流

跑通计算器只是起点。真正的价值在于把这个模式套到你自己的场景里——比如让模型调用你的内部 API 查数据、调用文件处理函数做格式转换、调用测试脚本跑回归。核心永远是那四步:定义函数、写 Schema、发请求、处理tool_use。

如果你想把这条链路长期用起来,建议了解一下 Coding Plan,它更适合需要持续调用、做 Agent 类任务的场景,额度和管理都更省心:https://taotoken.net/coding-plan 。想先在线验证模型对工具调用的判断是否稳定,可以直接在模型对话里试几轮:https://taotoken.net/models 。接入过程中遇到参数或权限问题,接入文档里有更细的字段说明:https://taotoken.net/doc 。

配好 Key、跑通一次tool_use、看到那个精确的乘法结果,你就已经跨过了工具使用最难的那道门槛。剩下的,就是把你手头那些“模型做不好但代码能做对”的事,一个个包成工具丢给它。

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

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

立即咨询