LangChain 是一个用于开发由语言模型驱动的应用程序的框架。它提供了一系列模块化组件,可以组合使用以构建复杂的AI应用。本文档概述了LangChain的核心组件结构。

核心组件概览

LangChain框架的组件可以分为以下几个主要类别:

  1. 模型输入输出(Model I/O)

    • 与各种语言模型的接口

    • 提示模板和提示管理

    • 输出解析和处理

  2. 检索(Retrieval)

    • 向量存储和检索系统

    • 文档加载和处理

    • 嵌入模型和索引

  3. 记忆(Memory)

    • 对话历史管理

    • 状态持久化

    • 上下文窗口优化

  4. 链(Chains)

    • 组件顺序执行

    • 条件流控制

    • 预定义链类型

  5. 智能体(Agents)

    • 工具使用和规划

    • 反思与自我纠错

    • 多智能体协作

  6. 回调(Callbacks)

    • 日志记录和监控

    • 流式处理

    • 错误处理

组件关系图

+---------------------+     +---------------------+     +-------------------+
|                     |     |                     |     |                   |
|   Model I/O         |<--->|   Chains            |<--->|   Retrieval       |
|   - 提示模板        |     |   - 组件串联        |     |   - 向量存储      |
|   - 语言模型        |     |   - 流程控制        |     |   - 文档加载器    |
|   - 输出解析器      |     |   - 链类型          |     |   - 嵌入模型      |
|                     |     |                     |     |                   |
+----------^----------+     +---------^-----------+     +--------^----------+
           |                          |                          |
           |                          |                          |
           v                          v                          v
+----------+--------------------------+------------------------+-----------+
|                                                                           |
|   Agents                                                                  |
|   - 工具使用和规划                                                        |
|   - 反思与自我纠错                                                        |
|   - 多智能体协作                                                          |
|                                                                           |
+---------------^-------------------------------------------------------^---+
                |                                                       |
                |                                                       |
                v                                                       v
+---------------+---+                                     +-------------+-----+
|                   |                                     |                   |
|   Memory          |                                     |   Callbacks       |
|   - 对话历史      |                                     |   - 日志记录      |
|   - 状态持久化    |                                     |   - 监控          |
|   - 上下文窗口    |                                     |   - 流式处理      |
|                   |                                     |                   |
+-------------------+                                     +-------------------+

组件交互说明

  1. 核心交互流程:

    • Model I/O 为整个系统提供与语言模型通信的能力,包括提示工程和输出处理

    • Chains 组织各组件的执行顺序和逻辑,是连接其他组件的中心环节

    • Retrieval 为模型提供外部知识,增强回答能力和事实准确性

  2. Agents 的核心地位:

    • 智能体利用所有其他组件作为基础设施来完成复杂任务

    • 智能体可以根据需要动态调用 Model I/O、Chains 和 Retrieval

    • 通过规划和自我反思,实现更高级的推理和决策能力

  3. 辅助功能:

    • Memory 为长对话提供上下文保存能力,增强连贯性

    • Callbacks 提供全局监控和日志记录,便于调试和优化

  4. LangChain 表达式语言 (LCEL):

    • 为上述所有组件提供统一的组合接口

    • 支持所有组件的可组合性,使系统构建更加灵活

    • 简化了复杂工作流的构建和维护