主页 topics LangChain (LLM编程框架) 什么是 LangChain?
轻松训练和部署生成式 AI 开放、混合及实现治理的湖仓一体方案
插图:由数字和字母组成的链
什么是 LangChain?

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

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

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

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

与 LLM 集成

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

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

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

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

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

IBM 的开源技术

从区块链到容器,从 AI 到操作系统以及介于两者之间的一切,我们的开发人员正在创建新兴的开源项目,并使用代码、文档和支持性资料进行相关设计,以便您可以加入创新。

相关内容

订阅 IBM 时事通讯

LangChain 的工作原理

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

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

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

导入语言模型

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

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

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

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

深入了解演示:使用 watsonx 和 LangChain 对语言模型进行一系列调用
提示模板

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

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

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

观看视频:提示工程和提示调优

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

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

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

索引

为了完成某些任务,LLM 需要访问未包含在训练数据集中的特定外部数据源,如内部文档、电子邮件或数据集。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)检索器模块接受字符串查询作为输入,并返回文档列表作为输出。

内存

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

代理

LangChain 代理可以使用给定的语言模型作为“推理引擎”,确定要采取哪些行动。为代理构建链时,输入包括:

  • 要利用的可用工具列表。
  • 用户输入(如提示和查询)。
  • 之前执行的任何相关步骤。
了解更多有关 LangChain 代理的信息
工具

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

LangChain 工具(ibm.com 外部链接)是一组功能,使 LangChain 代理能够与现实世界的信息进行交互,以扩展或改进可以提供的服务。著名的 LangChain 工具示例包括:

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

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

  • OpenWeatherMap:获取天气信息。

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

LangSmith

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

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

开始使用 LangChain

LangChain 采用开源技术且免费使用:源代码可在 Github 上下载(ibm.com 外部链接)。

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

许多分步式教程都可以从大型 LangChain 社区生态系统和 docs.langchain.com 的官方文档中获得(ibm.com 外部链接)。

LangChain 用例

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

  • 聊天机器人:聊天机器人是 LLM 最直观的用途之一。LangChain 可用于为聊天机器人的特定使用提供适当的上下文,并通过聊天机器人自己的 API 将聊天机器人集成到现有的通信渠道和工作流程中。
  • 总结:语言模型的任务是总结多种类型的文本,从分解复杂的学术文章和成绩单到提供传入电子邮件的摘要。
  • 问题解答:使用特定文档或专业知识库(如 Wolfram、arXiv 或 PubMed),LLM 可以从存储中检索相关信息并阐明有用的答案。如果经过微调或适当提示,一些 LLM 即使没有外部信息也可以回答许多问题。
  • 数据增强:LLM 可用于生成合成数据,供机器学习使用。例如,可以训练 LLM 来生成与训练数据集中的数据点非常相似的附加数据样本。
  • 虚拟代理:LangChain 的代理模块与正确的工作流程集成,可以使用 LLM 自主确定后续步骤,并使用机器人流程自动化 (RPA) 采取行动。
相关解决方案
watsonx.ai

轻松训练、验证、调整和部署生成式 AI、基础模型和机器学习功能,并在短时间内使用少量数据构建 AI 应用程序。

探索 watsonx.ai

AI 咨询服务

重新构想如何使用 AI:我们的多元化全球团队由超过 20,000 名 AI 专家组成,可以帮助您快速而自信地设计和扩展整个企业的 AI 和自动化,利用我们自己的 IBM watsonx 技术和开放式合作伙伴生态系统,遵守道德,互相信任,在任何云端交付所需 AI 模型。

深入了解 IBM AI 咨询服务

watsonx.data

借助 watsonx.data 随时随地拓展对于所有数据的分析和 AI 工作负载。watsonx.data 是业界唯一的开放式、混合以及实现治理的湖仓一体方案。

探索 watsonx.data
LangChain 资源

用于开始使用 LangChain 和 watsonx 构建应用程序的工具、技巧和示例代码。

编写基础模型提示的技巧

一半是艺术,一半是科学,提示工程是针对给定模型和参数制作提示文本以达到最佳效果的过程。这些提示可以帮助您成功地提示大多数生成文本的基础模型。

使用 watsonx 和 LangChain 调用语言模型

本笔记本包含使用 LangChain 与 watsonx 模型集成来演示简单顺序链的步骤和代码。熟悉 Python 会有所帮助。

Python 初学者指南

我们将介绍开始使用这种简单编程语言所需了解的基本概念,从运行代数计算到利用数据生成图形输出。

采取下一步行动

借助 IBM watsonx.ai(下一代企业级 AI 构建器平台),轻松训练、验证、调整和部署生成式 AI、基础模型和机器学习功能,并在短时间内使用少量数据构建 AI 应用程序。

开始免费试用 预约实时演示
脚注

1 2023 年第二季度增长最快的开源初创公司(ibm.com 外部链接),Runa Capital,2023 年