反思架构是一种Agent工作模式,采用"生成->评估->改进"的多步内部独白机制,模仿人类"起草、审查、编辑"的过程。它通过结构化输出和角色分离,让LLM自我批评并改进输出,提升代码质量和逻辑严密性。文章详细介绍了其工作流程、应用场景、优缺点,并使用LangGraph实现了代码自动审查的完整示例,展示了如何将普通LLM转化为具备自我纠错能力的智能体。
**参考自:**all-agentic-architectures
- 什么是反思架构 (Reflection Architecture)?
反思架构是指 Agent 在向用户返回最终答案之前,先对其自身的输出进行批评(Critique)和修订(Revise)的一种工作模式。
- 核心机制:它摒弃了单次生成的模式,转而采用“生成 -> 评估 -> 改进”的多步内部独白机制。
- 类比:这模仿了人类在处理复杂任务时的“起草、审查、编辑”过程,旨在捕捉错误并提高最终输出的质量。
- 宏观工作流
该过程通常分为三个连续的阶段:
- 生成 (Generate)
Agent 根据用户的 Prompt 产出初稿或初步解决方案。 - 批评 (Critique)
Agent 切换角色成为“批评者”或“审查员”。它会进行自我反问,例如:
- “这个答案有什么问题?”
- “遗漏了什么关键信息?”
- “是否存在逻辑漏洞或代码 Bug?”
- 优化 (Refine)
利用在批评阶段获得的见解,Agent 对初稿进行修改,生成最终的改进版本。
- 应用场景与优缺点
3.1 典型场景
- 代码生成:充当 Code Reviewer,修复 Bug 并优化代码风格。
- 复杂摘要:查漏补缺,确保摘要的全面性和准确性。
- 内容创作:优化邮件或博客的语气、清晰度和感染力。
3.2 优缺点分析
| 维度 | 描述 |
| 优点 | 质量提升:通过自我修正,产出更准确、逻辑更严密的回答。低门槛:只需单个 LLM 即可实现,无需复杂外部工具。 |
| 缺点 | 自我局限:模型无法修复超出其知识边界的错误。延迟与成本:涉及多次 LLM 调用,响应更慢,成本更高。 |
- 环境配置与依赖安装
4.1 安装依赖
在 Jupyter 环境中运行:
%pip install langchain-openai langchain langgraph rich python-dotenv pygraphviz4.2 初始化配置
这里使用兼容 OpenAI 接口的模型(如阿里百炼 Qwen)。
import osimport jsonfrom typing import List, TypedDict, Optionalfrom dotenv import load_dotenv# LangChain 组件from langchain_openai import ChatOpenAIfrom pydantic import BaseModel, Fieldfrom langgraph.graph import StateGraph, END# 美化输出from rich.console import Consolefrom rich.markdown import Markdownfrom rich.syntax import Syntax# 加载环境变量load_dotenv()# 配置 LangSmith 追踪 (可选)os.environ["LANGCHAIN_TRACING_V2"] = "true"os.environ["LANGCHAIN_PROJECT"] = "Agentic Architecture - Reflection"# 初始化 LLMllm = ChatOpenAI( model="qwen-flash", # 这里使用 Qwen 模型 openai_api_key=os.environ["DASHSCOPE_API_KEY"], openai_api_base="[https://dashscope.aliyuncs.com/compatible-mode/v1](https://dashscope.aliyuncs.com/compatible-mode/v1)", temperature=0.1)console = Console()print("环境初始化完成。")- 构建核心组件
Reflection 架构依赖结构化数据来保证流程的稳定性。我们需要定义三个核心 Pydantic 模型。
5.1 定义数据结构 (Pydantic Models)
# 1. 初稿结构class DraftCode(BaseModel): """生成的初始代码草稿""" code: str = Field(description="解决用户请求的 Python 代码") explanation: str = Field(description="代码工作原理的简要解释")# 2. 评价结构class Critique(BaseModel): """代码自我评价""" has_errors: bool = Field(description="代码是否有潜在 Bug 或逻辑错误?") is_efficient: bool = Field(description="代码是否高效?") suggested_improvements: List[str] = Field(description="具体的改进建议列表") critique_summary: str = Field(description="评价总结")# 3. 终稿结构class RefinedCode(BaseModel): """优化后的最终代码""" refined_code: str = Field(description="最终的、改进后的 Python 代码") refinement_summary: str = Field(description="基于批评意见所做的更改总结")5.2 定义处理节点 (Nodes)
节点 1:生成器 (Generator)
def generate_node(state): console.print("--- 1. 生成初始代码 ---") generator_llm = llm.with_structured_output(DraftCode) prompt = f"""You are an expert Python programmer. Write a Python function to solve the following request. Provide a simple, clear implementation and an explanation. Request: {state['user_request']} """ draft = generator_llm.invoke(prompt) return {"draft": draft.model_dump()}节点 2:批评者 (Critic)
def critic_node(state): console.print("--- 2. 评价初始代码 ---") critic_llm = llm.with_structured_output(Critique) code_to_critique = state["draft"]["code"] prompt = f"""You are an expert code reviewer. Analyze the code for: 1. Bugs and Errors 2. Efficiency and Best Practices Code to Review: ```python {code_to_critique} ```""" critique = critic_llm.invoke(prompt) return {"critique": critique.model_dump()}节点 3:优化器 (Refiner)
def refine_node(state): console.print("--- 3. 完善代码 ---") refiner_llm = llm.with_structured_output(RefinedCode) draft_code = state["draft"]["code"] critique = json.dumps(state["critique"], indent=2) prompt = f"""Rewrite the original code implementing all suggested improvements. Original Code: ```python {draft_code} ```Critique: {critique} """ refined_code = refiner_llm.invoke(prompt) return {"refined_code": refined_code.model_dump()}- 使用 LangGraph 编排工作流
我们将节点连接成一个线性的图结构:Start -> Generator -> Critic -> Refiner -> End。
# 1. 定义图状态class ReflectionState(TypedDict): user_request: str draft: Optional[dict] critique: Optional[dict] refined_code: Optional[dict]# 2. 构建图graph_builder = StateGraph(ReflectionState)# 添加节点graph_builder.add_node("generator", generate_node)graph_builder.add_node("critic", critic_node)graph_builder.add_node("refiner", refine_node)# 定义边(流程走向)graph_builder.set_entry_point("generator")graph_builder.add_edge("generator", "critic")graph_builder.add_edge("critic", "refiner")graph_builder.add_edge("refiner", END)# 编译图reflection_graph = graph_builder.compile()# 可视化(需要 pygraphviz)try: from IPython.display import display, Image display(Image(reflection_graph.get_graph().draw_png()))except Exception: print("可视化依赖未安装,跳过绘图。")- 执行与评估
7.1 运行工作流
user_request = "Write a fast sorting function and a test case for it."initial_input = {"user_request": user_request}final_state = Noneprint(f"🚀 开始处理任务: {user_request}")# 流式运行以捕获最终状态for state in reflection_graph.stream(initial_input, stream_mode="values"): final_state = stateprint("✅ 工作流结束")7.2 量化评估 (LLM-as-a-Judge)
使用另一个 LLM 调用作为“裁判”,对比初稿和终稿的质量。
class CodeEvaluation(BaseModel): correctness_score: int = Field(description="逻辑正确性评分 (1-10)") efficiency_score: int = Field(description="算法效率评分 (1-10)") justification: str = Field(description="评分理由")judge_llm = llm.with_structured_output(CodeEvaluation)def evaluate_code(code: str): return judge_llm.invoke(f"Evaluate this Python code logic and efficiency (1-10):\n```python\n{code}\n```")# 执行评估if final_state and 'draft' in final_state and 'refined_code' in final_state: print("--- 初稿评分 ---") print(evaluate_code(final_state['draft']['code']).model_dump()) print("\n--- 终稿评分 ---") print(evaluate_code(final_state['refined_code']['refined_code']).model_dump())- 总结
本教程通过Reflection Pattern展示了如何将一个普通的 LLM 转化为具备自我纠错能力的智能体。核心在于:
- 结构化输出:使用 Pydantic 强制模型按格式思考。
- 角色分离:生成与评价解耦,模拟 Code Review 流程。
- 图编排:使用 LangGraph 清晰地定义状态流转。
AI时代,未来的就业机会在哪里?
答案就藏在大模型的浪潮里。从ChatGPT、DeepSeek等日常工具,到自然语言处理、计算机视觉、多模态等核心领域,技术普惠化、应用垂直化与生态开源化正催生Prompt工程师、自然语言处理、计算机视觉工程师、大模型算法工程师、AI应用产品经理等AI岗位。
掌握大模型技能,就是把握高薪未来。
那么,普通人如何抓住大模型风口?
AI技术的普及对个人能力提出了新的要求,在AI时代,持续学习和适应新技术变得尤为重要。无论是企业还是个人,都需要不断更新知识体系,提升与AI协作的能力,以适应不断变化的工作环境。
因此,这里给大家整理了一份《2025最新大模型全套学习资源》,包括2025最新大模型学习路线、大模型书籍、视频教程、项目实战、最新行业报告、面试题等,带你从零基础入门到精通,快速掌握大模型技术!
由于篇幅有限,有需要的小伙伴可以扫码获取!
1. 成长路线图&学习规划
要学习一门新的技术,作为新手一定要先学习成长路线图,方向不对,努力白费。这里,我们为新手和想要进一步提升的专业人士准备了一份详细的学习成长路线图和规划。
2. 大模型经典PDF书籍
书籍和学习文档资料是学习大模型过程中必不可少的,我们精选了一系列深入探讨大模型技术的书籍和学习文档,它们由领域内的顶尖专家撰写,内容全面、深入、详尽,为你学习大模型提供坚实的理论基础。(书籍含电子版PDF)
3. 大模型视频教程
对于很多自学或者没有基础的同学来说,书籍这些纯文字类的学习教材会觉得比较晦涩难以理解,因此,我们提供了丰富的大模型视频教程,以动态、形象的方式展示技术概念,帮助你更快、更轻松地掌握核心知识。
4. 大模型项目实战
学以致用,当你的理论知识积累到一定程度,就需要通过项目实战,在实际操作中检验和巩固你所学到的知识,同时为你找工作和职业发展打下坚实的基础。
5. 大模型行业报告
行业分析主要包括对不同行业的现状、趋势、问题、机会等进行系统地调研和评估,以了解哪些行业更适合引入大模型的技术和应用,以及在哪些方面可以发挥大模型的优势。
6. 大模型面试题
面试不仅是技术的较量,更需要充分的准备。
在你已经掌握了大模型技术之后,就需要开始准备面试,我们将提供精心整理的大模型面试题库,涵盖当前面试中可能遇到的各种技术问题,让你在面试中游刃有余。
为什么大家都在学AI大模型?
随着AI技术的发展,企业对人才的需求从“单一技术”转向 “AI+行业”双背景。企业对人才的需求从“单一技术”转向 “AI+行业”双背景。金融+AI、制造+AI、医疗+AI等跨界岗位薪资涨幅达30%-50%。
同时很多人面临优化裁员,近期科技巨头英特尔裁员2万人,传统岗位不断缩减,因此转行AI势在必行!
这些资料有用吗?
这份资料由我们和鲁为民博士(北京清华大学学士和美国加州理工学院博士)共同整理,现任上海殷泊信息科技CEO,其创立的MoPaaS云平台获Forrester全球’强劲表现者’认证,服务航天科工、国家电网等1000+企业,以第一作者在IEEE Transactions发表论文50+篇,获NASA JPL火星探测系统强化学习专利等35项中美专利。本套AI大模型课程由清华大学-加州理工双料博士、吴文俊人工智能奖得主鲁为民教授领衔研发。
资料内容涵盖了从入门到进阶的各类视频教程和实战项目,无论你是小白还是有些技术基础的技术人员,这份资料都绝对能帮助你提升薪资待遇,转行大模型岗位。
大模型全套学习资料已整理打包,有需要的小伙伴可以
微信扫描下方CSDN官方认证二维码,免费领取【保证100%免费】