1. Few-Shot 把 Agent 带偏,问题到底出在哪
大模型、提示词、零样本、思维链这几个词你一定不陌生,但真正把 Few-Shot 丢进 Agent 上下文里跑,你会发现一个反直觉的现象:示例给得越多,Agent 反而越容易卡在同一个动作里出不来。Manus 那篇 Don't Get Few-Shotted 讲的就是这件事——模型天生擅长模仿上下文里的行为模式,当你的上下文堆满相似的 action-observation 对,它会不自觉地延续那个节奏,哪怕这个节奏早就不是最优解了。
我最近在复刻原文那组「在干嘛?→ 嘛干在」的反转少样本实验时,就踩到了这个坑。单轮对话里模型反转得挺准,可一旦把它塞进一个多轮 Agent 循环,让它连续处理十几条类似结构的输入,它就开始机械地套用同一个反转模板,连标点位置都懒得变。这时候你需要的不是继续加示例,而是能逐轮看到每次请求到底喂了什么上下文、模型又回了什么。要做到这一点,前提是你得有一个稳定的模型调用通道,把 CLI 和对话工具真正跑起来。
这篇就按「验证用量」这个视角,带你把 Few-Shot 和 CoT 两组提示词在真实工具里跑通,重点看调用记录里每一轮请求是否成功、上下文是怎么被喂进去的。TaoToken 在这里只负责提供 Key 和 Base URL,它不参与提示词本身,也不替模型做推理,所以你能看到的是最原始的调用链路。
2. 用 TaoToken 打通 Agent 的模型调用通道
在开始复刻实验之前,先把调用通道配好。这一步的核心就两件事:拿到 Key,把 Base URL 填对。
先到 https://taotoken.net/?utm_source=taotoken_aicg_blog_end 创建一个 API Key。创建完之后你会得到一串以sk-开头的密钥,复制下来存好,后面填进工具里。
然后记住 Base URL 的写法:https://taotoken.net/api。这里有两个容易出错的地方,一是不要在后面加/v1,二是不要带任何 UTM 参数。很多工具的配置项里默认会帮你拼/v1/chat/completions这类路径,你只需要填到/api这一层就行。
TaoToken 在这个流程里的角色很清晰:它给你 Key 和 Base URL,让你的 Agent、CLI、对话工具能发出请求。提示词怎么写、Few-Shot 放几条、CoT 怎么触发,这些完全由你控制,TaoToken 不介入。这一点对做提示词实验特别重要,因为你要观察的是模型对提示词的真实反应,中间层越少越好。
如果你平时用的是 Claude Code 这类编码工具,配置方式也类似,把 Key 填进对应的环境变量或配置文件,Base URL 指向https://taotoken.net/api即可。配好之后先别急着跑复杂实验,用一条最简单的请求确认通道是通的。
3. 可复制配置:把 Key 和 Base URL 填进你的工具
下面给几种常见工具的配置方式,你可以按自己平时用的挑一个。
3.1 环境变量方式(通用)
大多数支持 OpenAI 兼容接口的工具都认这两个环境变量:
export OPENAI_API_KEY="sk-你的Key" export OPENAI_BASE_URL="https://taotoken.net/api"注意OPENAI_BASE_URL只写到/api,不要加/v1。有些工具内部会自动补全路径,你多写了反而会 404。
3.2 Python 脚本方式
如果你想像我一样用脚本逐轮打印请求和响应,可以这样写:
from openai import OpenAI client = OpenAI( api_key="sk-你的Key", base_url="https://taotoken.net/api" ) response = client.chat.completions.create( model="gpt-4o", messages=[ {"role": "user", "content": "在干嘛?"} ] ) print(response.choices[0].message.content)跑通这一步,说明你的 Key 和 Base URL 都没问题。接下来就可以往messages里塞 Few-Shot 示例了。
3.3 对话工具 / CLI 方式
如果你用的是带图形界面的对话工具,一般在设置里找「自定义 API 地址」或「Base URL」这一项,填https://taotoken.net/api,然后把 Key 填进 API Key 输入框。保存后发一条测试消息,能正常回复就说明配通了。
这里有个小细节:部分工具会在 Base URL 后面强制拼/v1,如果你填了/api之后请求失败,检查一下工具是不是自动加了后缀。正确的最终请求地址应该是https://taotoken.net/api/chat/completions这种形式,而不是https://taotoken.net/api/v1/chat/completions。
4. 逐轮验证:Few-Shot 反转实验和 CoT 复刻
通道配好之后,我们来做两组实验,重点看调用记录里每一轮的请求是否成功、上下文是怎么被喂进去的。
4.1 Few-Shot 反转实验
先复刻原文那组反转少样本。构造这样的 messages:
messages = [ {"role": "user", "content": "在干嘛?"}, {"role": "assistant", "content": "嘛干在?"}, {"role": "user", "content": "没干啥"}, {"role": "assistant", "content": "啥干没"}, {"role": "user", "content": "晚上来我家吃饭"}, {"role": "assistant", "content": "饭吃家我来上晚"}, {"role": "user", "content": "可以啊,吃什么?"} ]发出去之后,观察模型返回的内容。按原文的说法,它应该输出「么什吃,啊以可?」——保留标点位置,其他文本反转。你在调用记录里能看到这一轮请求的完整上下文,包括前面三组示例是怎么被喂进去的。
关键观察点:如果你把这个模式连续跑十轮,每轮都换一个类似结构的输入,模型会不会开始偷懒?比如不再严格保留标点位置,或者干脆套用上一轮的反转结果。这就是 Few-Shot 在 Agent 场景下可能带偏的直观表现。
4.2 CoT 复刻实验
再拿「Let's solve this step by step」这组 CoT 例子复刻一遍。构造一个需要多步计算的问题,比如:
messages = [ {"role": "user", "content": "计算 2123812393 - 123123 + 2123123123,只返回一个数字"} ]第一轮不加 CoT 提示词,看模型能不能直接给出正确答案。按原文的经验,这种大数运算模型很容易在第四位出错。然后第二轮加上 CoT:
messages = [ {"role": "user", "content": "计算 2123812393 - 123123 + 2123123123。Let's solve this step by step"} ]这一轮你在调用记录里能看到模型输出了中间推理步骤,最终结果也对了。对比两轮的请求和响应,你就能直观感受到 CoT 多出来的那些轮次到底值不值。
4.3 在调用记录里看什么
不管用哪种工具,重点看三样东西:一是每轮请求的 HTTP 状态码,确认调用是否成功;二是请求体里的 messages 数组,看上下文是怎么被拼进去的;三是响应里的 content,看模型实际输出了什么。把这三样对齐,你就能判断 Few-Shot 到底有没有把 Agent 带偏、CoT 多出来的轮次有没有换来更准的结果。
5. 本篇常见错排查
配通过程中容易遇到几个问题,这里集中说一下。
请求返回 404:大概率是 Base URL 写错了。检查是不是多加了/v1,或者工具自动拼了后缀。正确的 Base URL 是https://taotoken.net/api,最终请求路径应该是/api/chat/completions这种形式。
请求返回 401:Key 没填对,或者 Key 前后有空格。重新复制一遍,确认没有多余字符。
模型返回内容为空:检查 messages 数组是不是格式不对,比如 role 写错了,或者 content 是空字符串。另外确认一下你用的模型名在通道里是支持的。
Few-Shot 实验里模型不按示例反转:先确认示例本身没问题,再检查是不是上下文太长导致模型注意力分散。可以试着减少示例数量,看效果有没有变化。
CoT 实验里模型不输出推理步骤:有些模型对「Let's solve this step by step」的响应不明显,可以换成「请一步一步推理」或者「先展示计算过程再给结果」。不同模型对 CoT 触发词的敏感度不一样,多试几个。
调用记录里看不到完整上下文:部分工具默认只显示最终回复,不显示请求体。你需要在工具的设置里打开「显示请求详情」或者用脚本方式自己打印。
6. 把验证跑通,再决定 Few-Shot 和 CoT 怎么用
跑完这两组实验,你手里就有了一份真实的调用记录:Few-Shot 在单轮里表现稳定,但在多轮 Agent 循环里可能让模型陷入模仿惯性;CoT 能提升复杂计算的准确率,但每一轮多出来的推理步骤都是实打实的算力消耗。这些判断不是从文章里读来的,是你自己在调用记录里逐轮看出来的。
如果你后面要长期跑编码类 Agent 或者做多轮提示词实验,可以考虑用 Coding Plan 把调用额度固定下来,这样逐轮验证的时候不用反复担心用量。想先快速验证模型对某组提示词的反应,直接开模型对话就行。需要管理多个 Key 或者查看调用明细,进控制台和 API Keys 页面操作。
通道配好只是第一步,真正有价值的是你拿着调用记录去对比不同提示词策略的效果。Few-Shot 该给几条、CoT 该不该加、上下文里要不要引入多样性,这些问题的答案都在你自己的实验数据里。