什么是 LangChain?

作者

Dave Bergmann

Senior Staff Writer, AI Models

IBM Think

Cole Stryker

Staff Editor, AI Models

IBM Think

什么是 LangChain?

LangChain 是一个开源编排框架,用于使用大语言模型 (LLM) 开发应用程序。LangChain 的工具和 API 用于基于 Python 和 Javascript 的库,可以简化构建聊天机器人虚拟代理等大语言模型驱动型应用程序的过程。

LangChain 几乎可以作为所有大语言模型的通用接口,为构建大语言模型应用程序并将其与外部数据源和软件工作流程集成提供集中式开发环境。LangChain 基于模块的方法可支持开发人员和数据科学家动态比较不同的提示,甚至比较不同的基础模型,而无需重写代码。这种模块化环境还可支持程序使用多个大语言模型:例如,应用程序使用一个大语言模型解释用户查询,并使用另一个 大语言模型编写响应。

LangChain 由 Harrison Chase 于 2022 年 10 月推出,之后迅速脱颖而出:截至 2023 年 6 月,LangChain 是 Github 上增长最快的开源项目。1 恰逢接下来的一个月 OpenAI 的 ChatGPT 发布,在生成式 AI 受到广泛欢迎之后,LangChain 在让发烧友更容易使用生成式 AI 方面发挥了重要作用。

LangChain 可以促进大语言模型和自然语言处理 (NLP) 的大多数用例,例如聊天机器人、智能搜索、问答、总结服务,甚至能够实现机器人流程自动化的虚拟代理。

LangChain 与大语言模型集成

大语言模型不是独立的应用程序:这是预训练的统计模型,必须与应用程序(在某些情况下,特定数据源)配对才能实现目的。

例如,Chat-GPT 不是大语言模型:它是一种聊天机器人应用程序,根据您选择的版本,可以使用 GPT-3.5 或 GPT-4 语言模型。虽然 GPT 模型可以解读用户的输入并组成自然语言响应,但它可作为应用程序(除其他工具外)为用户提供输入和阅读的界面,以及治理聊天机器人体验的用户体验设计。即使在企业层面,Chat-GPT 也不是唯一使用 GPT 模型的应用程序:Microsoft 使用 GPT-4 支持 Bing Chat。

此外,尽管基础模型(例如为大语言模型提供支持的模型)是在大量数据集上进行预训练,但它们并非无所不知。如果特定任务需要访问特定的上下文信息,例如内部文档或领域专业知识,则大语言模型必须连接这些外部数据源。即使您只是希望模型能够反映对当前事件的实时感知,它也需要外部信息:模型的内部数据仅在预训练的时间段内为最新版本。

同样,如果给定的生成式 AI 任务需要访问外部软件工作流程(例如,如果您希望虚拟代理与 Slack 集成),那么您将需要一种方法集成大语言模型和该软件的 API

虽然这些集成通常可以通过完全手动代码来实现,但 LangChain 和 IBM® watsonx AI 产品系列这样的编排框架可以极大地简化这个过程。它们还让尝试使用不同大语言模型比较结果变得更加容易,因为只需对代码进行最小的更改即可交换不同的模型。

LangChain 的工作原理是什么?

LangChain 的核心是一个开发环境,LangChain 通过使用抽象方法简化大语言模型应用程序的编程:将一个或多个复杂流程表示为封装所有组成步骤的命名组件,简化代码。

抽象是日常生活和语言的常见元素。 例如,“π”允许我们表示圆的周长与其直径的比值,而无需写出它的无限位数。同样,恒温器使我们能够控制家中的温度,而无需了解所需的复杂电路 — 我们只需要知道不同的恒温器设置如何转化为不同的温度。

LangChain 本质上是一个 Python 和 Javascript 的抽象库,代表使用语言模型所需的常见步骤和概念。这些模块化组件(如函数和对象类)充当生成式 AI 程序的构建块。它们可以“链接”在一起来创建应用程序,最大限度地减少执行复杂 NLP 任务所需的代码量和深入理解。尽管 LangChain 的抽象方法可能会限制专家程序员精细定制应用程序的程度,但它使专家和新手能够快速进行实验和原型设计。

导入语言模型

几乎任何大语言模型都可以在 LangChain 中使用。只要有 API 密钥,将语言模型导入 LangChain 就很容易。大语言模型类旨在为所有模型提供标准接口。

