LangChain 是什么
LangChain 是什么
LangChain 是一个专为简化基于大型语言模型(LLM)的应用程序开发而设计的编程框架,其核心功能包括以下方面:
- 基础定义
作为开源框架,LangChain 提供了标准化的接口和工具链,帮助开发者将 LLM(如 GPT-4、DeepSeek 等)与外部数据源或计算资源结合,构建端到端的智能应用。 - 核心功能与组件
链式结构(Chains):通过模块化组件串联实现复杂任务流程,例如顺序链和检索增强生成(RAG),优化 LLM 的上下文处理能力。
数据整合(Data Connection):支持从数据库、API 等外部来源获取数据,增强模型对实时或专有信息的处理。
记忆机制(Memory):保留对话或任务历史状态,提升交互的连贯性。
代理(Agents):允许模型动态调用工具(如计算器、搜索引擎)完成特定操作,扩展应用场景。 - 开发支持
多语言兼容:提供 Python 和 JavaScript 的软件包,降低开发门槛。
标准化生态:与 Cisco、LlamaIndex 等公司合作推动代理互操作性标准,促进开源社区协作。 - 应用场景
典型用例包括智能聊天机器人、自动化文档分析、知识库增强的问答系统等,开发者可通过其组件快速实现业务逻辑。
简而言之,LangChain 通过抽象化 LLM 的复杂性,使开发者能够专注于业务逻辑设计,而非底层模型适配。
概念
- 聊天模型:通过聊天API公开的LLM,处理消息序列作为输入和输出消息。
- 消息:聊天模型中的通信单位,用于表示模型输入和输出。
- 聊天历史:对话表示为一系列消息,在用户消息和模型响应之间交替。
- 工具:一个具有相关模式的函数,该模式定义了函数的名称、描述及其接受的参数。
- 工具调用:一种聊天模型API,它接受工具模式和消息作为输入,并将这些工具的调用作为输出消息的一部分返回。
- 结构化输出:一种使聊天模型以结构化格式响应的技术,例如与给定模式匹配的JSON。
- 记忆:关于对话的信息,它被持久化,以便在未来的对话中使用。
- 多模态:能够处理不同形式的数据,如文本、音频、图像和视频。
- 可运行接口:许多LangChain组件和LangChain表达式语言所基于的基本抽象。
- 流式处理:LangChain流式处理API,用于在生成结果时显示结果。
- LangChain表达式语言(LCEL):用于编排LangChain组件的语法。对于更简单的应用程序最有用。
- 文档加载器:将源加载为文档列表。
- 检索:信息检索系统可以根据查询从数据源检索结构化或非结构化数据。
- 文本分割器:将长文本分割成更小的块,这些块可以单独索引,以实现精细检索。
- 嵌入模型:在向量空间中表示文本或图像等数据的模型。
- 矢量存储:矢量和相关元数据的存储和高效搜索。
- 检索器:一个从知识库中返回相关文档以响应查询的组件。
- 检索增强生成(RAG):一种通过将语言模型与外部知识库相结合来增强语言模型的技术。
- 代理:使用语言模型选择要采取的一系列行动。代理可以通过工具与外部资源交互。
- 提示模板:用于分解模型“提示”(通常是一系列消息)的静态部分的组件。可用于序列化、版本控制和重用这些静态部分。
- 输出解析器:负责获取模型的输出,并将其转换为更适合下游任务的格式。在工具调用和结构化输出普遍可用之前,输出解析器主要是有用的。
- 少镜头提示:一种通过在提示中提供几个要执行的任务示例来提高模型性能的技术。
- 示例选择器:用于根据给定的输入从数据集中选择最相关的示例。示例选择器用于少数镜头提示,为提示选择示例。
- 异步编程:在异步环境中使用LangChain应该知道的基础知识。
- 回调:回调允许在内置组件中执行自定义辅助代码。回调用于流式传输LangChain中LLM的输出,跟踪应用程序的中间步骤等等。
- 跟踪:记录应用程序从输入到输出的步骤的过程。跟踪对于调试和诊断复杂应用程序中的问题至关重要。
- 评估:评估人工智能应用程序性能和有效性的过程。这涉及根据一组预定义的标准或基准测试模型的响应,以确保其符合所需的质量标准并实现预期目的。这个过程对于构建可靠的应用程序至关重要。
- 测试:验证集成或应用程序的组件是否按预期工作的过程。测试对于确保应用程序正确运行以及对代码库的更改不会引入新的错误至关重要。
如何安装LangChain软件包
LangChain生态系统分为不同的包,允许您选择要安装的功能。
要安装主langchain软件包,请运行:
pip install langchain
或者
conda install langchain -c conda-forge
LangChain的大部分价值来自于将其与各种模型提供者、数据存储等集成。默认情况下,不安装执行此操作所需的依赖项。您需要单独安装特定集成的依赖项。
除了langsmith SDK之外,LangChain生态系统中的所有包都依赖于LangChain核心,其中包含其他包使用的基类和抽象。下面的依赖关系图显示了不同包之间的关系。有向箭头表示源包依赖于目标包:
安装包时,您不需要显式安装该包的显式依赖项(如langchain core)。但是,如果您使用的功能仅在该依赖关系的特定版本中可用,则可以选择使用。如果这样做,您应该确保安装或固定的版本与您使用的任何其他集成包兼容。
LangChain core
langchain核心包包含langchain生态系统其余部分使用的基本抽象,以及langchain表达式语言。它由langchain自动安装,但也可以单独使用。安装方式:
pip install langchain-core
集成包
某些集成,如OpenAI和Anthropic,都有自己的包。任何需要自己的软件包的集成都将在集成文档中记录下来。您可以在“Partner libs”下拉列表下的API参考中看到所有集成包的列表。要安装其中一个,请运行:
pip install langchain-openai