思维链(CoT)× 智能体(Agent)× 提示词(Prompt)讲解
1. 概述(What & Why)
- 目标:用通俗语言、可复制模板与可运行示例,让读者上手并落地。
 - 适用人群:开发者 / 产品 / 数据人 / 研究者。
 - 读完收获:
- 弄清 Prompt / CoT / Agent 的边界;
 - 掌握 Zero‑shot → 自一致性 → ReAct/PoT/ToT 的增量方法;
 - 拿到 评测与风控 清单;
 - 可直接用的 代码片段 / 模板。
 
 
2. 概念与边界:Prompt vs CoT vs Agent
2.1 Prompt(提示词)
- 定位:输入层的指令与约束(系统/角色/范围/格式/Few‑shot 示例)。
 - 特征:单轮、无状态、无外部工具;成本最低。
 
2.2 CoT(Chain‑of‑Thought,思维链)
- 定位:输出层的中间步骤显式化(“先写过程,再给结论”)。
 - 形态:Zero‑shot 触发语 / Few‑shot 示例 / 自一致性投票 / LtM 拆解 / ToT 搜索。
 - 特征:单轮但多步;可解释性和稳定性提升;成本中等(token↑)。
 
2.3 Agent(智能体/编排器)
- 定位:编排层控制循环:思考 → 行动(工具) → 观察 → 反思 → 继续/结束。
 - 能力:工具选择与参数规划、状态/记忆、失败重试、停止条件。
 - 特征:多轮、有状态、有外设;能力最强、成本最高。
 
2.4 分层关系(从下到上)
- 模型推理引擎 → 2) 提示层(Prompt) → 3) 推理风格(CoT/SC/LtM/ToT/PoT) → 4) 编排层(Agent/ReAct) → 5) 数据/工具层(检索/SQL/代码执行/HTTP 等)。
 
3. 方法谱系(从入门到进阶)
3.1 Zero‑shot CoT(零样本)
- 做法:提示里加触发语 “请一步一步推理”。
 - 适用:通用复杂题、无需示例即可生效。
 
3.2 Few‑shot CoT(少样本)
- 做法:放 2–4 个 题目→步骤→答案 的高质量样例。
 - 适用:题型稳定、风格需要模仿时更稳。
 
3.3 Self‑Consistency(自一致性)
- 做法:以较高温度一次生成 k=5–20 条不同思路链,对最终结论多数表决。
 - 价值:显著增稳,常作为低成本“Boost”。
 
3.4 Least‑to‑Most(由易到难拆解)
- 做法:先列 3–5 个子问题(编号)→ 逐一求解 → 串联总解。
 - 适用:层次清晰、可分解的问题。
 
3.5 Tree‑of‑Thoughts(思维树搜索)
- 做法:关键节点分叉多条思路,配评估/启发式搜索。
 - 适用:规划/组合优化/创作等分叉巨大场景(更慢更强)。
 
3.6 ReAct(Reason + Act)
- 做法:在链中交替“思考/行动/观察”,行动为检索/计算/代码执行等。
 - 价值:显著降低幻觉、提升可验证性。
 
3.7 PoT(Program‑of‑Thought)
- 做法:把可计算/可验证部分外包给执行器(Python/SQL/正则/公式引擎)。
 
4. 工程落地(最小可用)
4.1 统一输出协议(建议)
- 步骤:≤8 条、每条 ≤25 字;
 - 中间量:用 
k=v(如total=84); - 最终答案:单行 
最终答案:…; - 工具日志:
[tool=name, args=…, result=要点]。 
4.2 Prompt‑only(一次性调用)
prompt = ("指令:将以下文本改写为正式语气;只输出结果。\n""文本:明天开会准时到"
)
text = llm(prompt, temperature=0.2)
print(text)
4.3 CoT + 自一致性(单轮、多样采样→投票)
from collections import CounterFINAL = "最终答案:"def extract_final(s):i = s.rfind(FINAL)return s[i+len(FINAL):].strip() if i != -1 else s.strip().splitlines()[-1]def majority_vote(xs):cnt = Counter(xs)return cnt.most_common(1)[0][0]base = ("请一步一步推理,用要点式步骤列出关键中间过程;""最后用‘最终答案:’输出结论。\n""问题:一箱24瓶水,买3箱,另送半箱,共多少瓶?"
)
samples = [llm(base, temperature=0.8) for _ in range(8)]
answers = [extract_final(s) for s in samples]
winner  = majority_vote(answers)
print("Best Answer:", winner)
4.4 ReAct Agent(思考 ↔ 行动 ↔ 观察)
import re, jsonFINAL = "最终答案:"def tool_calculator(expr):assert re.fullmatch(r"[0-9\.\+\-\*\/\(\)\s]+", expr)return str(eval(expr, {"__builtins__": None}, {}))def tool_search(q):kb = ["引入第二供应商,降低单点故障","搭建接口适配层与契约测试,隔离外部 API 变更","关键路径加缓冲并滚动风险评审"]return json.dumps(kb, ensure_ascii=False)def react(task):trace = []if re.search(r"[0-9\+\-\*\/\(\)]", task):thought = "思考: 先用计算器得到表达式结果\n行动: calculator(expr=(24*3)+12)"obs = tool_calculator("(24*3)+12")trace.append((thought, obs))final = f"{FINAL}{obs}(依据:计算器)"trace.append((final, "done"))else:thought = "思考: 检索本地知识库拿到三条缓解措施\n行动: search(query=项目延误 缓解)"obs = tool_search("项目延误 缓解")trace.append((thought, obs))final = f"{FINAL}见要点(依据:检索)"trace.append((final, "done"))return trace
4.5 参数与实践建议
- 温度:CoT/SC 采样期 
0.6–1.0;最终敲定降温。 - k 值:SC 建议 
5–20;离线画 Reasoning@k 曲线。 - 链长:严格控制(≤8 步),强制“要点式”。
 
