模式矩阵 /模式白皮书/F1

F1 · Generator-Critic · 生成-批评

字段
双轴坐标 反思 Reflection × 循环 Loop(转)
成本档 ②(2-4× 单次调用)
课程对应 06-02
目录归属 全集 33 模式之一 · 反思模块 4 模式之一
一句话 一个 agent 内置两个角色,Generator 写、Critic 评,循环改进直到 critic 通过或达到迭代上限。

它解决什么问题

主观判断密集的任务没有标准答案,只有质量谱系——写作、设计、代码风格、产品文案、学术摘要都属于这一类。便宜模型第一次往往写不到位,但人类作家写完文章会回头读三遍,每读一遍改一遍,到边际收益降下来就停笔。这个"自己回看、自己改进"的能力是输出质量的关键,单次生成拿不到。

Generator-Critic 把这个流程编码进 agent:generator 写初稿,critic 回看挑问题,generator 拿着反馈再改,循环到 critic 满意或触及迭代上限。它是反思模块里最简的工程实现,2023 年 Reflexion 论文奠定,到 2026 年仍是反思模式的工业基线——Self-Refine 在 7 个任务上平均拿到约 20% 的绝对提升,且不需要训练数据。

为什么坐标是「反思 × 循环」

核心机制

一个 Generator-Critic 闭环由三段组成:

  1. 生成:generator 产出初稿。这一步用什么模型决定了 critic 要补多少。
  2. 批评:critic 评估当前输出,产出结构化判决(issues 列表 / severity / 一个显式的 no_changes_needed 字段)。Reflexion 论文的关键创新是 critic 产出自然语言 reflection 文本而非单纯打分,告诉 generator 哪里错、为什么错、下次怎么改。
  3. 改进:generator 拿着 critique 重写。然后回到第 2 步,直到 critic 通过或迭代触底。

critic 的可靠性是整个闭环的命门。它的来源按可靠性递增分三类,选哪一类取决于任务有没有 deterministic 信号:

Critic 类型 适用场景
Self-Critic(同模型反向 prompt) 主观任务、无外部验证信号,最简但有同源盲区
Cross-Model(不同 vendor 的模型评) 需要打破单模型偏见,跨族系视角
External-Grounded(test / schema / 引用库验证) 任务有 deterministic 信号,最可靠

适合的生产场景

容易出错的地方

关键指标

最小骨架

output = generator(task)
for i in range(MAX_ITERATIONS):       # MAX=3, Aider 同源熔断
    if external_critic:               # 有 deterministic 信号优先
        critique = external_critic(task, output)
    elif multi_critic:                # 多角色并行 + 仲裁
        critique = merge(critic(task, output, role=r) for r in roles)
    else:
        critique = critic(task, output)
    if critique.no_changes_needed:    # 合法出口, 防 phantom issue
        return output, "converged"
    output = generator(task, previous=output, feedback=critique)
return output, "max_iterations_reached"   # 触底转 HITL

四个工程要点:critic prompt 必须明示 no_changes_needed 是合法选项;有 test/schema/引用库等 deterministic 信号时优先走 external critic;max_iterations 不要随便调大,3 是经验上的最优;完整 history 留档作为 critic calibration 的源数据。

企业落地一例

一家学术出版社的论文摘要润色 Agent,第一版用单 prompt 完成("请优化这段摘要"),线下评测平均编辑评分 8.2/10。第二版加了 Generator-Critic 循环("写完自己 review,找 3 个改进点再优化"),平均分反而掉到 7.4——复盘 trace 发现 critic 在过度修改,把简洁摘要改写成冗长版,三个 issue 全是虚构的。第三版改了三件事:critic prompt 加"已写好就输出 no changes needed",phantom issue 率从 16.3% 降到 7%;引入 3 角色 multi-critic(学术严谨性 / 简洁性 / 术语准确度)并行评后仲裁,其中术语 critic 是 external-grounded,查引用数据库验证摘要里的 cite 是否真实存在;每周抽 50 条 critic 输出对比专家判断校准 prompt。修完平均分升到 8.9,比第一版基线高 0.7,代价是单次 token 成本涨 2.8 倍。摘要属于 high-stake 内容,这笔账划算。

与其他模式的关系

一句话记住它

Generator-Critic 的本质不是"加一个评审",而是把"评估比生成简单"这条软件工程几十年的不对称性显式化——让同一个模型用"易"(评估)反过来约束"难"(生成)。


本页属于 ADPS 33 模式白皮书。返回 模式矩阵与白皮书目录, 或查看配套 可运行代码目录