AI智能体设计模式系列(四)—— 反思模式

反思模式概述

在前面的文章中,我们探讨了基础的 Agent 模式:顺序执行的链式、动态路径选择的路由以及并发任务执行 的并行化。这些模式使 Agent 能够更高效、更灵活地执行复杂任务。然而,即使采用复杂的工作流,Agent 的初始输出或计划也可能并非最优、准确或完整。这正是反思模式发挥关键作用之处。

反思模式涉及 Agent 评估其自身工作、输出或内部状态,并利用该评估来提升性能或优化响应。这是一种自 我纠正或自我改进机制,允许 Agent 基于反馈、内部评审或与预期标准的对比,迭代优化其输出或调整策 略。反思有时可由专门的 Agent 来促进,其特定职责是分析初始 Agent 的输出。

与简单顺序链(输出直接传递至下一步)或路径选择的路由不同,反思引入了反馈循环。Agent 不仅产生输 出,还会检查该输出(或其生成过程),识别潜在问题或改进空间,并运用这些洞察生成优化版本或调整后 续行动。

该过程通常包含以下步骤:

  1. 1、执行:Agent执行任务或生成初始输出

  2. 2、评估/评审:Agent(通常通过另一个LLM调用或规则集)分析上一步结果。此评估可能涉及事实准确性、连贯性、风格、完整性、指令遵循度或其他相关标准

  3. 3、反思/优化:基于评审意见,Agent确定改进方向。这可能包括生成优化后的输出、调整后续步骤参数,甚至修改整体计划

  4. 4、迭代(可选但常见):优化后的输出或调整后的方法可继续执行,反思过程可重复进行,直至获得满意结果或达到停止条件

反思模式的关键高效实现是将流程分离为两个逻辑角色:生产者和评审者。这通常称为"生成器‐评审者"或" 生产者‐审查者"模型。虽然单个 Agent 可执行自我反思,但使用两个专门 Agent(或两个不同系统提示的独 立 LLM 调用)通常产生更稳健客观的结果。

  1. 1、生产者 Agent:此 Agent 的主要职责是执行任务的初始工作。它完全专注于内容生成,无论是编写代 码、起草博客文章还是制定计划。它接收初始提示并生成输出的第一版

  2. 2、评审者 Agent:此 Agent 的唯一目的是评估生产者生成的输出。它被赋予不同的指令集,通常承担特 定角色(如"高级软件工程师"、"严谨的事实核查员")。评审者的指令引导其根据特定标准分析生产 者工作,包括事实准确性、代码质量、风格要求或完整性。其设计目标是发现缺陷、提出改进建议并 提供结构化反馈

这种关注点分离有效避免了 Agent 审查自身工作时可能产生的"认知偏差"。评审者 Agent 以全新视角处理 输出,专注于发现错误和改进空间。其反馈传回生产者 Agent,生产者以此为指南生成优化版本。LangChain 和 ADK 代码示例均实现这种双 Agent 模型:LangChain 使用特定"reflector_prompt"创建评审者角色,而 ADK 明确定义生产者和审查者 Agent。

实现反思需要在 Agent 工作流中构建反馈循环,可通过迭代循环或支持状态管理的框架实现。虽然单步评估 优化可在 LangChain/LangGraph、ADK 或 Crew.AI 链中完成,但真正的迭代反思通常涉及更复杂编排。

反思模式对于构建高质量输出、处理精细任务并展现自我适应性的 Agent 至关重要。它推动 Agent 从单纯执 行指令转向更复杂的问题解决和内容生成。

值得注意的是反思与目标设定和监控的交叉点。目标为 Agent 自我评估提供最终基准,监控 跟踪其进展。实践中,反思常充当纠正引擎,利用监控反馈分析偏差并调整策略。这种协同使 Agent 从被动 执行者转变为有目的的自适应工作体。

当 LLM 保持对话记忆时,反思模式有效性显著增强。对话历史提供关键上下文,使 Agent 能在 先前交互和用户反馈背景下评估输出。没有记忆时,反思是独立事件;有了记忆,反思成为累积过程,每个 周期基于前一个,实现更智能的上下文感知优化。