大多数大语言模型提供商会要求您创建一个帐户,以便获得 API 密钥。其中一些 API(尤其是那些用于专有闭源模型的 API,例如 OpenAI 或 Anthropic 提供的 API)可能会产生相关成本。

许多开源模型(例如 BigScience 的 BLOOM、Meta AI 的 LLaMa 和 Google 的 Flan-T5)都可以通过 Hugging Face 进行访问。IBM watsonx 通过与 Hugging Face 合作,还提供一套精选的开源模型。使用任一服务创建账户将支持您为该提供商提供的任何模型生成 API 密钥。

LangChain 并不局限于开箱即用的基础模型:CustomLLM支持自定义大语言模型包装器。同样,您可以使用 IBM watsonx API 和 Python SDK(包括 LangChain 集成)在 LangChain 中构建应用程序,其中包含您已经使用 WatsonxLLM 类(以及该模型的特定项目 ID)针对您的特定需求进行训练或微调的模型)。

提示模板

提示是向大语言模型发出的指令。编写提示的“艺术”通常被称为提示工程,它能有效提供必要的上下文,让大语言模型通过对您最实用的方式解读输入和结构输出。

LangChain 中的 PromptTemplate 类可以设置提示组成的格式,无需手动硬编码上下文和查询。提示的重要元素也同样作为正式类输入,如 input_variables。因此,提示模板可以包含并重现上下文、说明(例如“不要使用技术术语”)、指导响应的一组示例(即所谓的“少样本提示”)、指定的输出格式或标准化的待回答问题。您可以保存并命名一个有效的结构化提示模板,并根据需要轻松地重复使用。

尽管这些元素都可以手动编码,但 PromptTemplate 模块可以与其他 LangChain 功能(例如同名)顺利集成。

顾名思义,是 LangChain 工作流程的核心。它们将大语言模型与其他组件结合起来,通过执行一系列功能创建应用程序。

最基本的链是 LLMChain。它只是调用一个模型和该模型的提示模板。例如,假设您将提示保存为“ExamplePrompt”并希望基于 Flan-T5 运行。您可以从 langchain.chains 导入 LLMChain,然后定义 chain_example = LLMChain(llm = flan-t5, prompt = ExamplePrompt)。要为给定输入运行链,只需调用 chain_example.run(“input”)

要将一个函数的输出作为下一个函数的输入,可以使用 SimpleSequentialChain。每个功能可以使用不同的提示、不同的工具、不同的参数甚至不同的模型,取决于您的具体需求。

索引

为了完成某些任务,大语言模型需要访问未包含在训练数据集中的特定外部数据源,如内部文档、电子邮件或数据集。LangChain 将此类外部文档统称为“索引”。

文档加载器

LangChain 为第三方应用程序提供多种文档加载器 (链接位于 ibm.com 站外)。这样可以轻松地从文件存储服务(例如 Dropbox、Google Drive 和 Microsoft OneDrive)、网络内容(例如 YouTube、PubMed 或特定 URL)、协作工具(例如 Airtable、Trello、Figma 和 Notion)、数据库(如 Pandas、MongoDB 和 Microsoft)等来源导入数据。

矢量数据库

与“传统的”结构化数据库不同,矢量数据库 通过将数据点转换为 矢量嵌入来表示数据点:以具有固定维数的矢量形式进行的数字表示,通常使用 无监督学习方法对相关数据点进行集群处理。即使对于海量数据集,这也可以实现低延迟查询,从而大大提高效率。矢量嵌入还能存储每个矢量的元数据,进一步提高搜索可能性。

LangChain 提供超过 25 种不同的嵌入方法,以及超过 50 种不同的矢量存储(云托管和本地)的集成。

文本分割器 

为了提高速度和减少计算需求,通常明智的做法是将大型文本文档分割成较小的部分。LangChain 的 TextSplitters 将文本分割成具有语义意义的较小部分,然后可以使用您选择的方法和参数进行组合。

检索

连接外部知识来源后,模型必须能够根据需要快速检索和整合相关信息。与 watsonx 一样,LangChain 提供 检索增强生成 (RAG):  检索器 模块接受字符串查询作为输入,并返回 文档列表作为输出。

通过 LangChain,我们还可以构建智能体 RAG 系统。 在传统的 RAG 应用程序中,LLM 会提供一个矢量数据库以供在形成响应时参考。相比之下,agentic AI 应用程序并不仅限于数据检索。Agenic RAG 还包括用于解决数学计算、撰写电子邮件、执行数据分析等任务的工具。

