# 一、为什么我们需要LangChain?
# 1、从API调用到完整AI应用的跨越
原始API调用的局限性
- 缺乏记忆能力
- 每次API请求独立,无法记住历史对话。
- 示例:先问“爱因斯坦是谁?”,再问“他是哪国人?”时,AI因缺乏上下文而无法理解“他”指代谁。
- 上下文窗口限制
- 大模型的上下文长度有限,无法一次性处理超长文档(如500页PDF)。
- 超出部分会被截断,导致信息丢失。
- 不擅长精确计算
- AI并非真正的计算器,而是基于概率预测下一个Token。
- 在数学问题上容易出错,如错误计算订单总额,存在业务风险。
# 2、传统解决方案及其痛点
传统手动编码解决思路
- 实现记忆功能
- 使用列表手动存储历史消息,并在每次请求时将完整对话历史传给AI。
- 处理长文档知识
- 将文档转换为向量,存入向量数据库。
- 用户提问时,通过相似性搜索提取相关段落,仅将相关内容作为上下文传给AI。
- 解决计算问题
- 让AI生成执行计算的代码(如Python代码),再由程序执行代码得出准确结果。
- 开发痛点
- 需重复编写相似的提示词和处理逻辑。
- 开发效率低,维护成本高。
# 3、LangChain:专为AI应用开发而生的框架
LangChain的核心理念
- 超越简单的API调用
- 主张AI应用应具备:
- 上下文感知:理解对话历史。
- 外部数据连接:访问知识库、数据库等。
- 工具调用能力:借助计算器、搜索引擎等外部工具完成任务。
- 主张AI应用应具备:
- 目标
- 简化复杂AI应用的开发流程,让开发者专注于应用逻辑而非底层细节。
# 4、LangChain的核心组件
- 常用组件
- Models:支持多种大模型。
- Prompts & Templates:提示词管理与模板化。
- Memory:对话状态管理。
- Document Loaders:加载各类文档(PDF、Word等)。
- Retrievers:从数据库中检索相关信息。
- Chains:将多个步骤或组件串联成工作流。
- Agents:能自主决策并调用工具的智能体。
# 5、LangChain的优势
- 简化开发
- 示例:实现记忆
- 无需手动维护消息列表。
- 创建
ConversationBufferMemory
实例,与模型一起传入对话链。 - 框架自动处理历史消息的传递与更新,为AI“外接记忆”。
- 示例:实现记忆
- 统一接口(抽象层)
- 模型抽象:
- 无论后端是 OpenAI、百度文心、阿里通义千问还是其他模型,都可视为
ChatModel
。 - 切换模型时,只需修改初始化代码,业务逻辑无需大改。
- 无论后端是 OpenAI、百度文心、阿里通义千问还是其他模型,都可视为
- 数据库抽象:
- 支持多种向量数据库(如Pinecone、Chroma、Faiss等)。
- 切换数据库时,除初始化语句外,其余代码基本无需改动。
- 模型抽象:
- 提升灵活性与可维护性
- 极大降低开发复杂度。
- 应用更易于维护、升级和扩展。
# 二、与Assistant API的对比
# 1、OpenAI Assistants API:开箱即用的智能助手
Assistants API 简介
- 定义与定位
- Assistants API 是 OpenAI 推出的高级 API,旨在简化智能助手的开发。
- 它不仅调用模型,还集成了对话历史管理、文件访问和工具调用等能力。
- 核心优势
- 自动维护对话历史
- 无需开发者手动管理消息列表,API 自动保留上下文,解决“记忆”问题。
- 内置工具支持
- 支持多种外部工具,如:
- 文件检索器:从上传的文档中检索信息。
- 代码解释器:执行代码进行精确计算或数据处理。
- 自定义函数:调用开发者定义的外部函数,扩展AI能力。
- 支持多种外部工具,如:
- 自动维护对话历史
# 2、LangChain:通用、灵活的AI应用开发框架
LangChain 核心理念
- 框架定位
- LangChain 是一个开源的应用开发框架,旨在构建强大的AI应用。
- 强调AI应用应能感知上下文、连接外部数据、调用工具进行交互。
- 核心组件
- 提供丰富的组件(Models, Prompts, Memory, Retrievers, Chains, Agents 等)来构建复杂应用。
# 3、Assistants API 与 LangChain 的关键区别
# 3.1、本质区别
比较维度 | Assistants API | LangChain |
---|---|---|
本质 | API(OpenAI 提供的服务) | 应用框架(开源开发工具) |
使用方式 | 发送提示,接收响应,许多细节由 OpenAI 后台处理。 | 利用组件和工具构建应用,控制力更强。 |
# 3.2、支持模型范围
- Assistants API
- 仅支持 OpenAI 自家的模型(如 GPT-4)。
- 无法直接集成其他厂商的模型(如百度文心、阿里通义千问)。
- LangChain
- 通用框架,不隶属于任何AI服务提供商。
- 可集成多种来源的AI模型,提供极大的模型选择灵活性。
# 3.3、简易性 vs. 灵活性
- Assistants API
- 优点:使用简单,上手快。OpenAI 隐藏了大量技术细节,适合快速开发。
- 缺点:定制化能力有限,开发者难以进行深度调整。
- LangChain
- 优点:功能极其灵活,作为开源框架,可查看、修改源码,满足复杂和高度定制化的需求。
- 缺点:学习曲线相对陡峭,需要更多配置。
# 3.4、应用范围
- Assistants API
- 主要用于构建对话型应用,如聊天机器人、虚拟助手。
- LangChain
- 应用范围更广,可构建从简单聊天机器人到复杂AI系统的各类应用,因为它能轻松整合各种外部资源和接口。
# 4、选择建议
- 选择 Assistants API 如果:
- 你希望快速上手,开发基于 OpenAI 模型的应用。
- 项目需求相对标准,不需要深度定制。
- 优先考虑开发效率和简单性。
- 选择 LangChain 如果:
- 你需要构建更广泛、更复杂或高度定制化的应用。
- 希望应用能支持多种AI模型(包括国产大模型),并具备灵活切换的能力。
- 需要对应用的每个环节有完全的控制权。
# 三、安装LangChain及了解核心模块
# 1、LangChain的安装方法
LangChain的安装非常简单,与安装其他Python包的方式完全相同。
# 安装步骤:
在 Jupyter Notebook 中安装: 在代码单元格中输入以下命令并运行:
!pip install langchain
1在终端或命令提示符 (CMD) 中安装: 打开终端,输入以下命令:
pip install langchain
1(对于Python 3环境,可能需要使用
pip3 install langchain
)
提示:LangChain的官方文档是学习的重要资源,建议收藏以备随时查阅。
# 2、LangChain的核心组件
LangChain提供了许多模块化组件,这些组件是构建复杂AI应用的基石。了解这些核心组件是学习LangChain的关键。
# 2.1、Model (模型)
- 功能:提供语言理解和生成的核心能力,是AI应用的“大脑”。
- 说明:可以集成来自不同AI服务提供商的模型,如OpenAI、百度文心、阿里通义等。
# 2.2、Memory (记忆)
- 功能:用于存储和管理对话历史或相关的上下文信息。
- 重要性:是构建对话型AI应用的关键,确保应用能保持对话的连贯性和上下文感知能力。
# 2.3、Chain (链)
- 功能:将不同的组件(如模型、提示词、工具等)串联起来,形成一个有序的执行流程。
- 优势:允许创建复杂的、多步骤的应用流程,每个组件负责处理特定的任务。
# 2.4、Retriever (检索器)
- 功能:负责从外部信息源(如文档、数据库、网页)中检索相关信息。
- 重要性:极大地扩展了模型的知识面,通过提供相关上下文,显著提高回答的准确性和相关性。
# 2.5、Agent (智能体)
- 定义:一个基于大模型的、能够执行一系列动作的智能体。
- 核心理念:
- 利用大模型的推理能力。
- 能够根据当前任务和环境,动态评估并自主决定下一步的行动路径(例如,是直接回答、查询数据库还是执行计算)。
- 可以调用预定义的工具(如搜索、计算)来完成复杂任务。