智能体设计范式:Reflection
1 核心思想
Reflection(反思) 让模型在生成初步答案后,对自己的回答进行自我评价和修正,通过多轮"生成---反思---改进"的循环,提升答案的准确性、完整性和逻辑性。
2 工作原理

- 初始回答:模型根据问题直接生成一个答案。
- 反思阶段:将问题、初始回答以及反思提示(如"请指出上述答案中的错误、不足或遗漏")发给模型,让它输出批评意见和建议。
- 改进阶段:将反思内容连同初始答案一起,要求模型生成一个改进后的答案。
- 可以迭代多轮反思,直到满意或达到次数上限。
3 使用场景
- 答案质量要求极高的场合,如法律分析、医学建议、复杂逻辑推理。
- 需要自我纠错的开放式任务(写作、代码审查)。
- 模型容易产生幻觉的领域,通过反思降低错误。
4 优缺点
优点
- 能显著减少事实错误和逻辑漏洞。
- 模拟人类"打草稿---检查---誊写"的过程,输出更可靠。
- 可应用于任何基础的 LLM 调用之上,即插即用。
缺点
- 多次调用 LLM,成本翻倍。
- 模型可能固执己见,反思不能真正纠正错误。
- 反思缺乏外部知识校验,仍可能自我强化错误。
5 Python 实现
python
import requests
from typing import Optional
class AliYunLLM: ... # 定义与前文相同
# ---------- Reflection Agent ----------
class ReflectionAgent:
def __init__(self, llm: AliYunLLM, max_reflections: int = 2):
self.llm = llm
self.max_reflections = max_reflections
def _generate_initial_answer(self, question: str) -> str:
system_prompt = "你是一个乐于助人的助手,请认真回答用户的问题。"
answer = self.llm.generate(question, system_prompt=system_prompt)
print(f"初始答案:\n{answer}")
return answer
def _reflect(self, question: str, answer: str) -> str:
system_prompt = (
"你是一位严厉的评审专家。请仔细审阅以下问题和答案,找出其中可能存在的"
"错误、遗漏、逻辑矛盾或表述不清的地方,并给出具体的改进建议。"
"直接输出批评和建议,不要输出其他内容。"
)
prompt = f"问题:{question}\n\n答案:{answer}\n\n请进行反思和批评:"
reflection = self.llm.generate(prompt, system_prompt=system_prompt)
print(f"反思内容:\n{reflection}")
return reflection
def _improve_answer(self, question: str, original_answer: str, reflection: str) -> str:
system_prompt = (
"你是一位追求完美的助手。请根据评审专家的反思意见,对原始答案进行改进,"
"生成一个更准确、完整、清晰的最终答案。只输出改进后的答案。"
)
prompt = (
f"问题:{question}\n\n"
f"原始答案:{original_answer}\n\n"
f"评审意见:{reflection}\n\n"
"请输出改进后的答案:"
)
improved = self.llm.generate(prompt, system_prompt=system_prompt)
print(f"改进后答案:\n{improved}")
return improved
def run(self, question: str) -> str:
# 1. 初始答案
answer = self._generate_initial_answer(question)
# 2. 迭代反思与改进
for i in range(self.max_reflections):
reflection = self._reflect(question, answer)
# 使用改进后的答案作为下一轮的基础
answer = self._improve_answer(question, answer, reflection)
return answer
# ---------- 示例运行 ----------
if __name__ == "__main__":
llm = AliYunLLM(api_key="your-api-key", base_url="https://dashscope.aliyuncs.com/api/v1", model="qwen-plus")
agent = ReflectionAgent(llm, max_reflections=2)
question = "请解释量子纠缠的基本概念及其应用。"
final_answer = agent.run(question)
print(f"\n最终答案:\n{final_answer}")