LangChain:核心模块
LangChain 是一个为构建 大语言模型(LLM)应用 而设计的开发框架,它的核心目标是简化 LLM 与外部工具、数据的集成过程。
LangChain 提供了一系列工具和组件,用于构建可扩展、可维护的 LLM 应用。包括:
- 模型(Models):用于与不同的 LLM 模型进行交互,包括 OpenAI、Anthropic、HuggingFace 等。
- 链(Chains):用于构建复杂的应用流程,包括数据加载、数据处理、模型调用等。
- 索引(Indexes):用于管理和检索外部数据,如文档、数据库等。
- 记忆(Memory):用于存储和管理应用的上下文信息,如对话历史、任务状态等。
- 代理(Agents):用于实现多模态交互,如自然语言与工具的交互。
- 工具(Tools):用于与外部工具进行交互,如搜索引擎、API 等。
- 评估器(Evaluators):用于评估模型的输出质量,如准确性、相关性等。
- 监控(Monitoring):用于监控应用的性能和质量,如日志、指标等。
- 扩展(Extensions):用于扩展 LangChain 的功能,如自定义模型、自定义链等。
- 文档(Documentation):用于学习和使用 LangChain 的各种功能。
- 社区(Community):用于交流和学习 LangChain 的最佳实践和经验。
核心模块
Model I/O(模型输入/输出)
Model I/O(模型输入/输出)
Model I/O 核心的一点是面向开发者提供一套统一的接口标准,屏蔽底层不同大模型基座的差异,这些差异由 LangChain 内部包装处理。
作用
- 用于与不同的 LLM 模型进行交互,包括 OpenAI、Anthropic、HuggingFace 等30+主流模型接入。
- 统一接口实现生成/聊天/嵌入模型切换(如GPT-4生成文本,text-embedding生成向量)。
子模块
- LLMs/Chat Models:支持多种模型(如 OpenAI、HuggingFace、Anthropic 等)。
- Prompt Templates:标准化提示词设计,支持动态变量插入(例如
{topic}
)。 - Output Parsers:将模型输出解析为结构化数据(如 JSON、Python 对象)。
示例:通过 ChatPromptTemplate
生成对话式提示,用 PydanticOutputParser
解析结果。
Retrieval(检索)
Retrieval(检索)或称为 数据连接层(Indexes)
- 作用:将外部数据(文档、数据库)与 LLM 结合,实现基于知识的问答。
- 流程:
- Document Loaders文:文档加载器。加载 PDF、网页、数据库等数据。
- Text Splitters:智能分块策略。切分长文本为片段(如按 Token 或语义)。
- Vector Stores:向量数据库集成。将文本向量化存储(如 FAISS、Chroma)。
- Retrievers:根据用户输入检索相关片段。
- 典型应用:构建企业知识库问答系统。
Chains(链)
- 作用:将多个模块串联成自动化工作流,又称为流程编排引擎。
- 类型:
- 简单链:如
LLMChain
(模型 + 提示词)。 - 复杂链:如
SequentialChain
(多步骤链)、RouterChain
(动态路由)。
- 简单链:如
- 示例:先调用模型生成摘要,再调用另一个模型生成翻译。
- LCEL语法实现多模型协同(如先检索后生成)
- 支持条件分支、循环等复杂逻辑编排
- 内置100+预置链(如SQL生成链、摘要链)
Memory(记忆)
- 作用:管理对话历史,实现多轮上下文交互。
- 实现方式:
- Buffer Memory:保存最近的 K 轮对话。
- Entity Memory:记录对话中的关键实体。
- 示例:
- 短期记忆:
ConversationBufferWindowMemory
保留最近 3 轮对话。 - 长期记忆:VectorStoreRetrieverMemory向量化存储历史。
- 实体记忆:自动提取人名/地点等关键信息持久化
- 短期记忆:
Agents(代理)
- 作用:让 LLM 根据目标动态调用工具(如搜索、计算、API)。
- 关键组件:
Tools:预定义函数(如 Google 搜索、Python REPL)。
Agent Executor:管理循环流程,解析模型输出并调用工具(如LangChain的
AgentExecutor
)。ReAct:框架实现”推理-行动“循环完成任务。通过让大语言模型(LLM)交替进行逻辑推理和外部工具调用,模仿人类解决问题的过程。
支持多代理协同(Master-Worker模式):一种并行任务处理架构,通过任务分解、动态分配与结果归并实现高并发场景下的效率提升。
其核心思想是将系统分为两类角色:Master(主控节点)负责任务调度与结果整合,Worker(工作节点)负责执行具体子任务。
- 示例:用户问“北京天气”,代理调用天气 API 工具获取数据。
Callbacks(回调)
- 作用:监控应用运行状态,记录日志或调试。
- 功能:跟踪 Token 消耗、中间结果、错误处理。
核心特点
- 模块化设计
- 每个模块可独立使用(如单独使用
PromptTemplate
),也可组合成复杂应用。
- 每个模块可独立使用(如单独使用
- 灵活性
- 支持多种模型供应商(OpenAI、本地模型)、数据库和工具。
- 开发者可自定义模块(如编写自己的 Tool 或 Chain)。
- 强大的集成生态
- 预集成 100+ 工具(Wolfram Alpha、Wikipedia、APIs)。
- 支持主流向量数据库(Pinecone、Milvus)和文档格式。
- 复杂应用支持
- 通过
Agents
实现动态决策,通过Chains
构建多步骤流程。 - 支持处理长文本(检索增强生成,RAG)和多轮对话。
- 通过
- 开发效率提升
- 提供高阶 API(如
create_sql_agent
)快速构建应用。 - 通过
LangSmith
平台调试和监控生产环境应用。
- 提供高阶 API(如
典型应用场景
- 知识问答系统:结合检索模块与 LLM 回答专业问题。
- 自动化助手:通过代理调用工具处理复杂任务(如订机票+查天气)。
- 数据分析:用
SQLDatabaseChain
将自然语言转换为 SQL 查询。 - 文档生成:链式调用模型生成报告、摘要或代码。
学习建议
- 从
Model I/O
和Chains
入门,熟悉基础流程。 - 实践
Retrieval
模块,尝试构建简单的问答应用。 - 掌握
Agents
设计模式,实现动态工具调用。 - 参考官方文档和示例代码(GitHub 仓库)。
如果需要更具体的实战案例或某个模块的深入解释,可以进一步提问!