AgentDepthAgent 工程学习指南
输入概念或问题,检索正文和待编写目录。
第一次学习?从 L0 总览开始 →

Reflection:对照资料检查并修订结果

我的学习 →

正在读取学习记录…

1. 什么是结果复核

Reflection 是在初稿形成后,检查结果,再根据检查意见修订。一次复核需要原稿、检查依据、检查结果。答复写“14天内申请退款”,政策写“7天内提交”,检查器就能指出期限差异,修订器再改为7天。

可以把它理解成编辑改稿:作者写完,编辑对照事实和要求看一遍,再给具体意见。“第2句的期限与政策不同”比“再写好一点”更容易执行。

初稿14天与政策7天进入检查器,产生期限差异,修订为7天后再检查
先对照原稿与资料,再修订,再次检查两者是否一致。

Agent 可以用程序检查数字、字段和格式,用模型或人工检查表达与遗漏。研究中的 Reflexion还会保存反馈供后续尝试使用。先把一次初稿、复核、修订之间的数据流理解清楚,就容易看懂这些扩展。

2. 运行一次有依据的修订

先在 PowerShell 创建并进入学习目录:

Bash
mkdir "F:\学习\l3-reflection" -Force
cd "F:\学习\l3-reflection"

保存下面的文件后,在这个终端运行 dir 核对文件名,再执行本节给出的运行命令。

在新文件夹创建 reflection.py,写入完整代码:

先在 PowerShell 创建并进入学习目录:

Bash
mkdir "F:\学习\l3-reflection" -Force
cd "F:\学习\l3-reflection"

保存下面的文件后,在这个终端运行 dir 核对文件名,再执行本节给出的运行命令。

Python
"""对照资料检查答复中的退款期限,并做有依据的修订。"""
import json

def review(draft, evidence):
    # evidence 是查到的资料;缺少资料时先补充查询。
    if evidence is None:
        return ["需要退款政策资料"]
    issues = []
    if draft["days"] != evidence["days"]:
        issues.append("期限与资料不符")
    if draft["source"] != evidence["source"]:
        issues.append("引用来源与资料不符")
    return issues

def revise(draft, evidence):
    # 创建新答复,保留原稿,方便比较修订前后的变化。
    if evidence is None:
        return dict(draft)
    return {"days": evidence["days"], "source": evidence["source"]}

if __name__ == "__main__":
    draft = {"days": 14, "source": "policy"}
    evidence = {"days": 7, "source": "policy"}
    print(json.dumps({"issues": review(draft, evidence)}, ensure_ascii=False))
    corrected = revise(draft, evidence)
    print(json.dumps({"answer": corrected, "issues": review(corrected, evidence)},
                     ensure_ascii=False))
Bash
ls
python reflection.py

输出:

TXT
{"issues": ["期限与资料不符"]}
{"answer": {"days": 7, "source": "policy"}, "issues": []}

第一行列出初稿的问题。第二行展示修订稿及复核结果,空的 issues 列表表示这两个字段已经与当前资料一致。

review 先判断资料是否存在,再分别比较期限和来源。revise 创建新字典,保留原稿,方便比较改前改后。原稿和修订稿分别存储,也有利于人工审核。

3. 改动期限和来源

把原稿的14改成7,第一行会变为 {"issues": []}。恢复14,再把来源改成 "other",会出现期限和来源两个问题。运行后对照列表中的问题。

最后把 evidence 改为 None,表示政策资料尚未查到。每次保存后运行 python reflection.py,检查意见变为“需要退款政策资料”,修订器保留原稿。下一步先查询资料或请人提供依据,等取得依据后再比较。观察结束后恢复原稿14天、来源policy和7天资料,再运行核对原输出。

4. 保留检查用例

同一目录创建 test_reflection.py:

下面的测试检查草稿与资料的差异,以及修订后能否与证据一致。

