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