ARTICLE DETAIL

资讯详情

深耕编程入门与网站建设的一线实战洞察。

把 Claude Code 青春版的 OpenAI 客户端 Base URL 改走 TaoToken 通道,再跑斐波那契

把 Claude Code 青春版的 OpenAI 客户端 Base URL 改走 TaoToken 通道,再跑斐波那契 把 Claude Code 青春版的 OpenAI 客户端 Base URL 改走 TaoToken 通道再跑斐波那契很多人照着那篇《200行代码实现 Claude Code 青春版》敲完代码卡住的地方往往不是while循环也不是tools的 schema 怎么写而是client OpenAI()这一行——默认它会去找 OpenAI 官方端点而手里只有一把第三方兼容 Key于是AuthenticationError、Connection error、model not found轮番出现。这篇就专门解决这个接入问题把OpenAI(...)初始化时的 Base URL 指向 TaoToken官网 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_end Key 用网页里创建的那把然后按原文提示让玩具 Agent 创建并运行fibonacci.py验证while tools流程能正常发请求。TaoToken 在这里只承担两个角色模型通道和 Key 来源。它不参与你的while循环不碰read_file、write_file、execute_bash你原来的 Agent 控制流一行都不用改。改的只是请求发到哪里、用哪把钥匙。一、原问题与场景为什么OpenAI()一跑就报错原文的最小实现里核心就两处client OpenAI() ... response client.chat.completions.create( modelgpt-5-codex, messagesmessages, toolsTOOLS_SCHEMA, )作者也提示了只要替换一个 OpenAI 兼容 Key 就能跑。但真正动手时会发现光换 Key 不够因为OpenAI()不带参数时SDK 默认读环境变量OPENAI_API_KEY并把请求打到https://api.openai.com/v1。你手里的兼容 Key 在官方端点上是无效的于是第一轮client.chat.completions.create就抛异常while循环还没进入tool_calls分支就退出了。这个场景的典型特征是代码逻辑没问题TOOLS_SCHEMA、AVAILABLE_FUNCTIONS都对报错集中在网络层或鉴权层而不是tool_call解析层换成官方 Key 能跑但成本、额度、可用模型不是你想要的。所以正确的做法不是去改 Agent 主循环而是在OpenAI(...)初始化时显式指定base_url和api_key。这也是本篇要解决的核心。二、TaoToken 前置注册、创建 Key、确认端点在改代码之前先把通道准备好。步骤很短打开 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_end 注册账号进入控制台在 API Keys 页面创建一把 Key复制保存只显示一次确认 API 端点https://taotoken.net/api注意不带 UTM 参数这是给 SDK 用的在模型列表里挑一个你要用的MODEL_ID填到model里。这里要强调一点TaoToken 只是模型通道和 Key 来源它不会替你执行execute_bash也不会帮你write_file。你的玩具 Agent 依然是本地那个while循环工具依然在本地跑变的只是LLM 这一步请求发给谁。如果你后面还要接 Claude Code 本体、Cline、CC Switch 这类工具Key 和端点也是同一套创建一次即可复用。三、可复制配置改OpenAI(...)初始化原文的run_toy_claude()里把这一行client OpenAI()改成显式传参import os from openai import OpenAI client OpenAI( api_keyos.environ.get(TAOTOKEN_API_KEY, YOUR_API_KEY), base_urlhttps://taotoken.net/api, )然后把model换成你在控制台选的模型 IDresponse client.chat.completions.create( modelMODEL_ID, # 换成你在 TaoToken 控制台选的模型 messagesmessages, toolsTOOLS_SCHEMA, )其余部分——execute_bash、read_file、write_file、list_files、TOOLS_SCHEMA、AVAILABLE_FUNCTIONS、内层while True循环——全部保持原样。这就是只替换一个兼容 Key那一步的完整落地方式。建议把 Key 放环境变量别硬编码进仓库export TAOTOKEN_API_KEYYOUR_API_KEY如果你用的是 Claude Code 本体而不是这个玩具脚本配置位置不一样Claude Code 走settings.json里的ANTHROPIC_BASE_URL、ANTHROPIC_AUTH_TOKEN等ANTHROPIC_*变量Codex 走config.toml。本篇的玩具 Agent 是 OpenAI SDK 路线所以改的是OpenAI(...)的base_url别把两套配置混在一起。四、验证请求让 Agent 创建并运行fibonacci.py配置改完直接跑python toy_claude.py启动后输入原文里那句验证指令请帮我创建一个简单的 Python 脚本 fibonacci.py。 1. 逻辑计算并打印前 20 个斐波那契数列。 2. 创建完成后请运行它以验证结果。预期你会看到这样的流程模型先返回一个tool_call调用write_file参数里带pathfibonacci.py和完整内容本地write_file执行打印 [写入文件] fibonacci.py并把结果 append 回messages下一轮模型返回execute_bash的tool_call命令类似python fibonacci.py本地execute_bash执行打印 [输出]和前 20 个斐波那契数模型收到工具结果后不再调用工具输出最终回复内层while退出。只要你能看到第 4 步的输出就说明while tools流程已经正常发请求、正常收tool_calls、正常回填role: tool消息。这一步通了原文后面那个修复buggy_math.py的例子也能照跑——模型会先read_file再write_file改return a - b为return a b再execute_bash验证。如果第一轮就报错往下看排查。五、本篇常见错排查1.AuthenticationError/ 401Key 没传对。检查api_key是否真的读到了环境变量或者YOUR_API_KEY有没有替换。注意别把控制台里 Key 的显示名当成 Key 本身。2.Connection error/ 超时base_url写错了。正确值是https://taotoken.net/api不要带 UTM 参数不要漏/api也不要写成官网首页地址。SDK 会在base_url后面拼/chat/completions。3.model not found/ 404model填的 ID 不在你账号可用列表里。回控制台模型列表确认MODEL_ID大小写和连字符都要一致。4. 第一轮就break没有tool_calls模型没返回工具调用可能是toolsTOOLS_SCHEMA没传或者模型本身不支持 function calling。换一个支持 tools 的模型 ID 再试。5.tool_call_id对不上回填role: tool消息时tool_call_id必须和模型返回的tool_call.id一致name也要对上。原文这段是对的别自己改字段名。6. 环境变量没生效export只对当前 shell 有效。换终端、换 IDE 运行配置后要重新设或者用.envpython-dotenv加载。7. 和 Claude Code 本体配置混淆如果你同时在配 Claude Code记住它读的是ANTHROPIC_*和settings.json不是OpenAI(...)。两套别互相覆盖。排障和接入相关的细节可以对照 API Keys 页面和接入文档一起看验证模型是否通直接去模型对话里发一条消息最快。六、语义一致 CTA这篇的目标很单一把 Claude Code 青春版的OpenAI()客户端 Base URL 改到 TaoToken 通道然后跑通fibonacci.py验证while tools。所以对应的下一步也很明确还没 Key、还在排 401 / 连接错误 /model not found的去API Keys创建 Key再对照接入文档把base_url和model核对一遍想先确认某个模型 ID 到底通不通去模型对话发一条测试消息比在脚本里反复试快如果你不只是跑这个 200 行玩具而是打算长期用 Claude Code、Cline、CC Switch 这类工具做日常编码和 Agent 任务直接看Coding Plan把通道和额度一次配好。通道配通之后剩下的就回到原文那句话Agent 的本质是一个while循环加一整套上下文工程。你改的只是请求发往哪里循环和工具还是你自己的。
返回列表