1. 从 LLM 到智能体:21 种设计模式到底在解决什么问题
如果你刚开始接触 AI 智能体(Agent),大概率会被一堆名词砸晕:提示链、路由、反思、RAG、MCP、A2A、护栏……每个都像独立知识点,学完还是不知道怎么拼成一个能跑的系统。我自己的体会是,这 21 种设计模式本质上是一套“模块化工具箱”,它们回答的是同一个问题的不同侧面:怎么让一个大语言模型从“会聊天”变成“能自主完成任务”。
先看演进路径。最早是纯 LLM,只能靠预训练知识回答,问它今天的天气就抓瞎;接着是 RAG,把外部知识检索进来塞进提示,解决了时效和私有数据问题,但流程是固定的,不会主动决策;再往后是单体 Agent,能调用工具、能推理,可一旦任务跨领域就吃力;最后是智能体 AI,多个 Agent 协作,靠协议互通。这四步不是替代关系,而是能力叠加。
智能体本身有四个核心特性:自主性(不用人一直盯着)、主动性(会主动采取行动)、响应性(能感知环境变化)、目标导向(始终围绕目标推进)。它的执行循环可以概括为:获取目标 → 扫描环境 → 制定计划 → 执行行动 → 学习优化,然后回到第一步。能力等级上,L0 是纯推理引擎,L1 能调工具和 RAG,L2 会主动规划和自我优化,L3 是多 Agent 协同。
那 21 种模式怎么归类?我习惯按能力维度分七组:执行编排(提示链、路由、并行化、规划)、环境交互(工具使用、MCP、RAG)、质量保障(反思、推理技术、学习适应)、状态管理(记忆、目标监控、优先级)、多体协作(多智能体、A2A)、可靠性(异常处理、人在回路、护栏、评估)、高阶能力(资源感知、探索发现)。每组解决一类问题,组合起来才能构建复杂系统。
这篇教程的目标很明确:用 TaoToken 统一 Key 和 API 通道作为底座,把 Agent 工具的 endpoint 和 Base URL 改到同一个入口,然后逐个跑通这些模式的配置与调用验证。不管你是用 Claude Code、Cline、Codex 还是自己写 Python 脚本,只要把 Base URL 指向 TaoToken,就能用同一套 Key 管理所有模型的调用。下面我会先讲前置准备,再给可复制的配置片段,最后用实际请求验证,并整理常见报错。
2. TaoToken 前置准备:统一 Key 与 Base URL 的接入逻辑
在跑任何 Agent 模式之前,得先把“通道”打通。很多新手卡在这一步:每个工具都要单独配 Key、单独填 endpoint,模型换了还要改代码。TaoToken 的思路是提供一个统一的 API 入口,你只需要一个 Key,就能在多个工具和多个模型之间切换。
先明确三个核心概念。Base URL是请求的根地址,所有模型调用都走这个入口;API Key是你的身份凭证,放在请求头里;Model ID是具体要调用的模型标识。这三件套在任何一个 Agent 工具里都要填对,缺一不可。
TaoToken 的 API 地址是https://taotoken.net/api,注意这个地址不带任何查询参数,直接作为 Base URL 使用。官网入口是https://taotoken.net/?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content=,从这里可以进入控制台创建 Key。
具体操作路径:先打开官网,进入控制台(console),在 API Keys 页面创建一个新的 Key。创建时建议给 Key 起个有意义的名字,比如“agent-test”,方便后续区分用途。创建完成后复制 Key,注意它只显示一次,丢了就得重新建。
拿到 Key 之后,不同工具的配置方式略有差异,但核心都是三件事:把 Base URL 改成 TaoToken 的地址,把 Key 填进去,把 Model ID 写成你要用的模型。下面给几个常见工具的配置位置。
对于 Claude Code 这类工具,配置通常在 settings 文件里。你需要找到settings.json,在里面配置env字段,把ANTHROPIC_BASE_URL指向 TaoToken 的 API 地址,ANTHROPIC_API_KEY填你的 Key。这样 Claude Code 的所有请求都会走 TaoToken 通道。
对于 Cline 这类 VS Code 插件,配置在插件的设置面板里。选择 API Provider 时,如果有“OpenAI Compatible”选项就选它,然后 Base URL 填https://taotoken.net/api,API Key 填你的 Key,Model ID 填具体模型名。
对于 Codex 这类工具,配置在auth.json文件里。你需要把里面的 endpoint 和 key 替换成 TaoToken 的地址和你的 Key。
这里有个关键点:不同工具对 Base URL 的路径要求可能不同。有的工具会自动在 Base URL 后面拼接/v1/chat/completions,有的需要你手动写全。TaoToken 的 API 地址是https://taotoken.net/api,如果工具要求填完整的 chat 接口地址,就写成https://taotoken.net/api/v1/chat/completions。实测下来,大多数 OpenAI 兼容的工具填https://taotoken.net/api就能自动识别。
还有一个容易踩的坑:Key 的权限。创建 Key 时如果选了限制模型范围,那调用不在范围内的模型会报 401 或 403。测试阶段建议先给全模型权限,跑通后再收紧。
配置完成后,建议先用一个最简单的请求验证通道是否打通。可以用 curl 发一个 chat 请求,看返回是否正常。如果返回 200 且有内容,说明 Base URL 和 Key 都没问题。如果报 401,检查 Key 是否复制完整;如果报连接错误,检查 Base URL 是否写错。
3. 可复制配置:把 Agent 工具的 endpoint 改到 TaoToken
这一节给可直接复制的配置片段。我会覆盖三种典型场景:Claude Code 的 settings 配置、Cline 的 MCP 配置、Codex 的 auth.json 配置。每个片段都包含 Base URL、Key、Model ID 三件套,你只需要把 Key 替换成自己的。
3.1 Claude Code settings.json 配置
Claude Code 的配置文件通常位于用户目录下的.claude/settings.json。如果你用的是项目级配置,就在项目根目录的.claude/settings.json。内容如下:
{ "env": { "ANTHROPIC_BASE_URL": "https://taotoken.net/api", "ANTHROPIC_API_KEY": "sk-你的TaoToken密钥", "ANTHROPIC_MODEL": "claude-sonnet-4-20250514" } }这里ANTHROPIC_BASE_URL指向 TaoToken 的 API 地址,ANTHROPIC_API_KEY填你在控制台创建的 Key,ANTHROPIC_MODEL填你要用的模型 ID。注意模型 ID 要写准确,不同模型的标识不一样。如果你不确定用哪个,可以先填一个通用的,跑通后再换。
配置保存后,重启 Claude Code,它就会走 TaoToken 通道。你可以用一个简单任务测试,比如让它读一个文件并总结,看是否正常返回。
3.2 Cline MCP 配置
Cline 的 MCP 配置在 VS Code 的设置里,找到 Cline 插件的配置项,选择 API Provider 为“OpenAI Compatible”,然后填写:
{ "apiProvider": "openai", "openAiBaseUrl": "https://taotoken.net/api", "openAiApiKey": "sk-你的TaoToken密钥", "openAiModelId": "gpt-4o" }如果你用的是 Cline 的 MCP 功能,还需要在 MCP 服务器配置里指定模型。MCP 的本质是让 Agent 能调用外部工具,配置好 Base URL 后,Cline 的所有模型请求都会走 TaoToken。
这里有个细节:Cline 的 MCP 配置里,openAiBaseUrl填https://taotoken.net/api即可,不需要加/v1。Cline 会自动拼接路径。如果你填了/v1,可能会变成/v1/v1/chat/completions,导致 404。
3.3 Codex auth.json 配置
Codex 的配置文件是auth.json,通常位于~/.codex/auth.json。内容如下:
{ "openai": { "apiKey": "sk-你的TaoToken密钥", "baseURL": "https://taotoken.net/api" } }如果你的 Codex 版本要求填完整的 endpoint,就把baseURL改成https://taotoken.net/api/v1。保存后重启 Codex,它会读取这个配置。
3.4 通用 Python 脚本配置
如果你自己写 Agent 脚本,用 OpenAI SDK 的话,配置如下:
from openai import OpenAI client = OpenAI( base_url="https://taotoken.net/api", api_key="sk-你的TaoToken密钥" ) response = client.chat.completions.create( model="gpt-4o", messages=[ {"role": "user", "content": "用一句话解释什么是提示链"} ] ) print(response.choices[0].message.content)这段代码可以直接跑。把 Key 替换成你的,模型换成你要用的,就能验证通道。如果返回正常,说明 Base URL 和 Key 都配对了。
3.5 配置检查清单
在继续之前,对照检查这几项:
| 检查项 | 正确值 | 常见错误 |
|---|---|---|
| Base URL | https://taotoken.net/api | 多写/v1或漏写https |
| API Key | sk-开头 | 复制时漏字符或带空格 |
| Model ID | 具体模型名 | 写错大小写或版本号 |
| 路径拼接 | 工具自动处理 | 手动写全导致重复 |
配置完成后,下一步就是发请求验证。如果这一步没过,后面的模式都跑不起来。
4. 验证请求与成功结果:逐个跑通核心模式
配置好通道后,我们用一个实际请求验证,然后逐个跑通几个核心模式。我会用 Python 脚本演示,因为这样最直观,你能看到每一步的输入输出。
4.1 基础验证:确认通道可用
先跑一个最简单的请求,确认 TaoToken 通道正常:
from openai import OpenAI client = OpenAI( base_url="https://taotoken.net/api", api_key="sk-你的TaoToken密钥" ) response = client.chat.completions.create( model="gpt-4o", messages=[{"role": "user", "content": "回复 OK"}] ) print(response.choices[0].message.content)如果输出OK,说明通道没问题。如果报错,看第 5 节的排查。
4.2 模式 1:提示链(Prompt Chaining)
提示链的核心是把复杂任务拆成多步,前一步输出作为下一步输入。下面是一个文档摘要 → 翻译 → 风格调整的链:
def prompt_chain(text): # 第一步:摘要 step1 = client.chat.completions.create( model="gpt-4o", messages=[{"role": "user", "content": f"用一句话总结:{text}"}] ).choices[0].message.content # 第二步:翻译 step2 = client.chat.completions.create( model="gpt-4o", messages=[{"role": "user", "content": f"翻译成英文:{step1}"}] ).choices[0].message.content # 第三步:风格调整 step3 = client.chat.completions.create( model="gpt-4o", messages=[{"role": "user", "content": f"改写成正式语气:{step2}"}] ).choices[0].message.content return step3 result = prompt_chain("智能体是一种能自主感知环境并采取行动的系统。") print(result)每一步的输出都作为下一步的输入,这就是链式依赖。实测下来,这种拆解比一次性让模型做三件事要稳定得多。
4.3 模式 2:路由(Routing)
路由是根据输入类型把请求导向不同处理逻辑。下面用 LLM 判断做路由:
def route_query(query): # 让模型判断类型 router = client.chat.completions.create( model="gpt-4o", messages=[{ "role": "user", "content": f"判断以下问题属于哪类,只回复类别名:数据库、订单、闲聊。问题:{query}" }] ).choices[0].message.content.strip() if "数据库" in router: return handle_database(query) elif "订单" in router: return handle_order(query) else: return handle_chat(query) def handle_database(q): return f"[数据库Agent] 处理:{q}" def handle_order(q): return f"[订单Agent] 处理:{q}" def handle_chat(q): return f"[闲聊Agent] 处理:{q}" print(route_query("帮我查一下上个月的销售数据")) print(route_query("我的订单什么时候到"))路由让 Agent 从固定路径变成动态决策,这是处理真实任务多样性的基础。
4.4 模式 5:工具使用(Tool Use)
工具使用是 Agent 的标配能力。下面用 Function Calling 让模型调用一个计算器:
import json def calculator(expression): return str(eval(expression)) tools = [{ "type": "function", "function": { "name": "calculator", "description": "计算数学表达式", "parameters": { "type": "object", "properties": { "expression": {"type": "string", "description": "数学表达式"} }, "required": ["expression"] } } }] response = client.chat.completions.create( model="gpt-4o", messages=[{"role": "user", "content": "计算 123 * 456"}], tools=tools ) tool_call = response.choices[0].message.tool_calls[0] args = json.loads(tool_call.function.arguments) result = calculator(args["expression"]) print(f"计算结果:{result}")模型会返回一个工具调用请求,你执行后把结果传回去,模型再生成最终回答。这就是工具使用的完整循环。
4.5 模式 4:反思(Reflection)
反思是让模型评估自己的输出并改进。下面是一个 Generator + Critic 的简单实现:
def reflection(task): # 生成初稿 draft = client.chat.completions.create( model="gpt-4o", messages=[{"role": "user", "content": f"完成以下任务:{task}"}] ).choices[0].message.content # 批判 critique = client.chat.completions.create( model="gpt-4o", messages=[{ "role": "user", "content": f"批判以下回答,指出问题:{draft}" }] ).choices[0].message.content # 改进 improved = client.chat.completions.create( model="gpt-4o", messages=[{ "role": "user", "content": f"根据批判改进回答。原回答:{draft}\n批判:{critique}" }] ).choices[0].message.content return improved print(reflection("写一段介绍智能体的文字"))这个模式在代码生成、文案润色场景特别有用,能显著提升输出质量。
4.6 模式 14:RAG(知识检索)
RAG 是检索 + 生成。下面用简单的关键词匹配模拟检索:
knowledge_base = [ "智能体具有自主性、主动性、响应性和目标导向四个特性。", "提示链将复杂任务拆解为多个子任务,前一步输出作为下一步输入。", "MCP 是 Anthropic 推出的开放协议,用于连接 LLM 与外部资源。" ] def rag_query(question): # 简单检索:找包含关键词的文档 relevant = [doc for doc in knowledge_base if any( word in doc for word in question.replace("?", "").split() )] context = "\n".join(relevant) if relevant else "无相关信息" response = client.chat.completions.create( model="gpt-4o", messages=[{ "role": "user", "content": f"根据以下资料回答问题。资料:{context}\n问题:{question}" }] ).choices[0].message.content return response print(rag_query("智能体有哪些特性?"))实际生产中你会用向量数据库做语义检索,但原理是一样的:先检索相关片段,再拼接进提示让模型生成。
4.7 验证成功的标志
跑完上面几个模式,你应该能看到:
- 基础请求返回正常内容
- 提示链每一步都有输出且逐步传递
- 路由能正确分类并导向不同处理
- 工具调用能返回计算结果
- 反思能产出改进版回答
- RAG 能基于检索内容回答
如果某一步报错,对照下一节排查。
5. 常见报错排查:401、local proxy failed、reading choices、OAuth
这一节整理实际跑 Agent 时最常遇到的四类报错,每个都给出原因和解决动作。
5.1 401 Unauthorized
报错原文:Error code: 401 - {'error': {'message': 'Invalid API key', 'type': 'invalid_request_error'}}
原因:Key 不对。可能是复制时漏了字符、带了空格、或者 Key 被删除/禁用。
解决:回到 TaoToken 控制台,重新复制 Key。注意复制时不要多选空格。如果 Key 确实被删了,新建一个。另外检查配置文件里 Key 字段名是否正确,比如 Claude Code 用的是ANTHROPIC_API_KEY,Cline 用的是openAiApiKey,写错字段名也会导致读不到 Key。
5.2 local proxy failed
报错原文:local proxy failed: connection refused或proxy error: cannot connect to upstream
原因:Base URL 写错,或者工具在本地起了代理但代理配置不对。有些工具会默认走本地代理端口,如果代理没启动就会报这个。
解决:检查 Base URL 是否为https://taotoken.net/api。如果工具支持关闭代理,在设置里关掉“Use Local Proxy”选项。如果必须用代理,确认代理端口和工具配置一致。实测下来,大多数情况是 Base URL 多写了/v1或漏了https。
5.3 reading choices 报错
报错原文:KeyError: 'choices'或AttributeError: 'NoneType' object has no attribute 'choices'
原因:API 返回的结构和预期不符。可能是模型 ID 写错导致返回错误信息,或者请求格式不对。
解决:先打印完整 response 看返回了什么。如果是错误信息,检查 Model ID 是否正确。TaoToken 支持的模型 ID 可以在控制台查看。另外确认请求里messages格式正确,必须是[{"role": "user", "content": "..."}]这种结构。
5.4 OAuth 相关报错
报错原文:OAuth token expired或authentication failed: invalid token
原因:某些工具(如 Claude Code)默认走 OAuth 登录,如果你配置了 API Key 但工具还在尝试 OAuth,就会冲突。
解决:在工具设置里明确选择“API Key”模式,而不是“OAuth”模式。Claude Code 的 settings.json 里配置了ANTHROPIC_API_KEY后,它会优先用 Key。如果还报 OAuth 错误,检查是否有其他配置文件覆盖了设置。
5.5 排查速查表
| 报错 | 最可能原因 | 第一步动作 |
|---|---|---|
| 401 | Key 错误 | 重新复制 Key |
| local proxy failed | Base URL 错误 | 检查 URL 是否多写/v1 |
| reading choices | Model ID 错误 | 打印 response 看详情 |
| OAuth | 认证模式冲突 | 切换为 API Key 模式 |
排查时记住一个原则:先确认通道,再确认模型,最后确认请求格式。大部分问题出在前两步。
6. 继续深入:从单模式到组合系统
跑通单个模式后,真正的威力在于组合。比如一个自主研究助手,会同时用到规划、工具使用、RAG、多智能体、记忆、反思、人在回路七种模式。你可以先从两三个模式的组合开始,比如“路由 + 工具使用”就是多技能 Agent 的标准骨架,“规划 + 反思”能提升复杂任务交付质量。
如果你想继续练手,建议按这个路径:先用 TaoToken 统一 Key 把基础请求跑通,然后逐个实现本文里的模式示例,最后尝试把三四个模式拼成一个完整流程。每跑通一个,就离能自主完成复杂任务的 Agent 更近一步。
需要创建新的 Key 或查看模型列表,可以进控制台操作;想直接体验模型对话,可以用模型对话页面测试;如果打算长期做编码类 Agent,Coding Plan 会更划算。接入文档里有各工具的详细配置说明,遇到配置问题可以先查文档。
{ "env": { "ANTHROPIC_BASE_URL": "https://taotoken.net/api", "ANTHROPIC_API_KEY": "sk-你的TaoToken密钥", "ANTHROPIC_MODEL": "claude-sonnet-4-20250514" } }把这段配置放进你的工具,替换 Key,就能开始跑第一个 Agent 模式了。