Self-Refine

prompt提示词2026年6月7日2

Self-Refine(Madaan et al., 2023)是什么

Self-Refine(自我精炼/自我迭代改进)是一种迭代式提示框架:模型先给出初稿,然后由同一个模型对初稿提出“反馈”(找问题、提改进点),再根据这些反馈生成“改进稿”。如此循环,直到满足停止条件(例如迭代次数到上限、质量达标、改动变小等)。

它通常包含三个角色/步骤(不一定要分角色实现,但逻辑上分三步):

  1. Draft(初稿):对任务给出第一版答案
  2. Feedback(反馈):对初稿进行批判性评审(缺点、错误、遗漏、结构、可读性、边界条件等)
  3. Refine(精炼):根据反馈产出改进版,并可附“改了什么”

与 Self-Calibration 的差异:

  • Self-Calibration 重点是“这答案对不对/我有多确定”(用于接受/复核路由)
  • Self-Refine 重点是“在同等信息下把答案变得更好”(用于提升质量:正确性、清晰度、完整性、可执行性等)

适合的应用场景

  1. 生成类任务(提升结构、表达、覆盖面)
  • 写邮件、方案、文案、摘要、报告、PRD、周报、面试回答等
  1. 推理/解题类任务(减少遗漏、纠正粗心)
  • 需要多步分析的问题、案例分析、决策对比(但不保证绝对正确)
  1. 代码与工程输出
  • 代码改进、补充边界处理、添加注释、生成单元测试、重构可读性
  1. 需要遵循复杂约束的输出
  • 指定格式、风格、字数、包含/不包含项、合规要求等(迭代更容易“贴齐”约束)

不适合的应用场景(或需要配合其他方法)

  1. 强事实正确性要求且不能容错
  • Self-Refine 可能“越改越像真的”,但事实仍错。事实题建议结合 RAG/引用来源/外部校验。
  1. 成本敏感、延迟敏感的场景
  • 多轮迭代会增加 token 与时间。需要设定“迭代上限/停止条件”。
  1. 输入信息不足的问题
  • 迭代可能只是在“编得更圆”。这类任务应先触发“澄清问题”或检索补信息。
  1. 模型会沿错误前提滚雪球
  • 初稿若核心假设错,后续反馈可能没抓到,导致错误被“精炼强化”。可引入:多样化评审角度/外部评审/工具验证。

提示词怎么写(可直接套用)

基本迭代模板(单模型循环)

你可以每轮固定两段提示:

(1) 反馈 Prompt(Critique)

  • 输入:任务 + 当前答案
  • 输出:按清单指出问题与可执行改进建议(不要重写全文)

(2) 精炼 Prompt(Refine)

  • 输入:任务 + 当前答案 + 反馈
  • 输出:改进后的答案(可要求“保留优点”“对照修改点”“严格满足约束”)

停止条件建议(工程上很重要)

  • 达到 max_steps(如2~5轮)
  • 反馈中“严重问题数”≤阈值
  • 新旧版本差异很小(改动率低)
  • 满足硬性验收清单(格式/字段齐全/长度/测试通过)

至少3个中文实战例子(完整写法)

例子1:写一封中文商务邮件(生成任务)

任务:给客户解释延期并给出新交付计划,语气专业克制。

第1步 Draft Prompt:

你是项目经理。请给客户写一封中文邮件,说明项目交付将延期一周,原因是关键依赖组件测试未通过。
要求:语气专业、承担责任、给出新时间表、提出补救措施、最后邀请对方确认。字数200-300。

第2步 Feedback Prompt:

请对下面这封邮件进行“可执行反馈”,从以下维度指出问题并给出改进建议:

  1. 是否清晰说明延期原因且不过度技术化
  2. 是否提供明确新时间表与里程碑
  3. 是否有补救措施与风险控制
  4. 语气是否得体(不甩锅)
  5. 是否有明确的下一步与对方需要确认的事项

