LangChain 是什么
LangChain 是一个开源框架,旨在帮助开发者构建基于大语言模型(LLM)的应用程序。它充当了各种 LLM 组件的脚手架,将分散的功能封装并链接在一起,从而简化复杂 LLM 应用的开发难度,使开发者能够快速构建功能丰富的智能应用。
从工程角度来看,LangChain 类似于 Java 生态中的 Spring 或 SpringBoot 框架,通过提供标准化的接口和工具链,显著提升了开发效率。
LangChain 核心架构
Models(I/O):模型集成与输入输出处理
该模块负责管理不同类型的模型集成及数据交互。
Prompts:提示词管理
Prompts 组件用于模板化、动态选择和管理模型输入,确保指令清晰且上下文相关。
- Prompt templates:支持多种格式,包括 TemplateFormat、MessageTemplate、FewShotPromptTemplate 等,用于定义对语言模型的指令、示例及问题。
- Example selectors:根据输入动态选择最相关的示例,辅助模型生成更准确的响应。
Language models:语言模型调用
提供通用接口调用各类语言模型。
- LLMs:采用文本字符串作为输入并返回文本字符串的模型,如 gpt-3.5-turbo。支持流式输出(Streaming)以优化用户体验。
- Chat models:聊天模型是语言模型的变体,专为对话场景优化,支持缓存(Caching)机制以提升性能。
Output parsers:输出解析器
用于从模型的非结构化输出中提取特定信息。
- 支持获取格式指令、解析结果及带提示的解析。
- 常见类型包括 DateTimeParser(日期时间)、EnumParser(枚举)、ListParser(列表)等,确保输出符合预期格式。
Memory:记忆机制
Memory 涉及在用户与语言模型的交互过程中保留状态概念。交互过程被捕获为 ChatMessages,系统从中摄取、转换和提取知识。内存可以返回多条信息,例如最近的 N 条消息或所有先前消息的摘要。
主要类型包括:
- ConversationBufferMemory:存储完整的对话历史。
- ConversationBufferWindowMemory:仅保留最近 N 轮对话的记忆。
- ConversationTokenBufferMemory:基于 Token 数量限制记忆长度。
- ConversationSummaryMemory:使用摘要形式保存历史对话,节省上下文空间。
Chains:链式调用
Chains 允许将多个组件按顺序组合,形成工作流。
- LLMChain:基础链,将 Prompt 和 LLM 结合。
- SimpleSequentialChain:一般序列链,前一个链的输出作为后一个链的输入,通常有唯一输入和输出变量。
- SequentialChain:支持多个输入和输出变量的序列链,适合复杂逻辑处理。
- RouterChain:路由链,类似条件分支结构,根据输入值选择对应的路径进行后续处理。
Agents:智能代理
某些应用程序需要根据用户输入灵活调用 LLM 和其他工具。代理接口为此提供了灵活性,可访问一套工具并根据输入决定使用哪些工具,甚至将一个工具的输出作为下一个工具的输入。
典型代理类型:
- MathAndWikiAgent:结合数学计算与维基百科查询能力。
- PythonREPLAgent:允许在安全沙箱中执行 Python 代码。


