掘金 人工智能 07月18日 17:56
最新实践LangGraph的记忆体
index_new5.html
../../../zaker_core/zaker_tpl_static/wap/tpl_guoji1.html

 

文章介绍了LangChain的最新实践——使用LangGraph构建对话和多步骤推理流程。LangGraph的核心在于其“节点-边”的图结构,能够可视化和管理复杂的逻辑流。通过将LangGraph的StateGraph与LangChain的Runnable结合,可以实现灵活的记忆管理、多模型协作和高可扩展性。StateGraph负责流程编排,而Runnable则负责具体的执行单元,如LLM调用、工具使用等。这种组合方式为开发复杂的AI应用提供了强大而易于维护的解决方案。

💡 **LangGraph的优势与推荐原因**:LangGraph被推荐为构建记忆组件的最新实践,其核心优势在于提供灵活的记忆管理,允许在图的任意节点读写和更新记忆(如用户历史、上下文、外部知识等)。同时,它以图结构可视化对话流程,逻辑清晰易于维护和扩展,并支持多模型协作,可以在不同节点调用不同的LLM、工具或API,高度适应从简单对话到复杂多轮推理等多种场景。

🏗️ **LangGraph的基本原理与构成**:LangGraph的核心概念包括“节点”和“边”。节点可以代表一个LLM调用、工具调用、记忆操作或其他具体任务,而边则定义了节点之间的流转逻辑和条件,例如根据用户输入进行分流。记忆(Memory)作为状态的一部分,可以在节点之间传递和更新,支持短期和长期记忆的存储与检索,是实现连贯对话的关键。

🔗 **StateGraph与Runnable的结合使用**:文章强调,将LangGraph的StateGraph与LangChain的Runnable结合是构建复杂对话系统和多步骤推理流程的主流方式。StateGraph负责整体流程的“编排”,定义了任务的执行顺序和逻辑分支;而Runnable作为LangChain 2.0的核心抽象,代表“可运行的单元”,负责具体的执行,如LLM调用、链式处理、工具使用等,并提供统一的`.invoke()`、`.stream()`等接口,便于组合和管理。

🔄 **数据流转与记忆机制**:在LangGraph的运行机制中,数据以“state”(通常是字典形式)在节点间流转,每个节点的输出自动作为下一个节点的输入。Runnable的`.invoke(input)`方法接收state并返回新的state。记忆对象可以作为state的一部分在节点间传递,或者直接在节点函数中操作全局记忆,从而实现对话状态的持久化和上下文的有效利用。

LangChain组件

LangChain的组件可能旧了, 目前官方的最新实践应该是使用LangGraph, 去做记忆组件

为什么推荐用 LangGraph 做记忆?

基本原理

 基本用法示例(Python)

from langgraph.graph import StateGraph, END from langchain.memory import ConversationBufferMemory from langchain.llms import OpenAI # 1. 定义记忆 memory = ConversationBufferMemory() # 2. 定义节点 def greet_node(state):     return "你好,有什么可以帮您?"     def answer_node(state):     # 这里可以调用 LLM,结合记忆     user_input = state["input"]     history = memory.load_memory_variables({})     # 伪代码:调用 LLM     response = f"你刚才说:{user_input},历史对话:{history}"     memory.save_context({"input": user_input}, {"output": response})     return response     # 3. 构建图 graph = StateGraph() graph.add_node("greet", greet_node) graph.add_node("answer", answer_node) graph.add_edge("greet", "answer") graph.add_edge("answer", END) graph.set_entry_point("greet") # 4. 运行 result = graph.run({"input": "请帮我查下天气"}) print(result)

Runnable

LangGraph 的 StateGraph 和 LangChain 的 Runnable 结合使用, 是目前构建复杂对话系统和多步骤推理流程的主流方式之一

StateGraph(LangGraph)

Runnable(LangChain)

代码

from langchain.schema.runnable import RunnableSequence def add_prefix(state):     return {"input": "前缀:" + state["input"]} def add_suffix(state):     return {"output": state["input"] + ":后缀"} node = RunnableSequence([ RunnableLambda(add_prefix), RunnableLambda(add_suffix) ]) graph = StateGraph() graph.add_node("combo", node) graph.add_edge("combo", END) graph.set_entry_point("combo") result = graph.run({"input": "内容"}) print(result)

数据流转机制

总结

Fish AI Reader

Fish AI Reader

AI辅助创作,多种专业模板,深度分析,高质量内容生成。从观点提取到深度思考,FishAI为您提供全方位的创作支持。新版本引入自定义参数,让您的创作更加个性化和精准。

FishAI

FishAI

鱼阅,AI 时代的下一个智能信息助手,助你摆脱信息焦虑

联系邮箱 441953276@qq.com

相关标签

LangGraph LangChain AI对话系统 记忆组件 流程编排
相关文章