只输出条目化反馈(最多10条),不要重写邮件。

邮件正文:
{粘贴Draft输出}

第3步 Refine Prompt:

请根据以下反馈改写邮件,保留原邮件中有效信息,但必须逐条落实反馈里的关键建议。
输出为最终邮件正文(含称呼与落款占位符)。

原邮件:{粘贴Draft}
反馈:{粘贴Feedback}

(可再循环1-2轮)


例子2:把一段说明改成“结构化操作指南”(生成+约束)

任务:把散文式描述变成可执行的SOP。

Draft Prompt:

请把下面这段描述改写为“新人可执行的SOP操作指南”。
输出格式固定:

  • 目的
  • 适用范围
  • 前置条件
  • 步骤(编号1..n,每步不超过2句)
  • 常见错误与排查(至少5条)

原始描述:
{粘贴原文}

Feedback Prompt:

你是SOP审稿人。请检查该SOP是否:

  • 步骤可操作、无跳步
  • 术语定义清楚
  • 前置条件完整
  • 排查项具体

输出:

  1. 严重问题(必须改)
  2. 一般问题(建议改)
  3. 缺失信息清单(需要向作者追问的问题)

Refine Prompt:

根据审稿反馈,输出修订后的SOP。
额外要求:

  • 若存在“缺失信息”,请在SOP中用【待确认】标注,并在末尾列出“需要确认的问题”。

原SOP:{当前版本}
审稿反馈:{反馈}


例子3:代码生成与改进(coding)

任务:写一个函数并在迭代中补齐边界与测试。

Draft Prompt:

用Python实现:给定一个字符串s,返回最长不含重复字符的子串长度。
要求:

  • 时间复杂度O(n)
  • 给出函数与简要解释
  • 给出3个示例输入输出

Feedback Prompt:

请作为代码审查员,对下面代码做反馈:

  • 正确性:是否覆盖空串、全重复、含空格/特殊字符等
  • 复杂度:是否O(n)
  • 可读性:变量命名、注释
  • 测试:是否足够、是否覆盖边界

输出:

  1. 可能的bug/逻辑风险点(条目化)
  2. 需要补充的最小单元测试用例(至少8个,给出输入与期望输出)
  3. 重构建议(若有)

代码:
{粘贴Draft代码}

Refine Prompt:

请根据审查反馈改进代码:

  • 修复潜在问题
  • 补充必要注释
  • 给出完整的单元测试(pytest风格或简单assert均可)

原代码:{Draft代码}
审查反馈:{Feedback}


例子4:推理/分析题(让“反馈”更像检查清单)

Draft Prompt:

请分析:一家SaaS公司过去3个月流失率上升,可能原因有哪些?给出排查优先级与建议动作。
要求:分“假设-证据-动作”,最多500字。

Feedback Prompt:

请对上述分析做“反例驱动”的反馈:

  • 哪些结论缺乏证据支撑?
  • 哪些关键变量被遗漏(如渠道、定价、产品故障、竞品等)?
  • 排查优先级是否合理?
    输出不超过12条,每条包含“问题+改进建议”。

Refine Prompt:

根据反馈,输出改进版分析,并新增一段:

  • “一周内可执行的最小排查计划”(按天列出要拉的报表/要访谈的人/要验证的假设)

小结:Self-Refine 的关键成功要素

  • 反馈要可执行:用检查清单/评分维度,不要泛泛“写得更好”。
  • 精炼要绑定反馈:要求“逐条落实”,必要时输出“改动对照表”。
  • 要有停止条件:2-4轮往往就有明显提升,继续迭代收益递减。
  • 事实/代码要配外部验证:Self-Refine 提升质量,但不能替代检索与测试。

如果你告诉我你最想落地的任务类型(写作/代码/客服/数据分析/知识问答),我可以给你做一套“可直接放进产品”的 Self-Refine 提示词链(含停止条件与字段化输出)。