文章目录
基础
介绍
LangChain 是一个开源的 Python AI 应用开发框架, 它提供了构建基于大模型的 AI 应用所需的模块和工具。通过 LangChain, 开发者可以轻松地与大型语言模型 (LLM) 集成, 完成文本生成、问答、翻译、对话等任务。LangChain 降低了 AI 应用开发的门槛, 让任何人都可以基于 LLM 构建属于自己的创意应用。
LangChain的出现背景
随着大型语言模型(如GPT-4)的流行,越来越多的开发者开始探索如何利用这些模型来构建更智能的应用。然而,单纯使用这些模型往往并不足以满足一些实际场景中的需求,例如:
- 多步推理:有些应用需要通过多个推理步骤来获得最终答案,而语言模型本身通常是"单步"的——它仅在每次调用时返回一个响应。
- 上下文管理:应用可能需要在多个请求之间维持上下文状态,尤其是对于复杂的对话或任务。
- 外部资源的整合:很多时候,仅依靠语言模型本身的能力是不够的,可能还需要访问数据库、外部API或本地文件等数据源。
- 任务链式处理:在某些场景中,可能需要将模型的输出传递给另一个模型或者外部工具。
LangChain解决了什么问题
LangChain的出现,主要解决了以下几个问题: - 流程管理: LangChain提供了一个机制来管理和组织多步工作流,允许开发者构建复杂的应用程序,其中每一步都可以是对语言模型的调用或者与其他外部服务的交互。
- 上下文管理: 在对话型应用或者需要保持状态的场景中,LangChain提供了持久化上下文的功能。它允许开发者轻松管理和更新上下文数据。
- 集成外部系统: LangChain简化了与外部系统(如数据库、API、文件系统等)的集成。它提供了多个模块,支持与各种外部数据源交互,并将这些数据源集成到语言模型的工作流中。
- 自定义链: LangChain支持开发自定义的链式任务,可以组合不同的任务和模型,甚至是任务之间的反馈机制,从而提升系统的灵活性和可扩展性。
LangChain的应用场景
LangChain适用于很多场景,尤其是那些需要将语言模型与外部系统或多步骤的任务组合使用的情况。具体包括: - 智能客服/对话系统: 需要多轮对话并根据用户的需求访问不同的数据源(如用户数据库、产品信息等),LangChain可以帮助管理对话状态,并将语言模型的推理与外部数据查询结合起来。
- 数据分析与自动化报告生成: 结合语言模型和数据库查询,可以自动化生成数据分析报告。LangChain能够整合从数据库、API获取的数据并生成结构化或自然语言的报告。
- 搜索引擎与信息提取: 在一些需要进行信息检索的应用中,可以使用LangChain来结合语言模型和信息检索系统,处理查询、过滤结果并生成总结。
- 个性化推荐系统: 结合用户行为数据和LLM,可以创建个性化推荐系统,LangChain能够帮助将多步推荐逻辑与用户数据处理结合起来。
- 自动化编程与代码生成: LangChain也可以应用于自动化代码生成的场景,支持从文档中抽取需求、生成代码、测试代码等一系列操作。
LangChain 特性
LLM 和提示(Prompt):LangChain 对所有 LLM 大模型进行了 API 抽象,统一了大模型访问 API,同时提供了 Prompt 提示模板管理机制。
●链 (Chain):Langchain 对一些常见的场景封装了一些现成的模块,例如:基于上下文信息的问答系统,自然语言生成 SQL 查询等等,因为实现这些任务的过程就像工作流一样,一步一步的执行,所以叫链 (chain)。
●LCEL:LangChain Expression Language (LCEL), langchain 新版本的核心特性,用于解决工作流编排问题,通过 LCEL 表达式,我们可以灵活的自定义 AI 任务处理流程,也就是灵活自定义链 (Chain)。
●数据增强生成 (RAG):因为大模型 (LLM) 不了解新的信息,无法回答新的问题,所以我们可以将新的信息导入到 LLM,用于增强 LLM 生成内容的质量,这种模式叫做 RAG 模式(Retrieval Augmented Generation)。
●Agents:是一种基于大模型(LLM)的应用设计模式,利用 LLM 的自然语言理解和推理能力(LLM 作为大脑)),根据用户的需求自动调用外部系统、设备共同去完成任务,例如:用户输入 “明天请假一天”, 大模型(LLM)自动调用请假系统,发起一个请假申请。
●模型记忆(memory):让大模型 (llm) 记住之前的对话内容,这种能力成为模型记忆(memory)。
原理概述
LangChain 框架组成
LangChain 框架由几个部分组成,包括:
●LangChain 库:Python 和 JavaScript 库。包含接口和集成多种组件的运行时基础,以及现成的链和代理的实现。
●LangChain 模板:Langchain 官方提供的一些 AI 任务模板。
●LangServe:基于 FastAPI 可以将 Langchain 定义的链 (Chain),发布成为 REST API。
●LangSmith:开发平台,是个云服务,支持 Langchain debug、任务监控。
langchain 任务处理流程
langChain 提供一套提示词模板 (prompt template) 管理工具,负责处理提示词,然后传递给大模型处理,最后处理大模型返回的结果,
LangChain 对大模型的封装主要包括 LLM 和 Chat Model 两种类型。
●LLM - 问答模型,模型接收一个文本输入,然后返回一个文本结果。
●Chat Model - 对话模型,接收一组对话消息,然后返回对话消息,类似聊天消息一样。
核心概念
LLMs
LangChain 封装的基础模型,模型接收一个文本输入,然后返回一个文本结果。
Chat Models
聊天模型(或者成为对话模型),与 LLMs 不同,这些模型专为对话场景而设计。模型可以接收一组对话消息,然后返回对话消息,类似聊天消息一样。
消息(Message)
指的是聊天模型(Chat Models)的消息内容,消息类型包括包括 HumanMessage、AIMessage、SystemMessage、FunctionMessage 和 ToolMessage 等多种类型的消息。
提示 (prompts)
LangChain 封装了一组专门用于提示词 (prompts) 管理的工具类,方便我们格式化提示词 (prompts) 内容。
输出解析器 (Output Parsers)
如上图介绍,Langchain 接受大模型 (llm) 返回的文本内容之后,可以使用专门的输出解析器对文本内容进行格式化,例如解析 json、或者将 llm 输出的内容转成 python 对象。
Retrievers
为方便我们将私有数据导入到大模型(LLM), 提高模型回答问题的质量,LangChain 封装了检索框架 (Retrievers),方便我们加载文档数据、切割文档数据、存储和检索文档数据。
向量存储 (Vector stores)
为支持私有数据的语义相似搜索,langchain 支持多种向量数据库。
Agents
智能体 (Agents),通常指的是以大模型(LLM)作为决策引擎,根据用户输入的任务,自动调用外部系统、硬件设备共同完成用户的任务,是一种以大模型(LLM)为核心的应用设计模式。