1. 基本概念
- 链(Chains) :LangChain 通过链的形式组合各个组件,以实现复杂的应用。链可以是简单的,也可以是复杂的多步操作。
- 组件(Components) :链中的各个组成部分,包括提示(prompts)、模型(models)、解析器(parsers)等。
- LangChain Expression Language (LCEL) :一种直观的链式组合语法,支持高级功能如流处理、异步调用、批处理、并行化、重试、回退和追踪。
2. 提示(Prompts)
-
Prompt Templates:定义输入格式的模板。
- ChatPromptTemplate:用于聊天模型的提示模板。
- PromptTemplate:用于常规语言模型的提示模板。
3. 模型(Models)
-
语言模型(LLMs) :用于生成文本的模型,如 OpenAI 的 GPT 系列。
- ChatOpenAI:OpenAI 的聊天模型。
- OpenAI:OpenAI 的常规语言模型。
- Anthropic:Anthropic 的语言模型,如 Claude 系列。
4. 解析器(Parsers)
-
Output Parsers:将模型输出解析为特定格式的解析器。
- StrOutputParser:将输出解析为字符串。
5. 内存(Memory)
-
Memory Objects:用于在调用之间持久化数据。
- ConversationBufferMemory:用于对话链条的内存对象。
- SimpleMemory:简单的键值对内存。
6. 工具(Tools)
-
工具(Tools) :代理用来与外界交互的接口。
- 名称(Name) :工具的名称。
- 描述(Description) :工具的描述。
- JSON schema:工具输入的 JSON 模式。
- 函数(Function) :工具执行的具体函数。
- 直接返回结果(Return Direct) :是否直接将工具的结果返回给用户。
-
内置工具(Built-in Tools) :如 WikipediaQueryRun。
-
自定义工具(Custom Tools) :用户可以定义自己的工具。
7. 工具包(Toolkits)
- 工具包(Toolkits) :为特定任务组合在一起的工具集合,提供便利的加载方法。
8. 链条(Chains)
- LLMChain:通过提示模板和语言模型组合而成的链。
- SequentialChain:顺序执行的链条。
- ParallelChain:并行执行的链条。
- RouterChain:基于条件路由的链条。
- Memory Chain:使用内存对象的链条。
- Structured Output Chain:生成结构化输出的链条。
9. LangChain Expression Language (LCEL)
- 基本组件(Base Components) :所有 LCEL 对象都实现 Runnable 接口。
- 组合原语(Composition Primitives) :如并行化组件、添加回退、动态配置等。
10. 高级功能
- 流处理(Streaming) :实时处理模型输出。
- 异步调用(Asynchronous Calls) :异步执行链条。
- 批处理(Batching) :批量处理输入。
- 并行化(Parallelization) :并行执行多个链条。
- 重试(Retries) :失败后的重试机制。
- 回退(Fallbacks) :失败后的回退策略。
- 追踪(Tracing) :对链条执行过程的追踪和日志记录。
11. 错误处理
- ToolException:工具执行过程中抛出的异常。
- 错误处理函数(Error Handling Functions) :自定义错误处理逻辑。
12. OpenAI 函数
- OpenAI Functions:LangChain 工具可以转换为 OpenAI 函数格式。
13. 超时和迭代限制
- 最大执行时间(Max Execution Time) :设置代理的最大执行时间。
- 最大迭代次数(Max Iterations) :设置代理的最大迭代次数。
14. 中间步骤访问
- 返回中间步骤(Return Intermediate Steps) :返回代理执行过程中的中间步骤。
15. 处理解析错误
- 处理解析错误(Handle Parsing Errors) :自定义解析错误的处理方式。