什么是 LangChain?
LangChain 是一个开源框架,用于构建基于大型语言模型(LLM)的应用程序。LLM 是基于大量数据预先训练的大型深度学习模型,可以生成对用户查询的响应,例如回答问题或根据基于文本的提示创建图像。LangChain 提供各种工具和抽象,以提高模型生成的信息的定制性、准确性和相关性。例如,开发人员可以使用 LangChain 组件来构建新的提示链或自定义现有模板。LangChain 还包括一些组件,可让 LLM 无需重新训练即可访问新的数据集。
为什么 LangChain 很重要?
LLM 擅长在常规上下文下对提示做出响应,但在未接受过训练的特定领域却很吃力。提示是人们寻求 LLM 回复时所用的查询。例如,LLM 可以通过提供估算值来回答计算机成本问题。但是,它无法列出贵公司销售的特定计算机型号的价格。
为此,机器学习工程师必须将 LLM 与组织内部数据来源整合,并应用提示工程,即数据科学家根据特定的结构和上下文对生成模型的输入进行细化的实践。
LangChain 简化了开发此类数据响应式应用程序的中间步骤,提高了提示工程的效率。它旨在更轻松地开发由语言模型提供支持的各种应用程序,包括聊天机器人、问答、内容生成、摘要器等。
以下部分介绍了 LangChain 的好处。
重新利用语言模型
借助 LangChain,组织可以重新将 LLM 用于特定领域的应用程序,而无需重新训练或微调。开发团队可以构建引用专有信息的复杂应用程序,以增强模型响应。例如,您可以使用 LangChain 来构建应用程序,从存储的内部文档中读取数据并将其汇总为对话式响应。您可以创建检索增强生成(RAG)工作流程,在提示时向语言模型引入新信息。实施 RAG 等上下文感知工作流程可减少模型幻觉并提高响应精度。
简化人工智能开发
LangChain 通过对数据来源集成和提示细化的复杂性进行抽象,来简化人工智能(AI)的开发。开发人员可以自定义序列,以快速构建复杂的应用程序。软件团队无需编程业务逻辑,即可修改 LangChain 提供的模板和库,从而缩短开发时间。
开发人员支持
LangChain 为人工智能开发人员提供将语言模型与外部数据来源相连接的工具。LangChain 是开源的,由活跃社区提供支持。组织可以免费使用 LangChain,并获得其他精通该框架的开发人员提供的支持。
LangChain 如何运作?
借助 LangChain,开发人员可以通过指定产生预期结果所需的步骤,灵活调整语言模型以适应特定的业务环境。
链
链是在 LangChain 中容纳各种人工智能组件以提供上下文感知响应的基本原则。链是从用户查询到模型输出的一系列自动化操作。例如,开发人员可以将链用于:
- 连接到不同的数据来源。
- 生成独特的内容。
- 翻译多种语言。
- 答复用户查询。
链接
链由链接组成。开发人员串联在一起形成链式序列的每个操作都称为链接。通过链接,开发人员可以将复杂的任务分成多个较小的任务。链接示例包括:
- 调整用户输入格式。
- 向 LLM 发送查询。
- 从云存储中检索数据。
- 从一种语言翻译成另一种语言。
在 LangChain 框架中,链接接受来自用户的输入并将其传递给 LangChain 库进行处理。LangChain 还允许对链接重新排序,创建不同的人工智能工作流程。
概述
要使用 LangChain,开发人员需要使用以下命令在 Python 中安装框架:
pip install langchain
然后,开发人员使用链构建块或 LangChain 表达式语言(LCEL)通过简单编程命令组成链。chain() 函数将链接的参数传递给库。execute() 命令会检索结果。开发人员可以将当前链接结果传递到以下链接,也可以将其作为最终输出返回。
以下是以多种语言返回产品详细信息的聊天机器人链函数示例。
chain([
retrieve_data_from_product_database().
send_data_to_language_model().
format_output_in_a_list().
translate_output_in_target_language()
])
LangChain 的核心组件是什么?
使用 LangChain,软件团队可以通过以下模块构建上下文感知语言模型系统。
LLM 接口
LangChain 提供 API,开发人员可以利用这些接口通过其代码连接和查询 LLM。开发人员可以利用 LangChain,通过进行简单的 API 调用,与 GPT、Bard 和 PaLM 等公共模型和专有模型交互,无需编写复杂代码。
提示模板
提示模板是预构建结构,开发人员使用该结构来一致且精确地编排 AI 模型的查询格式。开发人员可以为聊天机器人应用程序、小样本学习创建提示模板,也可以向语言模型提供特定指令。此外,他们还可以在不同的应用程序和语言模型中重复使用这些模板。
代理
开发人员使用 LangChain 提供的工具和库来为复杂的应用程序编写和自定义现有的链。代理是一种特殊的链,提示语言模型决定响应查询的最佳顺序。使用代理时,开发人员会提供用户输入、可用工具和可能的中间步骤,以实现预期的结果。然后,语言模型会返回应用程序可以采取的可行操作顺序。
检索模块
LangChain 支持使用大量工具来构建 RAG 系统,从而转换、存储、搜索和检索信息,优化语言模型响应。开发人员可以使用单词嵌入创建信息的语义表示,并将其存储在本地或云向量数据库中。
内存
一些对话语言模型应用程序使用从过去的交互中召回的信息来完善其响应。LangChain 让开发人员可以在其系统中包含内存功能。它支持:
- 简单的内存系统,可召回最近的对话。
- 复杂的内存结构,可分析历史消息以返回最相关的结果。
回拨
回调是开发人员在其应用程序中使用的代码,用于记录、监控和流式传输 LangChain 操作中的特定事件。例如,开发人员可以跟踪链首次被调用的时间以及在回调中遇到的错误。
AWS 如何帮助您应对 LangChain 要求?
使用 Amazon Bedrock、Amazon Kendra、Amazon SageMaker JumpStart、LangChain 和 LLM,您可以在企业数据上构建高精度的生成式人工智能(生成式 AI)应用程序。LangChain 是将这些组件联系在一起的接口:
- Amazon Bedrock 是一项托管式服务,组织可以使用它来构建和部署生成式人工智能应用程序。您可以使用 Amazon Bedrock 来设置世代模型,您可以通过 LangChain 访问该模型。
- Amazon Kendra 是一项由机器学习(ML)所赋能的服务,可帮助组织进行内部搜索。您可以将 Amazon Kendra 连接到 LangChain,后者使用来自专有数据库的数据来完善语言模型输出。
- Amazon SageMaker Jumpstart 是一个 ML 中心,提供开发人员可以快速部署的预建算法和基础模型。您可以在 SageMaker Jumpstart 上托管基础模型,然后从 LangChain 上显示其提示。
立即创建账户,开始在 AWS 上使用 LangChain。