反思型智能体 • Langchain
反思是一种用于提高代理和类似 AI 系统质量与成功率的提示策略。本文概述了如何使用 LangGraph 构建 3 种反思技术,包括 Reflexion 和语言代理树搜索的实现。 关键链接 简单反思: (Python)反思: (Python)语言智能体树搜索: (Python)Youtube反思是一种提示策略,用于提升智能体和类似 AI 系统的质量和成功率。它通过提示大语言模型(LLM)反思和批评其过去的行为,有时还会结合外部信息,如工具观察。 人们常提到“系统1”和“系统2”思维,系统1是反应迅速或本能的,而系统2则更为有条理和反思性。正确应用反思,可以帮助 LLM 系统摆脱纯粹的系统1思维模式,表现出更接近系统2的行为。 反思需要时间!本文中的方法都用了一些额外的计算换取更好的输出质量。虽然这可能不适合低延迟应用,但对于知识密集型任务,响应质量比速度更重要,确实值得这样做。 以下是三个示例: 基本反思 链接: (Python, Youtube) 这个简单示例由两个 LLM 调用组成:一个生成器和一个反思器。生成器尝试直接响应用户请求,反思器则扮演老师角色,对初始响应提供建设性的批评。 循环进行固定次数后,返回最终生成的输出。 简单反思循环 我们可以在 LangGraph 中定义以下循环: from langgraph.graph import MessageGraph builder = MessageGraph() builder.add_node("generate", generation_node) builder.add_node("reflect", reflection_node) builder.set_entry_point("generate") def should_continue(state: List[BaseMessage]): if len(state) > 6: return END return "reflect" builder.add_conditional_edges("generate", should_continue) builder.add_edge("reflect", "generate") graph = builder.compile() MessageGraph 表示一个有状态图,其中“状态”只是一个消息列表。每次调用生成器或反思节点时,它会将一条消息添加到状态的末尾。最终结果由生成器节点返回。 这种简单的反思方式有时可以通过让 LLM 多次尝试改进输出,并让反思节点在批评输出时扮演不同角色,从而提高性能。 然而,由于反思步骤不依赖于任何外部过程,最终结果可能不会显著优于原始结果。我们来探索一些可以改善这一情况的其他技术。 反思 链接:(Python, Youtube)...