Reversing Chain-of-Thought

prompt提示词2026年6月7日1

Reversing Chain-of-Thought (RCoT)(Xue et al., 2023)是什么

RCoT(反向思维链)是一种“先反推问题、再对比一致性、再据此修正答案”的自检框架,用来发现模型答案里潜在的漏条件、错条件、偷换概念、单位/约束不一致等问题。

它的核心流程通常是三段(可迭代):

  1. Answer(正向生成答案)
    模型先对原问题给出答案 A(可以含推理,也可以只给结论)。

  2. Reverse(基于答案反推/重构问题)
    让模型“假设这个答案是对的”,反过来写出一个“它实际上解决的题目/前提/约束”——记为重构问题 Q’。
    直观理解:模型在“解释自己到底回答了什么问题”。

  3. Compare → Feedback → Revise(对比→反馈→修正)
    把原问题 Q 与重构问题 Q’ 做细粒度对比:

    • 哪些条件在 Q 里有、Q’ 里没有(遗漏)
    • 哪些条件在 Q’ 里出现但 Q 没有(擅自添加)
    • 数值、单位、范围、对象是否一致
    • 输出要求(格式/步骤/边界)是否一致
      将不一致转成可执行反馈,再让模型据此修订答案 A → A2。必要时可再循环一轮。

和 Self-Refine / Self-Calibration 的区别

  • Self-Refine:先批评再改进(反馈不一定来自“问题重构对比”)
  • Self-Calibration:更关注“对不对/有多确定”
  • RCoT:反馈的来源更“结构化”——来自 Q 与 Q’ 的一致性检查,尤其擅长抓“我答的其实是另一个题”。

适合的应用场景

  1. 容易“漏条件/改题”的推理题
  • 文字题、应用题、规则题、带多约束的规划题(时间、预算、范围、对象)
  1. 代码/算法题的规格一致性检查
  • 题目要求 O(n) 你却写成 O(n²)
  • 要求“忽略大小写/非字母数字/稳定排序”等细节被漏掉
  1. 生成任务中的硬性约束对齐
  • “必须包含A/B/C、不得出现D、字数限制、输出JSON字段齐全”等
    RCoT 能发现:你生成的内容实际满足的是“另一个更宽松/不同格式的题目”。
  1. 对安全/合规要求高的文本
  • 规则很细时,模型常“自作主张加内容”,对比能把这种偏移抓出来。

不适合的应用场景(或收益较小)

  1. 纯开放式创意任务
  • 例如写诗、脑暴:不存在明确“原题约束”,对比意义有限。
  1. 强事实题但缺少外部依据
  • RCoT 主要抓一致性,不保证事实真伪;事实正确性仍建议配合检索/RAG。
  1. 极短简单问题
  • “1+1=?”这类不需要额外链路,反而增加成本。
  1. 你不希望暴露推理过程时
  • RCoT 常涉及让模型输出重构与对比细节;在需严格隐藏中间过程的产品里,要做字段化、缩短输出或仅内部运行。

提示词写法(推荐的最小可用链路)

你可以用“三段式”固定模板:

Prompt 1:生成答案(Answer)

  • 只让它先产出 A(可要求简洁、含结论)

Prompt 2:反推重构问题(Reverse)

  • 给:原问题Q + 模型答案A
  • 要求输出:Q’(它实际上回答的题目/隐含条件)

Prompt 3:对比并产出反馈(Compare/Feedback)

  • 给:Q 与 Q’
  • 输出:不一致清单 + 可执行修正建议(不要直接重写答案)

Prompt 4:根据反馈修订答案(Revise)

  • 给:Q + A + 反馈
  • 输出:修订版答案 A2(最好要求“严格对齐原题所有约束”)

至少3个中文实战例子(可直接复制)

例子1:应用题/约束易漏(推理一致性)

场景:题目包含多个限制,模型容易忽略其一。

Prompt 1(Answer):

请解答下题并给出最终结论:
小李买苹果和香蕉共10个,其中苹果比香蕉多2个。苹果每个3元,香蕉每个2元,共花了多少元?
只输出:苹果个数、香蕉个数、总价。

Prompt 2(Reverse:重构问题Q’):

下面是原问题与一个答案。请“根据答案反推它实际上解决的题目”,写出一个尽可能明确的“重构问题Q’”,包含它隐含使用的条件(如数量关系、价格、总数等)。

