面试知识库
困难

Reflection与自我修正模式#

一句话答案#

Reflection 让 Agent 在生成后增加一步”自我批判→修正”的闭环,用额外的推理换质量,是 ReAct 之外最重要的 Agent 设计模式;核心是控制反思轮数与触发条件,避免”越改越差”和成本失控。

核心要点

1. 为什么需要反思#

LLM 单次生成是”一次过”的,没有回看机会。复杂任务(代码、推理、长文)首版常有错。反思的本质:把”生成”和”评判”拆成两个角色,用第二次推理发现第一次的错误——类似人写完代码自己 review 一遍。

2. 三种主流反思模式#

模式机制适用
Self-Refine同一模型:生成→自评→按反馈重写,迭代 N 轮文本/代码润色
Reflexion引入外部反馈(测试结果/工具报错)→ 写入记忆 → 下次重试规避有可验证信号的任务(代码、游戏)
Generator-Critic生成器与批判器分离(可不同模型/Prompt),批判器只挑错质量要求高、可双模型

3. 反思闭环结构#

生成初版 → Critic 评判
  ├── 通过(达标)→ 输出
  └── 不通过 → 产出具体反馈(哪里错、怎么改)
       → Generator 按反馈重写 → 再次评判(轮数 +1)
  终止条件:达标 / 轮数上限 / 收益递减
plaintext

关键:反馈必须具体可执行(“第 3 步计算溢出”),而非”再想想”——模糊反馈会让模型原地打转。

4. 终止条件与”越改越差”#

  • 硬上限:max_reflect_rounds 通常 1–3 轮,收益随轮数快速衰减
  • 外部信号优先:能跑测试/编译就用客观信号判停,比让 LLM 自评可靠
  • 防退化:保留每轮版本与评分,最终取最高分版本而非最后一版(反思可能把对的改错)
  • 短路:首版置信度已高(如 rerank top1 ≥ 0.85)直接跳过反思省成本

5. 成本与质量的权衡#

反思是”花 token 买质量”:每轮额外 1 次生成 + 1 次评判 ≈ 2–3 倍调用。落地常用分级反思——简单请求不反思,高价值/高风险请求才开,并用便宜模型做 Critic、贵模型做 Generator。

面试回答(2分钟版)

Reflection 是让 Agent 生成之后再自我批判、修正的设计模式,本质是把”生成”和”评判”拆成两个角色,用第二次推理发现第一次的错误,类似人写完代码自己 review。主流有三种:Self-Refine 是同一个模型自评自改迭代;Reflexion 是引入外部反馈比如测试结果或报错信息,写进记忆下次重试规避;Generator-Critic 是生成器和批判器分离,可以用不同模型。闭环结构是生成初版→Critic 评判→不达标就产出具体反馈→按反馈重写→再评判,直到达标或到轮数上限。落地有几个关键点:第一,反馈必须具体可执行,“第三步计算溢出”这种,模糊反馈会让模型原地打转;第二,能用客观信号判停就别让 LLM 自评,比如代码能跑测试;第三,要防”越改越差”,保留每轮版本和评分最后取最高分而不是最后一版,因为反思可能把对的改错;第四,反思是花 token 买质量,每轮大概 2-3 倍成本,所以要分级——简单请求不反思,高价值请求才开,还可以用便宜模型做 Critic、贵模型做 Generator。

追问与易错

追问方向:

  • 反思一定能提升质量吗?什么时候反而变差? → 不一定。当模型本身能力不足以发现错误时,反思只是”自信地重复错误”;且反思可能把正确部分改错。所以要保留版本取最高分、优先用外部客观信号,而非无条件信任自评
  • Critic 用同模型还是换模型? → 同模型成本低但有”自我盲区”(看不出自己的错);换模型或换 Prompt 视角能提升发现率。生产中常用便宜模型做 Critic 控成本,关键任务用强模型做 Critic
  • 反思轮数怎么定? → 经验值 1–3 轮,收益快速衰减。最好不是固定轮数,而是按”评分提升幅度 < 阈值”或”客观信号达标”动态判停
  • 和 ReAct 的关系? → 正交:ReAct 是”思考-行动-观察”的执行循环,Reflection 是对结果的质量回环。可叠加——ReAct 跑完一轮后用 Reflection 评判要不要重新规划

易错点:

  • ❌ “反思轮数越多越好” → 收益递减且成本线性增长,2 轮后多半浪费
  • ❌ “让 LLM 自己说 OK 就停” → 自评会过度乐观,能用测试/编译/规则就用客观信号
  • ❌ “取最后一版输出” → 反思可能退化,应取历史最高分版本

项目实践(DocMind): DocMind 的 Self-Reflection 用”70% 高分短路”控制成本——当 rerank top1 ≥ 0.85 且候选 ≥ 3 时,认为检索质量足够好,直接跳过反思,省掉一次 LLM 调用;只有低置信度查询才进入反思评判答案是否被证据支撑(Faithfulness)。Critic 类任务用便宜的 qwen-turbo,生成用 qwen-plus,模型级联让单次成本降 28%。