LangChain组件
LangChain的组件可能旧了, 目前官方的最新实践应该是使用LangGraph, 去做记忆组件
为什么推荐用 LangGraph 做记忆?
- 灵活的记忆管理:可以在图的任意节点读写、更新记忆(如用户历史、上下文、外部知识等)。
- 流程可视化:对话流程以图结构展现,逻辑清晰,易于维护和扩展。
- 多模型协作:支持在不同节点调用不同的 LLM、工具或 API,适合复杂任务分解。
- 高可扩展性:适合从简单对话到复杂多轮推理、任务分解等多种场景。
基本原理
- 节点(Node) :每个节点可以是一个 LLM 调用、工具调用、记忆操作等。
- 边(Edge) :定义节点之间的流转条件(如根据用户输入内容分流)。
- 记忆(Memory) :可以在节点间传递和更新,支持短期和长期记忆。
基本用法示例(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)
- 用“节点-边”方式描述对话/推理流程。
- 每个节点可以是一个函数、一个 LLM 调用、一个工具调用,甚至是一个复杂的子流程。
- 节点之间通过“边”连接,数据(state)在节点间流转。
Runnable(LangChain)
- Runnable 是 LangChain 2.0 之后的核心抽象,代表“可运行的单元”。
- 可以是 LLM、链、工具、函数、管道等。
- 支持 .invoke(input)、.stream(input)、.batch(inputs) 等统一接口。
- 可以组合(如 RunnableSequence、RunnableParallel)形成复杂流程
代码
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)
数据流转机制
- state:每个节点的输入和输出都是 state(通常是 dict),LangGraph 自动把上一个节点的输出作为下一个节点的输入。
- runnable:每个 Runnable 的 .invoke(input) 接收 state,返回新的 state。
- 记忆:可以在 state 里传递 memory 对象,或者在节点里直接操作全局 memory。
总结
- StateGraph 负责“流程编排”,Runnable 负责“具体执行”。
- 节点可以直接用 Runnable,也可以在节点函数里用 Runnable。
- 数据(state)在节点间自动流转,节点只需关心输入和输出。
如何学习大模型?
学习AI大模型是一个系统的过程,需要从基础开始,逐步深入到更高级的技术。
这里给大家精心整理了一份全面的AI大模型学习资源,包括:AI大模型全套学习路线图(从入门到实战)、精品AI大模型学习书籍手册、视频教程、实战学习、面试题等,资料免费分享!
这是一份大模型从零基础到进阶的学习路线大纲全览,小伙伴们记得点个收藏!
第一阶段: 从大模型系统设计入手,讲解大模型的主要方法;
第二阶段: 在通过大模型提示词工程从Prompts角度入手更好发挥模型的作用;
第三阶段: 大模型平台应用开发借助阿里云PAI平台构建电商领域虚拟试衣系统;
第四阶段: 大模型知识库应用开发以LangChain框架为例,构建物流行业咨询智能问答系统;
第五阶段: 大模型微调开发借助以大健康、新零售、新媒体领域构建适合当前领域大模型;
第六阶段: 以SD多模态大模型为主,搭建了文生图小程序案例;
第七阶段: 以大模型平台应用与开发为主,通过星火大模型,文心大模型等成熟大模型构建大模型行业应用。
100套AI大模型商业化落地方案
大模型全套视频教程
200本大模型PDF书籍
👉学会后的收获:👈
• 基于大模型全栈工程实现(前端、后端、产品经理、设计、数据分析等),通过这门课可获得不同能力;
• 能够利用大模型解决相关实际项目需求: 大数据时代,越来越多的企业和机构需要处理海量数据,利用大模型技术可以更好地处理这些数据,提高数据分析和决策的准确性。因此,掌握大模型应用开发技能,可以让程序员更好地应对实际项目需求;
• 基于大模型和企业数据AI应用开发,实现大模型理论、掌握GPU算力、硬件、LangChain开发框架和项目实战技能, 学会Fine-tuning垂直训练大模型(数据准备、数据蒸馏、大模型部署)一站式掌握;
• 能够完成时下热门大模型垂直领域模型训练能力,提高程序员的编码能力: 大模型应用开发需要掌握机器学习算法、深度学习框架等技术,这些技术的掌握可以提高程序员的编码能力和分析能力,让程序员更加熟练地编写高质量的代码。
LLM面试题合集
大模型产品经理资源合集
大模型项目实战合集
😝有需要的小伙伴,可以扫描下方二v码免费领取【保证100%免费】🆓