差别
这里会显示出您选择的修订版和当前版本之间的差别。
| 两侧同时换到之前的修订记录 前一修订版 后一修订版 | 前一修订版 | ||
| langchain二次开发:核心组件详解_chains [2026/04/03 10:57] – [4.3.3 输出传递机制] 张叶安 | langchain二次开发:核心组件详解_chains [2026/04/03 11:00] (当前版本) – [4.9 本章小结] 张叶安 | ||
|---|---|---|---|
| 行 686: | 行 686: | ||
| 路由链的核心思想是: | 路由链的核心思想是: | ||
| - | * 接收用户输入 | + | |
| - | * 根据输入特征决定使用哪个" | + | * 根据输入特征决定使用哪个" |
| - | * 将输入路由到对应的处理 Chain | + | * 将输入路由到对应的处理 Chain |
| **典型应用场景:** | **典型应用场景:** | ||
| - | * **客服系统**:根据问题类型路由到不同部门(技术支持、售后服务、销售咨询) | + | |
| - | * **内容生成**:根据主题路由到不同的写作风格(科技、财经、娱乐) | + | * **内容生成**:根据主题路由到不同的写作风格(科技、财经、娱乐) |
| - | * **数据处理**:根据数据类型选择不同的处理方法(文本、数字、日期) | + | * **数据处理**:根据数据类型选择不同的处理方法(文本、数字、日期) |
| **路由链的工作流程:** | **路由链的工作流程:** | ||
| 行 1113: | 行 1113: | ||
| | 方法/ | | 方法/ | ||
| - | |-----------|------| | ||
| | input_keys | 返回 Chain 需要的输入键列表 | | | input_keys | 返回 Chain 需要的输入键列表 | | ||
| | output_keys | 返回 Chain 产生的输出键列表 | | | output_keys | 返回 Chain 产生的输出键列表 | | ||
| 行 2242: | 行 2241: | ||
| **4.1 Chain 基础概念** | **4.1 Chain 基础概念** | ||
| - | * Chain 是将多个组件串联执行的抽象概念 | + | |
| - | * 实现了统一的接口(input_keys、output_keys、_call、_acall) | + | * 实现了统一的接口(input_keys、output_keys、_call、_acall) |
| - | * 优势包括模块化设计、可组合性、统一接口、内置功能支持 | + | * 优势包括模块化设计、可组合性、统一接口、内置功能支持 |
| **4.2 LLMChain** | **4.2 LLMChain** | ||
| - | * 最基础的 Chain 类型,组合了 PromptTemplate 和 LLM | + | |
| - | * 支持丰富的参数配置(output_key、verbose、callbacks 等) | + | * 支持丰富的参数配置(output_key、verbose、callbacks 等) |
| - | * 可以通过 OutputParser 将输出解析为结构化数据 | + | * 可以通过 OutputParser 将输出解析为结构化数据 |
| **4.3 SequentialChain** | **4.3 SequentialChain** | ||
| - | * **SimpleSequentialChain**:简单顺序执行,单输入单输出传递 | + | |
| - | * **SequentialChain**:更灵活,支持多输入多输出和变量映射 | + | * **SequentialChain**:更灵活,支持多输入多输出和变量映射 |
| - | * 理解输出传递机制对于构建复杂流水线至关重要 | + | * 理解输出传递机制对于构建复杂流水线至关重要 |
| **4.4 RouterChain** | **4.4 RouterChain** | ||
| - | * 根据输入特征动态选择处理路径 | + | |
| - | * **MultiPromptChain**:内置的多目的地路由实现 | + | * **MultiPromptChain**:内置的多目的地路由实现 |
| - | * 可以自定义路由逻辑实现更复杂的决策 | + | * 可以自定义路由逻辑实现更复杂的决策 |
| **4.5 TransformChain** | **4.5 TransformChain** | ||
| - | * 用于 Chain 之间的数据转换 | + | |
| - | * 可以实现文本清洗、格式转换、数据解析等功能 | + | * 可以实现文本清洗、格式转换、数据解析等功能 |
| - | * 是连接不同 Chain 的" | + | * 是连接不同 Chain 的" |
| **4.6 自定义 Chain** | **4.6 自定义 Chain** | ||
| - | * 通过继承 BaseChain 创建自定义 Chain | + | |
| - | * 必须实现 input_keys、output_keys、_call、_acall 方法 | + | * 必须实现 input_keys、output_keys、_call、_acall 方法 |
| - | * 可以添加自定义配置参数和方法 | + | * 可以添加自定义配置参数和方法 |
| **4.7 LCEL (LangChain Expression Language)** | **4.7 LCEL (LangChain Expression Language)** | ||
| - | * LangChain 的新一代声明式语法 | + | |
| - | * 使用管道操作符(|)连接组件 | + | * 使用管道操作符(|)连接组件 |
| - | * 支持 RunnablePassthrough、RunnableParallel、RunnableBranch 等高级特性 | + | * 支持 RunnablePassthrough、RunnableParallel、RunnableBranch 等高级特性 |
| **4.8 Chain 的组合与嵌套** | **4.8 Chain 的组合与嵌套** | ||
| - | * Chain 可以灵活组合和嵌套 | + | |
| - | * 常见模式:分治处理、多路径处理、迭代优化 | + | * 常见模式:分治处理、多路径处理、迭代优化 |
| - | * 遵循最佳实践:单一职责、清晰命名、错误处理、内存管理 | + | * 遵循最佳实践:单一职责、清晰命名、错误处理、内存管理 |
| **学习建议:** | **学习建议:** | ||
| 1. **从简单开始**:先掌握 LLMChain 和 SequentialChain 的基础用法 | 1. **从简单开始**:先掌握 LLMChain 和 SequentialChain 的基础用法 | ||
| + | |||
| 2. **实践为主**:通过实际项目练习 Chain 的组合和嵌套 | 2. **实践为主**:通过实际项目练习 Chain 的组合和嵌套 | ||
| + | |||
| 3. **理解原理**:深入理解 Chain 的执行流程和数据传递机制 | 3. **理解原理**:深入理解 Chain 的执行流程和数据传递机制 | ||
| + | |||
| 4. **关注新版本**:LCEL 是未来趋势,建议在新项目中优先使用 | 4. **关注新版本**:LCEL 是未来趋势,建议在新项目中优先使用 | ||
| + | |||
| 5. **善用调试**:利用 verbose=True 和回调函数调试 Chain | 5. **善用调试**:利用 verbose=True 和回调函数调试 Chain | ||
| 行 2292: | 行 2295: | ||
| 掌握了 Chain 之后,建议继续学习: | 掌握了 Chain 之后,建议继续学习: | ||
| - | * **Memory 组件**:为 Chain 添加记忆能力 | + | |
| - | * **Agent**:让 LLM 自主决策并调用工具 | + | * **Agent**:让 LLM 自主决策并调用工具 |
| - | * **Document Loaders 和 Vector Stores**:构建 RAG 应用 | + | * **Document Loaders 和 Vector Stores**:构建 RAG 应用 |
| - | * **Evaluation**:评估 Chain 的性能和输出质量 | + | * **Evaluation**:评估 Chain 的性能和输出质量 |
| Chain 是 LangChain 的骨架,熟练运用 Chain 将使你能够构建出功能强大、结构清晰的 LLM 应用程序。 | Chain 是 LangChain 的骨架,熟练运用 Chain 将使你能够构建出功能强大、结构清晰的 LLM 应用程序。 | ||