5. 评测与观测(把“更好”量化)
- 任务正确率:EM/Accuracy(算术/选择/抽取)。
 - Reasoning@k:k=1/5/10 的准确率曲线(验证多采样红利)。
 - 成本/时延:总 tokens、平均链长、P95、工具次数。
 - 稳定性:同题多次答案一致度(可用 κ 值)。
 - 可解释性:是否覆盖关键中间量(等式/单位/证据要点)。
 - 观测日志:
prompt_hash / temperature / steps / FINAL / tokens / tool_calls / duration。 
6. 安全与风控
- Prompt/检索注入:模板化输入、参数白名单、危险指令拦截(如“忽略所有指令”)。
 - 代码/SQL 沙箱:CPU/内存/IO/网络/时长限制;只读凭据与最小权限。
 - 数据合规:脱敏、分级;对外只展示“要点依据”,完整链留内部审计。
 
7. 选型与架构(三问决策)
- 需要外部信息/执行吗? 需要 → Agent(ReAct/PoT)。
 - 多步推理且要依据吗? 是 → CoT(+ SC/LtM/ToT)。
 - 时延/成本敏感吗? 敏感 → Prompt‑only 或短链 CoT。
 
8. 提示词模板库(可直接复制)
8.1 通用 CoT(零样本)
你是一个严谨的解题助理。请一步一步推理,用“要点式步骤”列出关键中间过程;
最后用“最终答案:”给出结论。若涉及计算,请给出等式并做单位/数量级检查。
问题:{...}
8.2 Least‑to‑Most(拆解)
先把问题分解为 3–5 个更小的子问题(编号列出);逐一给出中间结论;
最后合并这些结论,输出“最终答案:……”
8.3 自一致性(系统/调用侧)
系统:对同一问题生成多份“思路各不相同”的解答草稿(≥5 份)。
解码:temperature=0.8, top_p=0.9, n=8
8.4 ReAct(推理 + 行动)
采用“思考/行动/观察”的循环:
- 思考:说明需要的信息或验证点(1–2句);
- 行动:检索/计算/代码执行(描述动作与参数);
- 观察:记录关键结果(要点式);
重复以上直到可以下结论;最后输出“最终答案:……(并列出用到的关键信息要点)”。
8.5 结构化输出(JSON)
请按以下 JSON 输出:
{"steps": ["要点1", "要点2", "要点3"],"final_answer": "..."
}
问题:{...}
9. 代表性案例
9.1 算术
- 题目:一箱 24 瓶水,买 3 箱,另送半箱,共多少瓶?
 - 步骤要点:72 + 12 = 84。
 - 最终答案:84。
 
9.2 SQL 边界
- 问题:
WHERE status='ACTIVE' AND updated_at >= '2025-10-01'查不到。 - 排查链:
- 列类型是否含时间;
 - 边界写法是否应 
00:00:00; - 字符串解析格式;
 EXPLAIN看索引命中。
 
9.3 阅读整合
- 任务:三段材料提到“延误原因/缓解措施/新发布日期”,请汇总。
 - 输出:三类要点表格 + “最终答案:2025‑12‑15”。
 
10. 常见坑与 FAQ
- 链越长越好? 不是。控制 ≤8 步,聚焦关键中间量。
 - 有了 CoT 还会算错? 会。可计算的交给 PoT/执行器;加“验算步”。
 - Agent 一定更强? 不一定。无外设需求时,纯 CoT 更省更稳。
 - 提示词万能? 不是。质量受模型与编排上限约束,提示工程是“锦上添花”。
 
11. Roadmap:训练与蒸馏(可选)
- 数据格式:
{"input": 问题, "rationale": 步骤文本, "output": 答案}。 - 蒸馏:用大模型生成 
rationale+output,筛错链后监督小模型(SFT/LoRA)。 - 实践:步骤短而关键(等式/检查点/证据要点),可结构化(JSON)。
 