概览

是什么: Agent 的初始输出通常次优,存在不准确、不完整或未满足复杂要求的问题。基础 Agent 工作流缺 乏 Agent 识别和修复自身错误的内置流程。这通过让 Agent 评估自身工作,或更稳健地引入独立逻辑 Agent 充当评审者来解决,防止无论质量如何初始响应都成为最终结果

为什么:反思模式通过引入自我纠正和优化机制提供解决方案。它建立反馈循环,其中"生产者"Agent 生 成输出,然后"评审者"Agent(或生产者自身)根据预定义标准进行评估。随后使用此评审生成改进版本。 这种生成、评估和优化的迭代过程逐步提升最终结果质量,从而产生更准确、连贯和可靠的结果

经验法则:当最终输出的质量、准确性和细节比速度和成本更重要时使用反思模式。它对生成精炼长篇内 容、编写调试代码以及创建详细计划等任务特别有效。当任务需要通用生产者 Agent 可能遗漏的高客观性或 专门评估时,使用独立评审者 Agent

图 1:反思设计模式,自我反思

图 2:反思设计模式,生产者和评审者 Agent

关键要点

  • ・ 反思模式的主要优势在于其迭代自我纠正和优化输出的能力,带来显著更高的质量、准确性和复杂指令遵循度

  • ・ 它涉及执行、评估/评审和优化的反馈循环。反思对需要高质量、准确或精细输出的任务至关重要

  • ・ 一个强大的实现是生产者‐评审者模型,其中独立 Agent(或提示角色)评估初始输出。这种关注点分离增强客观性,并支持更专业、结构化的反馈

  • ・ 然而,这些优势以增加的延迟和计算成本为代价,同时伴随超出模型上下文窗口或被 API 服务限制的更高风险

  • ・ 虽然完整迭代反思通常需要状态化工作流(如 LangGraph),但单个反思步骤可在 LangChain 中使用LCEL 实现,以传递输出进行评审和后续优化

  • ・ Google ADK 可通过顺序工作流促进反思,其中一个 Agent 的输出被另一个 Agent 评审,允许后续优化步骤

  • ・ 此模式使Agent能够执行自我纠正并随时间提升性能

实际应用与用例

反思模式在输出质量、准确性或复杂约束遵循度至关重要的场景中极具价值:

  1. 创意写作与内容生成:优化生成的文本、故事、诗歌或营销文案

・ 用例: 博客文章撰写Agent

**-- 反思:**生成草稿,评审其流畅度、语气和清晰度,然后基于评审重写。重复直至内容达到质量标准

**-- 优势:**产出更精炼有效的内容

  1. 代码生成与调试:编写代码、识别错误并进行修复

用例: Python函数编写Agent

**-- 反思:**编写初始代码,运行测试或静态分析,识别错误或低效环节,然后基于发现修改代码

**-- 优势:**生成更健壮和功能完善的代码

  1. 复杂问题解决:评估多步推理任务中的中间步骤或建议方案

・ 用例: 逻辑谜题求解Agent

**-- 反思:**提出步骤,评估其是否接近解决方案或引入矛盾,必要时回溯或选择不同步骤

**-- 优势:**提升Agent在复杂问题空间中的导航能力

  1. 摘要与信息综合:优化摘要的准确性、完整性和简洁性

・ 用例: 长文档摘要Agent

**-- 反思:**生成初始摘要,与原始文档关键点对比,优化摘要以补全缺失信息或提升准确性

**-- 优势:**创建更准确全面的摘要

  1. 规划与策略:评估提议计划并识别潜在缺陷或改进点

・ 用例: 目标达成行动规划Agent

**-- 反思:**生成计划,模拟执行或根据约束评估可行性,基于评估修订计划

**-- 优势:**制定更有效和现实的计划

  1. 对话Agent:审查对话历史轮次以保持上下文、纠正误解或提升响应质量

