如何使用LangChain和LangGraph:AI工作流初学者指南
人工智能正在快速发展。每周都会出现新的工具,使得构建由大型语言模型驱动的应用程序变得更加容易。但许多初学者仍然困扰于一个问题:如何构建AI应用程序的逻辑?如何以清晰的方式连接提示、内存、工具和API?
这就是像LangChain和LangGraph这样流行的开源框架的用武之地。两者都属于同一个生态系统,旨在帮助您构建复杂的AI工作流,而无需重复造轮子。
LangChain专注于构建称为链的步骤序列,而LangGraph通过添加内存、分支和反馈循环进一步推进,使您的AI更加智能和灵活。
本指南将帮助您了解这些工具的功能、它们之间的区别,以及如何开始使用它们来构建自己的AI项目。
我们将涵盖的内容
- 什么是LangChain?
- 为什么LangChain不够用
- 什么是LangGraph?
- LangChain vs LangGraph
- 何时使用每种工具
- 添加内存和持久性
- 使用LangSmith进行监控和调试
- LangChain生态系统
- 结论
什么是LangChain?
LangChain是一个Python和JavaScript框架,可帮助您构建由语言模型驱动的应用程序。它提供了一个结构,用于将像GPT这样的模型、数据源和工具连接到单个流程中。
您可以使用链、工具和代理等组件,而不是编写长提示模板或硬编码逻辑。
一个简单的例子是将提示链接在一起。例如,您可能首先要求模型总结文本,然后使用摘要生成标题。LangChain允许您定义这两个步骤并在代码中连接它们。
以下是Python中的一个基本示例:
|
|
这个简单的链接受文本并通过OpenAI模型运行它以获得摘要。您可以添加更多步骤,例如第二个链将该摘要转换为标题或问题。
LangChain为提示模板、模型、检索器和工具提供模块,因此您可以在不管理原始API逻辑的情况下构建工作流。
这里是完整的LangChain文档。
为什么LangChain不够用
LangChain使得构建直线工作流变得容易。但大多数真实世界的应用程序不是线性的。在构建聊天机器人、摘要器或自主代理时,您通常需要循环、内存和条件。
例如,如果AI做出了错误的假设,您可能希望它重试。如果它需要更多数据,它应该调用搜索工具。或者如果用户更改上下文,AI应该记住之前讨论的内容。
LangChain的链和代理可以完成其中一些工作,但流程难以可视化和管理。您必须编写嵌套链或使用回调来处理决策。
开发人员希望有一种更好的方式来表示AI系统实际如何思考。不是直线,而是作为图形,其中输出可以导致不同的路径。
这就是LangGraph的由来。
什么是LangGraph?
LangGraph是LangChain的扩展,引入了基于图形的AI工作流方法。
LangGraph允许您像流程图一样定义节点和边,而不是单向链接步骤。每个节点可以表示任务、操作或模型调用。
这种结构允许循环、分支和并行路径。它非常适合构建类似代理的系统,其中模型进行推理、决策和行动。
以下是一个简单的LangGraph设置示例:
|
|
这个例子展示了一个基本的代理图。
AI接收请求,进行推理,决定使用工具,并完成任务。您可以想象将其扩展到更复杂的图,其中AI可以重试、调用API或获取新信息。
LangGraph让您完全控制AI在状态之间的移动方式。每个节点都可以有条件。例如,如果答案不完整,您可以将其发送回另一个节点进行优化。
这使得LangGraph非常适合构建需要多个推理步骤的系统,如文档分析机器人、代码审查器或研究助手。
这里是完整的LangGraph文档。
LangChain vs LangGraph
LangChain和LangGraph共享相同的基础,但它们处理工作流的方式不同。
LangChain是线性的。每个链或代理按顺序从一个步骤移动到下一个步骤。它更简单易上手,特别适用于提示工程、检索增强生成和结构化管道。
LangGraph是动态的。它将工作流表示为可以循环、分支和自我纠正的图。在构建需要推理、规划或内存的代理时,它更强大。
一个很好的类比是:LangChain就像按顺序编写任务列表。LangGraph就像绘制流程图,其中决策可以导致不同的操作或回到先前的步骤。
大多数开发人员从LangChain开始学习基础知识,然后在想要构建更具交互性或自主的AI系统时转向LangGraph。
何时使用每种工具
如果您正在构建简单的工具,如文本摘要器、聊天机器人或文档检索器,LangChain就足够了。它易于上手,并且与像GPT、Claude和Gemini这样的流行模型很好地集成。
如果您想构建多步骤代理,或能够思考和适应的应用程序,请选择LangGraph。您可以定义AI对不同结果的反应方式,并且对重试逻辑、上下文切换和反馈循环有更多控制。
在实践中,许多开发人员结合使用两者。LangChain提供构建块,而LangGraph组织这些块如何交互。
添加内存和持久性
LangChain和LangGraph都支持内存,这允许您的AI在交互之间记住上下文。这在构建聊天机器人、助手或需要在步骤之间传递信息的代理时非常有用。
例如,如果用户介绍自己一次,AI应该能够在对话的后面回忆起该细节。
在LangChain中,内存通过内置模块处理,如ConversationBufferMemory或ConversationSummaryMemory。这些允许您存储先前的输入和输出,以便模型可以在未来的响应中引用它们。
以下是使用LangChain的简单示例:
|
|
在这种情况下,模型记住您先前的消息并相应回答。内存对象就像一个运行中的对话日志,随着对话的演变跟踪对话。
LangGraph通过将内存嵌入到图的状态中进一步推进这一点。图中的每个节点都可以访问或更新共享内存,允许您的AI在多个推理步骤或分支之间维护上下文。这种方法在构建循环、重新访问节点或依赖先前交互的代理时特别有用。
以下是如何在LangGraph工作流中添加内存:
|
|
在这里,图在调用之间跟踪内存。即使每次调用都通过同一个节点运行,共享的ConversationBufferMemory保留了之前所说的内容。这种设计让您构建能够记住用户上下文、维护历史记录并在节点之间移动时适应的代理。
无论您使用LangChain还是LangGraph,添加内存都是将简单工作流转变为有状态系统的关键,该系统可以持续对话、优化其推理并随时间更自然地响应。
使用LangSmith进行监控和调试
LangSmith是LangChain生态系统中的另一个重要工具。它帮助您可视化、监控和调试AI应用程序。
在构建工作流时,您通常希望查看模型的行为方式、成本多少以及问题出在哪里。
LangSmith记录您的链和代理进行的每次调用。您可以查看输入和输出数据、计时、令牌使用情况和错误。它提供了一个仪表板,显示您的系统在多次运行中的性能。
您可以通过设置环境变量轻松集成LangSmith:
|
|
然后,您运行的每个LangChain或LangGraph进程将自动记录到LangSmith。这有助于开发人员找到错误、优化提示并了解工作流在每个步骤的行为方式。
请注意,虽然Langchain和LangGraph是开源的,但Langsmith是一个付费平台。Langsmith是一个很好的工具,但不是构建AI工作流的必需工具。
LangChain生态系统
LangChain不只是一个库。它已经发展成一个协同工作的工具生态系统。
- LangChain Core:用于链、提示和内存的主要框架
- LangGraph:用于构建自适应工作流的基于图的扩展
- LangSmith:用于AI应用程序的调试和监控平台
- LangServe:一个部署层,让您用一个命令将链和图转换为API
这些工具共同形成了一个完整的堆栈,用于构建、管理和部署语言模型应用程序。您可以从一个简单的链开始,将其发展成基于图的系统,使用LangSmith进行测试,并使用LangServe进行部署。
结论
LangChain和LangGraph使得从提示到生产就绪的AI系统变得更加容易。LangChain帮助您构建连接模型、数据和工具的线性流。LangGraph让您通过构建能够推理和学习的自适应智能工作流走得更远。
对于初学者,从LangChain开始是理解语言模型如何与其他组件交互的最佳方式。随着项目的增长,LangGraph将为您提供处理复杂逻辑和长期状态的灵活性。
无论您是构建聊天机器人、代理还是知识助手,这些工具都将帮助您更快、更可靠地从想法到实现。