原问题Q:小李买苹果和香蕉共10个,其中苹果比香蕉多2个。苹果每个3元,香蕉每个2元,共花了多少元?
答案A:{粘贴模型在Prompt1的输出}

输出:只输出重构问题Q’(一段话即可)。

Prompt 3(Compare/Feedback):

请对比原问题Q与重构问题Q’的差异,找出所有不一致,并转成“可执行反馈”。
输出格式:

  1. 遗漏条件(Q有但Q’没有)
  2. 擅自添加条件(Q’有但Q没有)
  3. 数值/单位/对象不一致
  4. 输出格式是否符合要求
    每条后面给出“如何修正答案”的具体建议。

Q:{粘贴原问题}
Q’:{粘贴重构问题}

Prompt 4(Revise):

请根据反馈修正你的答案。
要求:严格满足原问题Q的所有条件,并按“苹果个数、香蕉个数、总价”输出,不要额外解释。

Q:{原问题}
旧答案A:{旧答案}
反馈:{反馈}


例子2:代码题规格对齐(忽略/添加条件检查)

场景:题目规格很多:忽略大小写、忽略非字母数字、复杂度要求。

Prompt 1(Answer):

用Python实现函数 is_pal(s),判断字符串是否为回文:

  • 忽略大小写
  • 忽略所有非字母数字字符
    返回 True/False。
    请给出代码与2个示例。

Prompt 2(Reverse:反推规格Q’):

你将看到题目Q与代码答案A。请根据答案A反推:这段代码“实际满足的规格”是什么?写成一段“重构规格Q’”。

Q:判断字符串是否回文:忽略大小写;忽略所有非字母数字字符;返回True/False。
A:{粘贴代码}

输出:重构规格Q’(用条目列出:输入处理规则、比较方式、返回、边界行为)。

Prompt 3(Compare/Feedback):

对比Q与Q’,输出不一致清单,并给出修正建议。重点检查:

  • 是否真的忽略了非字母数字
  • 是否忽略大小写
  • 空字符串/全是符号时返回什么
  • 时间复杂度是否合理

输出:

  • 不一致点(逐条)
  • 对应修正建议(逐条、可执行)

Prompt 4(Revise):

根据反馈,给出修订版代码。
额外要求:补充至少6个边界测试用例(输入→期望输出),用assert表示。


例子3:生成任务的硬约束(格式/字数/必须包含项)

场景:模型很容易生成“看起来不错但不满足约束”的内容。

Prompt 1(Answer):

写一段中文产品介绍,要求:

  • 100到120字
  • 必须包含并仅包含一次关键词:“端到端加密”“零信任”
  • 语气面向企业客户
  • 结尾必须是一个问句
    请直接输出最终文案。

Prompt 2(Reverse:根据文案反推题目Q’):

下面给出原要求Q和你生成的文案A。请根据A反推出它实际遵循的写作要求(重构要求Q’)。

Q:100-120字;必须且仅一次包含“端到端加密”“零信任”;面向企业;结尾问句。
A:{粘贴文案}

输出:重构要求Q’(条目化)。

Prompt 3(Compare/Feedback):

对比Q与Q’,列出所有不一致,并给出可执行修改建议。
必须逐项检查:字数范围、关键词出现次数、语气对象、结尾是否问句。
输出格式:检查项 | 是否满足 | 证据(引用A中的片段) | 修改建议

Prompt 4(Revise):

根据反馈重写文案,必须一次性满足所有约束。只输出文案,不要解释。


实用小技巧(让RCoT更稳定)

  • 重构阶段要“描述它实际做了什么”:强调“按答案实际行为反推”,避免模型为了迎合原题而“假装一致”。
  • 对比阶段用检查清单表格:字段化输出(是否满足/证据/建议)能显著减少漏检。
  • 把反馈写成“可执行修改”:例如“把关键词‘零信任’只保留一次,删除第二处出现”。
  • 结合停止条件:如果对比显示“全部满足”,就停止;否则最多迭代2-3轮,避免成本失控。
  • 对事实正确性:配合检索:RCoT解决的是一致性,不是事实来源。

如果你告诉我你要落地的具体任务(例如:数学应用题批改、代码生成、营销文案合规、客服话术),我可以把RCoT链路改成更贴合的“字段化提示词+停止条件+自动化路由策略”。