・ 用例: 客户支持聊天机器人

**-- 反思:**用户响应后,审查对话历史和最后生成消息,确保连贯性并准确回应用户最新输入

**-- 优势:**促成更自然有效的对话

反思为 Agent 系统增加了元认知层,使其能从自身输出和过程中学习,从而产生更智能、可靠和高质量的结果

实操代码示例(LangChain)

实现完整的迭代反思过程需要状态管理和循环执行机制。虽然这些在基于图的框架(如 LangGraph)中内置 处理或通过自定义程序代码实现,但单个反思周期的基本原理可通过 LCEL(LangChain 表达式语言)的组 合语法有效演示。

反思模式是使AI智能体具备自我审查和改进能力的关键机制。以下是基于LangChain的反思模式实现示例,涵盖多个应用场景:

1、基础反思模式实现

python 复制代码
from langchain.chains import LLMChain, SequentialChain
from langchain.llms import OpenAI
from langchain.prompts import PromptTemplate
from typing import Dict, List, Tuple
import re

class BasicReflectionAgent:
    """基础反思代理:生成-评估-改进循环"""
    
    def __init__(self):
        self.llm = OpenAI(temperature=0.7, max_tokens=1000)
        
        # 生成链
        self.generation_chain = LLMChain(
            llm=self.llm,
            prompt=PromptTemplate(
                input_variables=["task"],
                template="""请完成以下任务:
任务:{task}

请生成初始版本:"""
            ),
            output_key="initial_output"
        )
        
        # 评估链
        self.evaluation_chain = LLMChain(
            llm=self.llm,
            prompt=PromptTemplate(
                input_variables=["task", "initial_output"],
                template="""请评估以下输出:
原始任务:{task}
生成的输出:{initial_output}

请从以下角度进行评估:
1. 准确性:信息是否准确?
2. 完整性:是否覆盖了任务要求的所有方面?
3. 清晰度:表达是否清晰易懂?
4. 质量:整体质量如何?

请列出具体的改进建议:"""
            ),
            output_key="evaluation"
        )
        
        # 改进链
        self.improvement_chain = LLMChain(
            llm=self.llm,
            prompt=PromptTemplate(
                input_variables=["task", "initial_output", "evaluation"],
                template="""基于评估改进输出:
原始任务:{task}
初始输出:{initial_output}
评估反馈:{evaluation}

请生成改进后的版本:"""
            ),
            output_key="final_output"
        )
        
        # 创建反思链
        self.reflection_chain = SequentialChain(
            chains=[
                self.generation_chain,
                self.evaluation_chain,
                self.improvement_chain
            ],
            input_variables=["task"],
            output_variables=["initial_output", "evaluation", "final_output"],
            verbose=True
        )
    
    def reflect_and_improve(self, task: str) -> Dict:
        """执行反思循环"""
        return self.reflection_chain({"task": task})

# 使用示例
reflection_agent = BasicReflectionAgent()
result = reflection_agent.reflect_and_improve(
    "写一篇关于人工智能伦理的短文,300字左右"
)

print("初始输出:", result["initial_output"][:200], "...")
print("\n评估反馈:", result["evaluation"])
print("\n改进后的输出:", result["final_output"][:200], "...")

2、代码生成与调试反思系统

python 复制代码
import ast
import traceback
from typing import Optional

class CodeReflectionAgent:
    """代码生成与调试反思代理"""
    
    def __init__(self):
        self.llm = OpenAI(temperature=0.3, max_tokens=1500)
        
    def generate_code(self, requirement: str) -> str:
        """生成初始代码"""
        prompt = f"""根据以下需求编写Python代码:
需求:{requirement}

请提供完整、可运行的代码:"""
        
        return self.llm(prompt)
    
    def analyze_code(self, code: str, requirement: str) -> Dict:
        """分析代码问题"""
        prompt = f"""分析以下Python代码:
需求:{requirement}
代码:
```python
{code}

请分析:

  1. 代码逻辑是否正确?

  2. 是否有语法错误?

  3. 是否符合Python最佳实践?

  4. 代码效率如何?

  5. 是否有潜在bug?

请给出详细分析:"""