内存

默认情况下,大语言模型对之前的会话没有任何长期记忆(除非将聊天历史记录用作查询的输入)。LangChain 可以通过向系统添加内存的简单实用程序解决这个问题,其选项范围从保留所有会话的全部内容到保留迄今为止的会话总结,再到保留最近的 n 个会话。

工具

尽管大语言模型拥有强大的功能和广泛的用途,但它们也存在严重的局限性:即缺乏最新信息、缺乏特定领域的专业知识以及数学方面的普遍难点。

LangChain 工具是一组功能,可支持 LangChain 代理与现实世界的信息进行交互,以扩展或改进可以提供的服务。著名的 LangChain 工具示例包括:

  • Wolfram Alpha:提供强大的计算和数据可视化功能,实现复杂的数学功能。

  • Google 搜索:提供 Google 搜索访问权限,为应用程序和代理提供实时信息。

  • OpenWeatherMap:获取天气信息。

  • 维基百科:支持对维基百科文章信息进行高效访问。

专家为您带来最新的 AI 趋势

获取有关最重要且最有趣的 AI 新闻的精选洞察分析。订阅我们的每周 Think 时事通讯。请参阅 IBM 隐私声明

谢谢!您已订阅。

您的订阅将以英语提供。您会在每份时事通讯中找到一个取消订阅链接。您可以在此处管理您的订阅或取消订阅。有关更多信息,请参阅我们的 IBM 隐私声明

LangChain 智能体

我们可以使用 LangChain 框架构建 智能体 ,让 LLM 能够做出决策、使用工具并逐步完成复杂的任务,而不仅仅是生成单个文本响应。与仅基于 LLM 的简单提示与响应交互不同,基于 LangChain 的智能体能够思考规划、执行一系列操作、学习并适应环境。

LangChain 为创建 AI 智能体提供了一个现成、可扩展的框架,简化了用户体验,因此无需构建新的工具选择逻辑、推理循环(如 ReAct 智能体)、观察/行动跟踪或提示协调和格式化。

具体的 LangChain 包、类和方法因您打算使用的 AI 平台而异。WatsonXLLM 类中允许使用 LangChain 与 watsonx.ai 模型进行通信的一些关键组件包括:

  • langchain_ibm:负责 LangChain IBM 整合的软件包。要使用以下任何类或方法,必须安装此软件包。
  • ibm_watsonx_ai:该库可连接到 watsonx.ai 服务,例如 IBM Cloud 和 IBM Cloud Pak for Data。
  • APIClient ibm_watsonx_ai 库的主类,用于管理 API 服务资源。参数包括 API 凭据和端点。
  • WatsonxLLM:IBM watsonx.ai 基础模型的包装器。此包装器提供链整合,并且需要导入。这些参数包括模型 ID、watsonx.ai API 密钥、URL 端点、项目 ID 以及任何 LLM 参数。
  • ModelInference:实例化模型接口的类。参数包括模型 ID、watsonx.ai 凭据、项目 ID、模型参数等。一旦实例化,模型就可以传递到类中。
  • invoke:直接使用字符串类型的单个提示来调用模型的方法。 
  • generate: 在列表中调用具有多个字符串类型提示的模型的方法。

另一个用于构建 AI 智能体的 LangChain 类是 ChatWatsonx,它集成了工具调用功能,并能与 watsonx.ai 模型进行链式协同。我们的很多教程都利用到了此类,它使用 bind_tools 方法在每次迭代时将工具列表传递给 LLM。其中可能包括自定义工具和预构建工具。要检索 AI 智能体响应,可以使用 invoke 方法。 智能体被调用后,响应中的 tool_calls 属性会显示每次工具调用的名称、参数、ID 和类型(如有)。

LangGraph

LangGraph 是由 LangChain 创建的 开源 AI 智能体框架,支持多智能体编排,使开发人员能够构建 智能体工作流 ,让不同的智能体进行交互、专业化和协作。 

从本质上讲,LangGraph 利用基于图形的架构的强大功能来建模和管理 AI 智能体工作流的各个组件之间的复杂关系。 LangGraph 结合人机回圈监控机制以及 API 和工具整合,为用户提供了开发 AI 解决方案和工作流的多功能平台,包括 聊天机器人、状态图和 其他基于智能体的系统。 

