智能体设计范式:Reflection
智能体设计范式Reflection1 核心思想Reflection反思让模型在生成初步答案后对自己的回答进行自我评价和修正通过多轮“生成—反思—改进”的循环提升答案的准确性、完整性和逻辑性。2 工作原理初始回答模型根据问题直接生成一个答案。反思阶段将问题、初始回答以及反思提示如“请指出上述答案中的错误、不足或遗漏”发给模型让它输出批评意见和建议。改进阶段将反思内容连同初始答案一起要求模型生成一个改进后的答案。可以迭代多轮反思直到满意或达到次数上限。3 使用场景答案质量要求极高的场合如法律分析、医学建议、复杂逻辑推理。需要自我纠错的开放式任务写作、代码审查。模型容易产生幻觉的领域通过反思降低错误。4 优缺点优点能显著减少事实错误和逻辑漏洞。模拟人类“打草稿—检查—誊写”的过程输出更可靠。可应用于任何基础的 LLM 调用之上即插即用。缺点多次调用 LLM成本翻倍。模型可能固执己见反思不能真正纠正错误。反思缺乏外部知识校验仍可能自我强化错误。5 Python 实现importrequestsfromtypingimportOptionalclassAliYunLLM:...# 定义与前文相同# ---------- Reflection Agent ----------classReflectionAgent:def__init__(self,llm:AliYunLLM,max_reflections:int2):self.llmllm self.max_reflectionsmax_reflectionsdef_generate_initial_answer(self,question:str)-str:system_prompt你是一个乐于助人的助手请认真回答用户的问题。answerself.llm.generate(question,system_promptsystem_prompt)print(f初始答案\n{answer})returnanswerdef_reflect(self,question:str,answer:str)-str:system_prompt(你是一位严厉的评审专家。请仔细审阅以下问题和答案找出其中可能存在的错误、遗漏、逻辑矛盾或表述不清的地方并给出具体的改进建议。直接输出批评和建议不要输出其他内容。)promptf问题{question}\n\n答案{answer}\n\n请进行反思和批评reflectionself.llm.generate(prompt,system_promptsystem_prompt)print(f反思内容\n{reflection})returnreflectiondef_improve_answer(self,question:str,original_answer:str,reflection:str)-str:system_prompt(你是一位追求完美的助手。请根据评审专家的反思意见对原始答案进行改进生成一个更准确、完整、清晰的最终答案。只输出改进后的答案。)prompt(f问题{question}\n\nf原始答案{original_answer}\n\nf评审意见{reflection}\n\n请输出改进后的答案)improvedself.llm.generate(prompt,system_promptsystem_prompt)print(f改进后答案\n{improved})returnimproveddefrun(self,question:str)-str:# 1. 初始答案answerself._generate_initial_answer(question)# 2. 迭代反思与改进foriinrange(self.max_reflections):reflectionself._reflect(question,answer)# 使用改进后的答案作为下一轮的基础answerself._improve_answer(question,answer,reflection)returnanswer# ---------- 示例运行 ----------if__name____main__:llmAliYunLLM(api_keyyour-api-key,base_urlhttps://dashscope.aliyuncs.com/api/v1,modelqwen-plus)agentReflectionAgent(llm,max_reflections2)question请解释量子纠缠的基本概念及其应用。final_answeragent.run(question)print(f\n最终答案\n{final_answer})