python 复制代码
    analysis = self.llm(prompt)
    
    # 尝试执行代码以发现运行时错误
    execution_result = self._test_execution(code)
    
    return {
        "static_analysis": analysis,
        "execution_test": execution_result
    }

def _test_execution(self, code: str) -> Dict:
    """测试代码执行"""
    try:
        # 检查语法
        ast.parse(code)
        
        # 尝试在受限环境中执行
        local_vars = {}
        exec(code, {"__builtins__": {}}, local_vars)
        
        return {
            "status": "success",
            "message": "代码语法正确且可执行"
        }
    except SyntaxError as e:
        return {
            "status": "syntax_error",
            "message": f"语法错误:{str(e)}",
            "line": e.lineno,
            "offset": e.offset
        }
    except Exception as e:
        return {
            "status": "runtime_error",
            "message": f"运行时错误:{str(e)}",
            "traceback": traceback.format_exc()
        }

def improve_code(self, code: str, requirement: str, analysis: Dict) -> str:
    """改进代码"""
    prompt = f"""基于以下分析改进代码:

原始需求:{requirement}

原始代码:

python 复制代码
{code}

分析结果:

静态分析:{analysis['static_analysis']}

执行测试:{analysis['execution_test']['message'] if 'message' in analysis['execution_test'] else str(analysis['execution_test'])}

请生成改进后的代码:"""

python 复制代码
    return self.llm(prompt)

def full_reflection_cycle(self, requirement: str, max_iterations: int = 3) -> Dict:
    """完整的反思循环"""
    results = {
        "iterations": [],
        "final_code": None,
        "improvements_made": []
    }
    
    current_code = self.generate_code(requirement)
    
    for iteration in range(max_iterations):
        print(f"\n{'='*50}")
        print(f"第 {iteration + 1} 次迭代")
        
        # 分析当前代码
        analysis = self.analyze_code(current_code, requirement)
        
        # 检查是否满足要求
        if (analysis['execution_test']['status'] == 'success' and 
            "错误" not in analysis['static_analysis'].lower()[:100]):
            print("代码质量达标,停止迭代")
            results['final_code'] = current_code
            break
        
        # 记录当前状态
        iteration_result = {
            "code": current_code,
            "analysis": analysis,
            "iteration": iteration + 1
        }
        results['iterations'].append(iteration_result)
        
        # 改进代码
        print("正在改进代码...")
        improved_code = self.improve_code(current_code, requirement, analysis)
        
        # 记录改进
        improvement_note = f"迭代{iteration+1}: {analysis['execution_test']['message'][:100]}"
        results['improvements_made'].append(improvement_note)
        
        # 更新当前代码
        current_code = improved_code
    
    results['final_code'] = current_code
    return results

使用示例

code_agent = CodeReflectionAgent()

requirement = "编写一个函数,计算斐波那契数列的第n项,要求时间复杂度为O(n)"

result = code_agent.full_reflection_cycle(requirement, max_iterations=2)

print("\n最终代码:")

print(result['final_code'])

print("\n改进记录:")

for imp in result['improvements_made']:

print(f"- {imp}")

python 复制代码
## 三、多轮对话反思系统