通过 langchain-mcp-adapters 库,LangGraph 智能体还可以使用模型上下文协议 (MCP) 服务器上定义的工具。mcp 库允许用户构建自定义 MCP 服务器。本质上,MCP 实现了 AI 系统(例如 AI 智能体)与外部工具之间的安全连接。因此,在标准 MCP 的情况下,各种 LLM 可以连接到相同的工具和数据源。 

AI 学院

为什么说基础模型是 AI 的范式转变

了解灵活、可重复使用的一类全新 AI 模型,这些模型可以带来新收入、降低成本并提高工作效率。还可以参阅我们的指南手册,深入了解这些模型。

LangSmith

LangSmith 于 2023 年秋季发布,旨在弥合让 LangChain 脱颖而出的原型设计功能与构建生产质量大语言模型应用程序之间的差距。

LangSmith 提供监控、评估和调试应用程序的工具,包括能够自动跟踪所有模型调用以发现错误并测试不同模型配置下的性能。这种可视化旨在为更强大、更具成本效益的应用程序提供支持。

开始使用 LangChain

LangChain 是开源的,可免费使用:源代码可在 Github 上下载

LangChain 还可以通过简单的 pip 命令安装在 Python 上:pip install langchain。如需安装所有 LangChain 依赖项(而不仅仅是您认为必要的依赖项),您可以运行命令 pip install langchain[all]

IBM 提供了许多分步教程,包括 LangChain 工具调用智能体 RAGLLM 智能体编排 智能体分块

LangChain 用例

使用 LangChain 开发的应用程序为各种用例提供了强大的实用性,从简单的问答和文本生成任务到使用大语言模型作为“推理引擎”的更复杂解决方案。

聊天机器人

聊天机器人是 LLM 最直观的用途之一。LangChain 可用于为聊天机器人的特定使用提供适当的上下文,并通过聊天机器人自己的 API 将聊天机器人集成到现有的通信渠道和工作流中。

总结

LangChain 能高效支持语言模型执行文本总结任务,帮助 LLM 分解复杂的学术文章、成绩单,甚至提供电子邮件摘要。

问题解答

使用特定文档或专业知识库(如 Wolfram、arXiv 或 PubMed),LLM 可以从存储中检索相关信息并阐明有用的答案。如果经过微调或适当提示,部分 LLM 无需外部信息也可以回答许多问题。

数据增强

LLM 可用于生成 合成数据 , 供机器学习使用。例如,LLM 经过训练,可用于生成与训练数据集中的数据点非常相似的额外数据样本。

虚拟智能体

LangChain 的智能体模块与正确的工作流集成,可以使用 LLM 自主确定后续步骤,并使用机器人流程自动化 (RPA) 采取行动。

  • 聊天机器人:聊天机器人是大语言模型最直观的用途之一。LangChain 可用于为聊天机器人的特定使用提供适当的上下文,并通过 LangChain 提供的工具将聊天机器人集成到现有的通信渠道和工作流程中。
  • 总结:LangChain 能高效支持语言模型执行文本总结任务,帮助大语言模型分解复杂的学术文章、成绩单,甚至提供电子邮件摘要。借助 LangChain 的抽象方法,开发者可以轻松实现这些功能,并将其集成到各种应用程序中。
  • 问题解答:通过实用特定文档或专业知识库(如 Wolfram、arXiv 或 PubMed),大语言模型可以从存储中检索相关信息,并提供精准的答案。如果经过微调或适当提示,部分大语言模型 无需外部信息也可以回答许多问题。
  • 数据增强:大语言模型可用于生成用于机器学习的合成数据。例如,大语言模型经过训练,可用于生成与训练数据集中的数据点非常相似的额外数据样本。
  • 虚拟代理:LangChain 的代理模块与正确的工作流程集成,可以使用大语言模型自主确定后续步骤,并使用机器人流程自动化 (RPA) 采取行动。
相关解决方案
基础模型

深入了解 watsonx 组合中基础模型库,从容自信地为您的业务扩展生成式 AI。

了解 watsonx.ai
人工智能 (AI) 解决方案

借助 IBM 业界领先的人工智能专业知识和解决方案组合,让人工智能在您的业务中发挥作用。

深入了解人工智能解决方案
AI 咨询与服务

通过增加 AI 重塑关键工作流程和运营,最大限度提升体验、实时决策和商业价值。

深入了解人工智能服务
采取后续步骤

深入了解 IBM watsonx 产品组合中的 IBM 基础模型库,满怀信心地为您的业务扩展生成式 AI。

深入了解 watsonx.ai 深入了解人工智能解决方案