测试代码:test_reflection.py
Python
"""检查reflection示例的正常路径和边界结果。"""
import unittest
from reflection import review, revise
class Tests(unittest.TestCase):
    def test_fix(self):
        draft={"days":14,"source":"policy"}
        self.assertEqual(review(draft, {"days":7,"source":"policy"}), ["期限与资料不符"])
        self.assertEqual(revise(draft, {"days":7,"source":"policy"})["days"],7)
    def test_missing(self):
        self.assertEqual(review({"days":7,"source":"policy"}, None), ["需要退款政策资料"])

if __name__ == "__main__":
    unittest.main()
Bash
python -m unittest test_reflection -v

测试同时检查正常路径和改变条件后的结果。遇到导入错误时,先核对两个文件是否在同一目录;遇到断言失败时,比较预期值和实际值,再回到相应分支。

5. 为不同问题选择检查依据

检查目标检查依据检查方式
退款期限是否相同当前政策字段程序比较数字
是否回答金额问题用户问题和答复规则或模型检查
引用是否支持结论原文片段及位置资料对照
解释是否易读句子与读者背景编辑试读
退款是否到账支付回执和状态查询业务查询

检查器需要输入。只给初稿,能做措辞和内部一致性检查;核对外部事实时,需提供当前资料。若政策更新为14天,先更新查询结果,再检查原稿。资料还可保存文件编号、段落位置和版本,帮助读者回查。

6. 控制复核次数与反馈质量

一轮修订后仍有问题,可以再复核一次,同时比较问题是否减少。连续两轮意见相同,就检查修订器是否读取了意见、资料是否缺失。可设置“检查通过、达到预算、重复无进展”三个出口。编辑改稿也要下班,循环一样需要出口。

模型检查意见适合返回具体字段、原值、建议值和依据。程序先验证建议格式,再应用修订,保留改前改后版本。低风险文字整理可以自动复核;金额、权限和写入结果更适合明确字段校验与业务确认。

沿两轮检查,看每个字段怎样变化

时刻原稿期限资料期限检查意见下一动作
初稿形成147尚未检查执行review
第一轮复核147期限与资料不符执行revise
修订形成77尚未再次检查执行review
第二轮复核77空列表返回修订稿

这个表里的数字来自同一份输入。复核器先读取原稿与资料,比较后产生意见;修订器读取资料,构造新结果。把检查意见和修订稿分别保存,可以发现“有意见但稿件没改”的程序问题。

增加检查字段时,要先明确依据。假如答复还包含退款金额,可以让资料提供amount,再比较两个数。语气友好则没有唯一数值,可列出可观察要求,例如先回答期限、再说明例外,最后给查询入口。把要求写具体,人工和模型检查才容易达成一致。

如果两份政策冲突,先整理来源与适用时间,再确定当前订单使用哪份;多做几轮语言改写无法解决资料选择。此时复核的产物可以是“待核对的差异列表”,等待有权限的人确认依据。

回顾与下一步

准备依据,检查差异,按意见修订,再次核对。下一篇 终止条件把复核的出口与整个任务的停止规则连接起来。

课后练习展开习题收起习题

4 道练习 · 客观题规则评分 · 其余题目待批改

正在读取本地记录…

不调用模型,不执行代码。简答、代码和场景题仅保存答案并展示自查标准,不生成评分、徽章或认证。输入内容不会自动保存,请点击提交;不要填写个人信息或密钥。

练习 1 / 4 · v1.0.1

选择题 · 先判断边界

关于“Reflection 与结果复核”,哪种做法更稳妥?

对应知识点:L3-reflection

选择一个答案
练习 2 / 4 · v1.0.0

简答题 · 解释失败

写出一个失败输入并说明记录字段。

对应知识点:L3-reflection

练习 3 / 4 · v1.0.0

代码题 · 边界测试

补充正常、边界、失败三组输入和预期结果。

对应知识点:L3-reflection

练习 4 / 4 · v1.0.0

场景题 · 结果未知

证据不足时如何设计状态和人工接管?

对应知识点:L3-reflection

图片查看器
100%

文章配图 · 按 Esc 关闭