```python
from datetime import datetime
from collections import deque

class ConversationalReflectionAgent:
    """对话反思代理,保持上下文一致性"""
    
    def __init__(self, max_history: int = 10):
        self.llm = OpenAI(temperature=0.7)
        self.conversation_history = deque(maxlen=max_history)
        self.context_summary = ""
        
    def reflect_on_conversation(self, user_input: str, agent_response: str) -> Dict:
        """反思对话质量"""
        history_str = self._format_history()
        
        reflection_prompt = f"""对话反思分析:

对话历史:
{history_str}

最新交互:
用户:{user_input}
助手:{agent_response}

请分析:
1. 我的回应是否准确回答了用户的问题?
2. 我的回应是否与对话历史保持一致?
3. 是否有误解或需要澄清的地方?
4. 对话流程是否自然流畅?

反思结果:"""
        
        reflection = self.llm(reflection_prompt)
        
        # 提取关键改进点
        improvement_points = self._extract_improvement_points(reflection)
        
        return {
            "reflection": reflection,
            "improvement_points": improvement_points,
            "needs_clarification": "澄清" in reflection or "误解" in reflection,
            "confidence_score": self._calculate_confidence(reflection)
        }
    
    def generate_response(self, user_input: str, use_reflection: bool = True) -> str:
        """生成回应,可选择使用反思"""
        history_str = self._format_history()
        
        if not use_reflection:
            # 直接生成回应
            prompt = f"""对话历史:{history_str}
用户:{user_input}
助手:"""
            response = self.llm(prompt)
        else:
            # 先生成草稿,然后反思改进
            draft_prompt = f"""基于对话历史生成回应草稿:
对话历史:{history_str}
用户最新输入:{user_input}

回应草稿:"""
            draft_response = self.llm(draft_prompt)
            
            # 反思草稿
            reflection_result = self.reflect_on_conversation(user_input, draft_response)
            
            # 基于反思改进
            if reflection_result['needs_clarification']:
                improvement_prompt = f"""改进回应草稿:
原始草稿:{draft_response}
反思反馈:{reflection_result['reflection']}
需要特别关注的改进点:{', '.join(reflection_result['improvement_points'])}

用户输入:{user_input}

请生成改进后的回应:"""
                response = self.llm(improvement_prompt)
            else:
                response = draft_response
        
        # 更新历史
        self._update_history(user_input, response)
        
        return response
    
    def _format_history(self) -> str:
        """格式化对话历史"""
        if not self.conversation_history:
            return "(无历史对话)"
        
        history_lines = []
        for i, (user, assistant, timestamp) in enumerate(self.conversation_history, 1):
            history_lines.append(f"{i}. 用户({timestamp}): {user}")
            history_lines.append(f"   助手: {assistant}")
        
        return "\n".join(history_lines)
    
    def _update_history(self, user_input: str, response: str):
        """更新对话历史"""
        timestamp = datetime.now().strftime("%H:%M:%S")
        self.conversation_history.append((user_input, response, timestamp))
        
        # 定期更新上下文摘要
        if len(self.conversation_history) % 5 == 0:
            self._update_context_summary()
    
    def _update_context_summary(self):
        """更新上下文摘要"""
        history_str = self._format_history()
        
        summary_prompt = f"""基于以下对话历史,生成简短的上下文摘要:
{history_str}

上下文摘要(包括主要话题、用户偏好、重要信息):"""
        
        self.context_summary = self.llm(summary_prompt)
    
    def _extract_improvement_points(self, reflection: str) -> List[str]:
        """从反思中提取改进点"""
        # 简单关键词提取
        improvement_keywords = ["改进", "更好", "应该", "需要", "建议", "优化"]
        sentences = reflection.split('。')
        
        improvement_points = []
        for sentence in sentences:
            if any(keyword in sentence for keyword in improvement_keywords):
                improvement_points.append(sentence.strip())
        
        return improvement_points[:3]  # 返回最多3个改进点
    
    def _calculate_confidence(self, reflection: str) -> float:
        """计算置信度分数"""
        positive_indicators = ["准确", "一致", "流畅", "自然", "恰当"]
        negative_indicators = ["误解", "错误", "不一致", "混乱", "不清晰"]
        
        positive_count = sum(1 for indicator in positive_indicators 
                           if indicator in reflection)
        negative_count = sum(1 for indicator in negative_indicators 
                           if indicator in reflection)
        
        total = positive_count + negative_count
        if total == 0:
            return 0.5
        
        return positive_count / total

# 使用示例
chat_agent = ConversationalReflectionAgent(max_history=5)

# 模拟对话
conversation = [
    "你好,我想了解人工智能",
    "AI有哪些主要应用领域?",
    "我对机器学习特别感兴趣",
    "能解释一下监督学习和无监督学习的区别吗?"
]

for user_input in conversation:
    print(f"\n用户: {user_input}")
    response = chat_agent.generate_response(user_input, use_reflection=True)
    print(f"助手: {response}")
    
    # 显示最新反思(模拟)
    if hasattr(chat_agent, 'last_reflection'):
        print(f"[反思] {chat_agent.last_reflection['improvement_points'][0] if chat_agent.last_reflection['improvement_points'] else '无问题'}")

3、反思模式最佳实践

python 复制代码
class ReflectionPatternBestPractices:
    """反思模式最佳实践实现"""
    
    @staticmethod
    def implement_gradual_refinement(task: str, initial_generator, 
                                    evaluator, refiner, max_iterations: int = 3):
        """渐进式精炼模式"""
        current_output = initial_generator(task)
        
        for i in range(max_iterations):
            print(f"\n迭代 {i+1}/{max_iterations}")
            
            # 评估
            evaluation = evaluator(current_output, task)
            
            # 检查是否满足质量阈值
            if evaluation["quality_score"] >= 0.8:  # 质量阈值
                print(f"达到质量要求,停止迭代")
                break
            
            # 精炼
            current_output = refiner(current_output, evaluation, task)
            
            print(f"质量分数: {evaluation['quality_score']:.2f}")
        
        return current_output
    
    @staticmethod
    def implement_multi_perspective_reflection(text: str, perspectives: List[str]):
        """多视角反思"""
        reflections = []
        
        for perspective in perspectives:
            prompt = f"""从{perspective}视角分析以下文本:
文本:{text}

请提供分析:"""
            
            llm = OpenAI(temperature=0.5)
            analysis = llm(prompt)
            
            reflections.append({
                "perspective": perspective,
                "analysis": analysis,
                "suggestions": ReflectionPatternBestPractices._extract_suggestions(analysis)
            })
        
        return reflections
    
    @staticmethod
    def _extract_suggestions(analysis: str, max_suggestions: int = 3) -> List[str]:
        """从分析中提取具体建议"""
        # 简单实现:按句号分割,提取包含建议关键词的句子
        suggestion_keywords = ["建议", "应该", "可以", "改进", "优化", "考虑"]
        sentences = analysis.split('。')
        
        suggestions = []
        for sentence in sentences:
            if any(keyword in sentence for keyword in suggestion_keywords):
                suggestions.append(sentence.strip())
        
        return suggestions[:max_suggestions]
    
    @staticmethod
    def implement_reflection_with_metrics(output: str, metrics: Dict[str, callable]):
        """带度量标准的反思"""
        metric_results = {}
        
        for metric_name, metric_func in metrics.items():
            score = metric_func(output)
            metric_results[metric_name] = {
                "score": score,
                "interpretation": ReflectionPatternBestPractices._interpret_metric_score(metric_name, score)
            }
        
        # 综合评估
        overall_score = sum(r["score"] for r in metric_results.values()) / len(metrics)
        
        return {
            "metric_results": metric_results,
            "overall_score": overall_score,
            "recommendation": ReflectionPatternBestPractices._generate_recommendation(metric_results)
        }
    
    @staticmethod
    def _interpret_metric_score(metric_name: str, score: float) -> str:
        """解释度量分数"""
        if score >= 0.8:
            return "优秀"
        elif score >= 0.6:
            return "良好"
        elif score >= 0.4:
            return "一般"
        else:
            return "需要改进"
    
    @staticmethod
    def _generate_recommendation(metric_results: Dict) -> str:
        """生成改进建议"""
        low_metrics = [name for name, result in metric_results.items() 
                      if result["score"] < 0.6]
        
        if not low_metrics:
            return "所有指标表现良好,无需重大改进"
        else:
            return f"建议优先改进以下指标:{', '.join(low_metrics)}"

# 示例度量函数
def calculate_clarity_score(text: str) -> float:
    """计算清晰度分数(简化版)"""
    # 实际应用中可以使用更复杂的NLP方法
    sentence_lengths = [len(sentence.split()) for sentence in text.split('.')]
    avg_sentence_length = sum(sentence_lengths) / len(sentence_lengths) if sentence_lengths else 0
    
    # 句子平均长度在15-25词之间通常最易读
    if 15 <= avg_sentence_length <= 25:
        return 0.8
    elif 10 <= avg_sentence_length <= 30:
        return 0.6
    else:
        return 0.4

def calculate_completeness_score(text: str) -> float:
    """计算完整性分数(简化版)"""
    # 检查是否有常见的完整性标记
    completeness_indicators = ["首先", "其次", "最后", "总结", "综上所述", "因此"]
    
    indicator_count = sum(1 for indicator in completeness_indicators 
                         if indicator in text)
    
    return min(1.0, indicator_count / 3)  # 最多3个指示器

# 使用最佳实践示例
practices = ReflectionPatternBestPractices()

# 多视角反思示例
text = "人工智能将改变未来工作方式"
perspectives = ["技术发展", "社会经济", "伦理道德", "教育培训"]

reflections = practices.implement_multi_perspective_reflection(text, perspectives)

print("多视角反思结果:")
for reflection in reflections:
    print(f"\n视角: {reflection['perspective']}")
    print(f"建议: {reflection['suggestions'][0] if reflection['suggestions'] else '无'}")

这些示例展示了反思模式在不同场景下的实际应用。反思模式的核心价值在于使AI系统能够自我评估和改进,从而提高输出质量。关键设计考虑包括:

  1. 反思深度控制:根据任务复杂度调整反思的深度和频率

  2. 评估标准明确:定义清晰的评估标准和指标

  3. 迭代终止条件:设置合理的停止条件避免无限循环

  4. 上下文保持:在反思过程中保持重要上下文信息

  5. 效率与质量平衡:在反思开销和输出质量间取得平衡

反思模式与路由模式结合可以创建更强大的智能体系统:路由决定处理路径,反思确保处理质量。

结论

反思模式为 Agent 工作流中的自我纠正提供关键机制,实现超越单次执行的迭代改进。这是通过创建循环实 现的:系统生成输出,根据特定标准评估,然后使用该评估产生优化结果。此评估可由 Agent 自身(自我反 思)执行,或通常更有效地由不同评审者 Agent 执行,这代表了模式内的关键架构选择

虽然完全自主的多步反思过程需要强大的状态管理架构,但其核心原理可在单个生成‐评审‐优化周期中有效演示。作为控制结构,反思可与其他基础模式集成,以构建更健壮和功能更复杂的 Agent 系统。

参考文献

  1. LangChain Expression Language (LCEL) Documentation: https://python.langchain.com/docs/in troduction/

  2. LangGraphDocumentation:https://www.langchain.com/langgraph

相关推荐
sxlishaobin2 小时前
设计模式之策略模式
设计模式·策略模式
佛祖让我来巡山4 小时前
【面试题】什么是观察者模式?一般用在什么场景?
观察者模式·设计模式
Yu_Lijing4 小时前
基于C++的《Head First设计模式》笔记——适配器模式
c++·笔记·设计模式
点云SLAM4 小时前
C++ 设计模式之工厂模式(Factory)和面试问题
开发语言·c++·设计模式·面试·c++11·工厂模式
红头辣椒4 小时前
AI赋能全流程,重塑需求管理新生态——Visual RM需求数智化平台核心能力解析
人工智能·设计模式·软件工程·需求分析·用户运营
魅影骑士001019 小时前
柯里化函数
后端·设计模式
BHXDML1 天前
Java 设计模式详解
java·开发语言·设计模式
Engineer邓祥浩1 天前
设计模式学习(12) 23-10 外观模式
学习·设计模式·外观模式
Geoking.1 天前
【设计模式】享元模式(Flyweight)详解:用共享对象对抗内存爆炸
java·设计模式·享元模式