LangChain 使开发人员可以通过组合语言模型与其他组件来构建各种由 LLM 驱动的应用程序。本页介绍了最常见的应用程序模式、它们的架构和实现方法。
LangChain 应用程序的主要类别包括:
每种模式都利用不同的 LangChain 组件和架构方法来解决特定类型的问题。
最基础的 LangChain 应用将提示模板与语言模型结合起来,以执行翻译、文本生成或分类等任务。
基本 LLM 链架构
来源:docs/docs/tutorials/llm_chain.ipynb18-30 docs/docs/how_to/index.mdx23-27
关键组件
ChatPromptTemplate 用于构建输入ChatOpenAI 或 ChatAnthropic 等聊天模型RAG 应用通过从外部知识源检索相关信息来增强 LLM 的响应。这是最受欢迎的 LangChain 应用模式之一。
RAG 应用架构
来源:docs/docs/tutorials/rag.ipynb30-55 docs/docs/how_to/index.mdx242-252
关键组件
WebBaseLoader, PyPDFLoader)RecursiveCharacterTextSplitter)OpenAIEmbeddings)InMemoryVectorStore, Chroma)聊天机器人应用维护对话历史,以实现上下文多轮交互。
聊天机器人应用架构
来源:docs/docs/tutorials/chatbot.ipynb240-270 docs/docs/how_to/index.mdx263-272
关键组件
langgraph.StateGraph 用于对话编排MemorySaver 用于持久化MessagesState 用于消息管理代理使用 LLM 作为推理引擎,以动态确定调用哪些工具以及如何根据工具输出来响应。
代理应用架构
来源:docs/docs/tutorials/agents.ipynb40-80 docs/docs/how_to/index.mdx199-208
关键组件
TavilySearchResults 用于网络搜索create_react_agent提取应用使用结构化输出功能从非结构化文本中提取特定信息。
提取应用架构
来源:docs/docs/tutorials/extraction.ipynb18-25 docs/docs/how_to/structured_output.ipynb23-49
关键组件
with_structured_output() 方法SQL QA 应用允许用户就数据库中的结构化数据提出自然语言问题。
SQL QA 应用架构
来源:docs/docs/tutorials/sql_qa.ipynb28-35 docs/docs/how_to/index.mdx285-294
关键组件
SQLDatabase 工具用于数据库连接类似于 SQL QA,但用于图数据库,允许在连接的数据上进行自然语言查询。
来源:docs/docs/how_to/index.mdx295-302
摘要应用使用各种策略处理大型文档并生成简洁的摘要。
摘要应用模式
来源:docs/docs/tutorials/summarization.ipynb28-50 docs/docs/how_to/index.mdx303-311
关键组件
RecursiveCharacterTextSplitter 用于分块LangChain 提供了多种方法来创建代理可以使用的工具。
工具创建模式
来源:docs/docs/how_to/custom_tools.ipynb40-85 docs/docs/how_to/tool_calling.ipynb56-99
关键模式
@tool)BaseTool 的自定义工具类工具调用使 LLM 能够执行函数并在其响应中使用结果。
来源:docs/docs/how_to/tool_calling.ipynb31-50 docs/docs/how_to/tool_results_pass_to_model.ipynb
现代 LangChain 应用越来越多地使用 LangGraph 进行复杂的编排和状态管理。
LangGraph 应用模式
来源:docs/docs/tutorials/rag.ipynb575-665 docs/docs/tutorials/chatbot.ipynb248-280
关键 LangGraph 组件
StateGraphMemorySaver 用于持久化许多应用程序通过流式传输响应来改善用户体验。
来源:docs/docs/how_to/streaming.ipynb47-75 docs/docs/tutorials/llm_chain.ipynb211-240
高级应用程序可以流式传输中间事件和工具调用。
来源:docs/docs/how_to/tool_stream_events.ipynb
完整的 RAG 应用结合了文档索引、检索和生成
来源:docs/docs/tutorials/rag.ipynb210-270
来源:docs/docs/tutorials/agents.ipynb45-88
来源:docs/docs/tutorials/chatbot.ipynb250-280
所有链都继承自基础 Chain 类并实现两个关键方法
_call:_acall:基础 Chain 类处理输入验证、内存管理、回调和输出准备。
来源:libs/langchain/langchain/chains/base.py298-320
Agent 组合了
来源:docs/docs/tutorials/agents.ipynb45-57
| 方面 | 链 | 智能体 |
|---|---|---|
| 决策制定 | 预定义流程 | 动态(由 LLM 决定) |
| 工具使用 | 可选,预定义 | 动态,按需 |
| 循环 | 通常不循环 | 可执行多个操作 |
| 实现 | 继承 Chain | 通常结合 LLM 和工具 + 执行器 |
| 用例 | 结构化任务,步骤清晰 | 复杂推理,探索 |
| 可组合性 | 高度可组合 | 通常作为独立单元工作 |
来源:docs/docs/tutorials/rag.ipynb220-240 docs/docs/tutorials/agents.ipynb21-32
LangChain 有两代 Agent 实现
AgentExecutor 方法对于新应用,LangGraph Agent 因其灵活性和控制力而通常更受推荐。
来源:docs/docs/how_to/agent_executor.ipynb18-22 docs/docs/how_to/migrate_agent.ipynb