概念指南
本指南提供了对 LangChain 框架以及更广泛的人工智能应用背后关键概念的解释。
我们建议您在深入概念指南之前,至少完成一个教程。这将提供实际的背景知识,使您更容易理解此处讨论的概念。
概念指南不包含逐步说明或具体的实现示例——这些内容可以在 操操作指南 和 教程 中找到。如需详细的参考材料,请参阅 API 参考。
高级
- 为什么选择 LangChain?: LangChain 提供的价值概述。
- 架构: LangChain 生态系统中包的组织方式。
概念
- 聊天模型: 通过聊天API暴露的大型语言模型,将消息序列作为输入并输出一条消息。
- 消息: 对话模型中的通信单元,用于表示模型的输入和输出。
- 聊天历史: 以用户消息和模型回复交替组成的消息序列表示的对话。
- 工具: 一个带有相关模式的函数,该模式定义了函数的名称、描述以及它接受的参数。
- 工具调用: 一种聊天模型API,接受工具模式和消息作为输入,并在输出消息中返回这些工具的调用。
- 结构化输出: 一种技术,用于让聊天模型以结构化格式响应,例如与给定模式匹配的JSON。
- 存储: 有关对话的信息,这些信息会被保存下来,以便在未来的对话中使用。
- 多模态: 能够处理以不同形式出现的数据,例如文本、音频、图像和视频。
- 可运行接口: 许多 LangChain 组件和 LangChain 表达式语言都是基于此基本抽象构建的。
- 流式传输: LangChain 流式传输 API,可在结果生成时实时呈现。
- LangChain表达式语言(LCEL): 一种用于编排LangChain组件的语法。最适合用于较简单的应用程序。
- 文档加载器: 将源文件加载为文档列表。
- 检索: 信息检索系统可以根据查询从数据源中检索结构化或非结构化数据。
- 文本分割器: 将长文本拆分为较小的块,以便单独索引,从而实现细粒度检索。
- 嵌入模型: 将文本或图像等数据表示为向量空间中的模型。
- 向量存储: 向量及其相关元数据的存储和高效搜索。
- 检索器: 一个组件,可根据查询从知识库中返回相关文档。
- 检索增强生成(RAG): 一种通过将语言模型与外部知识库结合来增强其能力的技术。
- 代理: 使用 语言模型 来选择要执行的一系列操作。代理可以通过 工具 与外部资源进行交互。
- 提示模板: 用于提取模型“提示”中静态部分的组件(通常是一系列消息)。有助于序列化、版本控制和重用这些静态部分。
- 输出解析器: 负责将模型的输出转换为更适合下游任务的格式。在通用工具调用和结构化输出可用之前,输出解析器主要起到了重要作用。
- 少样本提示: 一种通过在提示中提供少量任务示例来提高模型性能的技术。
- 示例选择器: 用于根据给定输入从数据集中选择最相关的示例。示例选择器用于少样本提示中,以选择提示所需的示例。
- 异步编程: 使用 LangChain 进行异步上下文开发时应了解的基础知识。
- 回调: 回调功能允许在内置组件中执行自定义的辅助代码。回调用于在 LangChain 中从大语言模型流式传输输出、追踪应用程序的中间步骤等。
- 追踪: 记录应用程序从输入到输出所采取步骤的过程。在复杂应用程序中,追踪对于调试和诊断问题至关重要。
- 评估: 评估人工智能应用程序性能和效果的过程。这包括将模型的响应与一组预定义的标准或基准进行测试,以确保其达到预期的质量标准并实现既定目标。此过程对于构建可靠的应用程序至关重要。
- 测试: 验证集成或应用程序的某个组件是否按预期工作的过程。测试对于确保应用程序行为正确以及确保代码库的更改不会引入新错误至关重要。
术语表
- AIMessageChunk: 从AI消息中获取的部分响应。在从聊天模型流式传输响应时使用。
- AIMessage: 表示来自AI模型的完整响应。
- astream_events: 从 LCEL 链中流式传输细粒度信息。
- BaseTool: LangChain 中所有工具的基础类。
- 批量: 用于使用批量输入执行可运行对象。
- bind_tools: 允许模型与工具进行交互。
- 缓存: 存储结果以避免对聊天模型进行重复调用。
- 聊天模型: 处理多种数据模态的聊天模型。
- 可配置的可运行对象: 创建可配置的可运行对象。
- 上下文窗口: 对话模型能够处理的最大输入大小。
- 对话模式: 聊天互动中的常见模式。
- 文档: LangChain 对文档的表示。
- 嵌入模型: 用于为各种数据类型生成向量嵌入的模型。
- HumanMessage: 表示来自人类用户的消息。
- 注入状态: 注入到工具函数中的状态。
- InjectedStore: 一个可以注入到工具中的存储,用于数据持久化。
- 注入工具参数: 用于将参数注入工具函数的机制。
- 输入和输出类型: Runnables 中用于输入和输出的类型。
- 集成包: 与 LangChain 集成的第三方包。
- 集成测试: 验证组件之间交互正确性的测试,通常在可以访问支持集成的底层API的情况下运行。
- 调用: 用于调用 Runnable 的标准方法。
- JSON模式: 以JSON格式返回响应。
- langchain-community: LangChain 的社区驱动组件。
- langchain-core: LangChain 核心包。包含基础接口和内存中实现。
- LangChain: 一个用于高级组件的包(例如,一些预构建的链)。
- langgraph:LangChain的强大编排层。用于构建复杂的管道和工作流。
- langserve: 用于将 LangChain Runnables 部署为 REST 端点。使用 FastAPI。主要用于 LangChain Runnables,目前不与 LangGraph 集成。
- LLMs(旧版): 旧版语言模型,以字符串作为输入并返回字符串作为输出。
- 管理聊天历史记录: 维护和管理聊天历史记录的技术。
- OpenAI格式: OpenAI用于聊天模型的消息格式。
- RunnableConfig 的传播: 通过 Runnables 传播配置。如果使用 Python 3.9、3.10 和异步,请阅读。
- 速率限制: 对话模型的客户端速率限制。
- RemoveMessage: 用于从聊天历史记录中移除消息的抽象,主要用于 LangGraph。
- 角色: 表示聊天消息的角色(例如,用户、助手)。
- RunnableConfig: 用于向 Runnables 传递运行时信息(例如
run_name,run_id,tags,metadata,max_concurrency,recursion_limit,configurable)。 - 聊天模型的标准参数: 如API密钥、
temperature和max_tokens等参数。 - 标准测试: 所有集成都必须通过的一组定义好的单元测试和集成测试。
- 流式传输: 用于从 Runnable 或图中流式传输输出。
- 分词: 将数据转换为标记以及反之的过程。
- 令牌: 语言模型在内部读取、处理和生成的基本单位。
- 工具产物: 向工具的输出添加产物,这些产物不会发送给模型,但可用于后续处理。
- 工具绑定: 将工具绑定到模型。
- @tool: 用于在 LangChain 中创建工具的装饰器。
- 工具包: 一组可协同使用的工具。
- ToolMessage: 表示包含工具执行结果的消息。
- 单元测试: 验证各个组件正确性的测试,在隔离环境中运行,不访问互联网。
- 向量存储: 专门用于存储和高效搜索向量嵌入的数据存储库。
- with_structured_output: 一个辅助方法,用于原生支持 工具调用 的聊天模型,以获取与通过 Pydantic、JSON Schema 或函数指定的模式相匹配的结构化输出。
- with_types: 用于覆盖可运行对象的输入和输出类型的的方法。在处理复杂的 LCEL 链以及使用 LangServe 部署时非常有用。