12. 附录:最小示例目录
cot-prompt-agent-starter/
1) README.md
2) requirements.txt
3) common/3.1) llm.py3.2) utils.py
4) prompt_only/main.py
5) cot_sc/main.py
6) agent_react/main.py
7) data/knowledge.json
8) examples/8.1) arithmetic.json8.2) decision.json
13. 理论加餐:原理、机制与边界
13.1 生成模型视角:显式/隐式“理由变量”
- 将模型看作条件分布 p_theta(y, r | x),其中:
- x:输入;r:理由/步骤(rationale);y:最终答案。
 
 - Prompt-only 近似 argmax_y p(y|x)。
 - CoT 等价于先考虑 r 再生成 y:argmax_{y,r} p(y,r|x)。
 - 自一致性(Self-Consistency)相当于在不同 r 上做多样采样,再对 y 多数表决,近似边缘化 r。
 - 过程监督(Process Supervision)显式优化 r 的质量;结果监督(Outcome Supervision)只看 y 的正误。
 
直觉:当一条答案可以由多种正确思路到达时,对 r 进行多样化采样/搜索能提升稳定性与上界。
13.2 搜索即推理:把 CoT 看成在“思路空间”的搜索
- 单链 CoT:在一条路径上贪心或采样展开(近似深度优先)。
 - Tree-of-Thoughts:在关键节点分叉(控制宽度与深度),用启发式或打分函数筛选。
 - Self-Consistency:在不同随机种子/温度下重复独立搜索,最后聚合。
 - ReAct/Agent:搜索过程中允许外部行动(检索/计算/API),将观察结果反馈到搜索状态。
 
13.3 何以有效:三条机制
- 解耦复杂性:把 x -> y 的复杂映射分解为可验证的子映射 x -> r1 -> … -> rk -> y。
 - 错误可见性:中间量可被校验(单位、等式、引用),便于纠错与回退。
 - 多样性增益:不同 r 提供解空间覆盖,投票或打分减少偶然误差与幻觉。
 
13.4 何时无效或负效
- 短路任务(答案显然/模式化强):链条只会增加冗余与成本。
 - 不可验证子步(主观创作/价值判断):长链未必更好,可能合理化幻觉。
 - 分解失配:错误的任务分解会放大错误(garbage in, garbage out)。
 
13.5 忠实性 vs 似然性(Faithfulness vs Plausibility)
- 忠实性:步骤是否真实反映了可复现实证的推断过程。
 - 似然性:步骤读起来是否合理顺滑。
 - 风险:CoT 可能产出“看似有理但不真实”的解释。工程上用执行器/校验器/可追溯证据提升忠实性。
 
13.6 长度偏置与成本控制
- 长度-似然耦合:更长输出可能把概率质量摊薄,稳定性下降;也可能用填充语掩盖错误。
 - 控制策略:
- 明确步数上限与“要点式”格式;
 - 要求结构化中间量(k=v、JSON);
 - 设定停止条件/早停(达到置信阈值即收敛)。
 
 
13.7 训练范式:理由蒸馏与过程奖励
- 理由蒸馏:用强模型或人工标注的 r 微调小模型,移植“会想”的分解风格。
 - 过程奖励/验证器:训练逐步判别器或规则集合,对中间步骤评分,引导搜索与生成。
 - 混合监督:结果监督 + 过程监督;离线生成候选步骤,在线筛选、打分、再训练。
 
13.8 校准与不确定性
- 答案层不确定性:自一致性投票分布的熵可作为置信度近似。
 - 步骤层不确定性:
- 关键等式/事实做重复独立求解并比较一致度;
 - 证据的引用覆盖率与一致性(是否自相矛盾)。
 
 - 阈值策略:低置信度时自动触发 ToT、再检索或升级模型。
 
13.9 错误分解与调优路径
- 检索错(拿错材料)→ 强化检索/过滤;
 - 计算错(口算/逻辑差)→ 交给 PoT/执行器;
 - 编排错(停不下来/选错工具)→ 策略、停止条件、限流与熔断;
 - 表达错(指令误解/格式不符)→ 收紧 Prompt 协议与单测。
 
13.10 安全与合规的边界
- 信息暴露:完整链可能泄露敏感推断或策略;对外只展示要点依据与可验证结果。
 - 对抗样本:攻击者可借链条注入错误先验;需模板化输入、参数白名单与沙箱。
 - 可审计性:保留思考/行动/观察日志(脱敏、分级)。
 
13.11 何时选 CoT、ToT、ReAct(理论视角)
- 可分解且可验证、无需外设 → CoT + 自一致性(近似边缘化理由)。
 - 分叉巨大/全局规划 → ToT(在思路空间显式搜索与剪枝)。
 - 需要事实/计算/接口 → ReAct/PoT Agent(推理=搜索,行动=外部干预/计算)。
 
13.12 实操清单(把理论落到规范)
- 为任务定义可验证的中间量与停机条件。
 - 统一输出协议(步数上限、JSON/要点式、“最终答案:”标签)。
 - 以 SC/ToT/Verifier 作为求精层;把计算交给 PoT。
 - 设不确定性阈值:自动升配搜索/模型/检索;低置信度时输出“部分答案 + 待验证”。
 - 对外展示依据而非长链全文;内网保留完整可审计日志。
 
