LangChain 教程:构建 LLM 支持的应用程序的指南

作者:Aditya Tripathi

GPT-4 和 LLaMA 等大型语言模型 (LLM) 在过去几年中创造了一个充满可能性的世界。 它预示着人工智能工具和应用程序的繁荣,ChatGPT 似乎一夜之间成为家喻户晓的名字。 但如果没有为促进新一代应用程序而创建的强大工具和框架,这种繁荣就不可能实现。

LangChain 就是这些框架之一,它可以轻松地使用现有的 LLMs 构建新应用程序。 它由机器学习专家 Harrison Chase 开发,并于 2022 年作为开源项目推出。 该框架在弥合现有语言模型和构建新的多样化应用程序之间的技术差距方面迈出了巨大的一步。

LangChain 解释

简单来说,LangChain是一个标准化的接口,可以简化构建AI应用程序的过程。 它为你提供了多种工具,可用于连接不同的组件并创建复杂的工作流程。 这包括 LLMs 和各种类型的数据源。 当用户与应用程序交互时,LangChain 使用其与 LLM 的连接来处理请求并生成适当的响应。 它还可以使用来自文档或数据库等外部来源的信息和数据来提供更准确且与上下文相关的答案。

例如,如果用户提出问题,LangChain 将使用 LLM 来理解问题并制定答复。 但它也会从一个或多个外部数据源获取数据以增强其回复。 这使你的应用程序更加智能,并且能够处理复杂和专门的查询。

从本质上讲,你可以通过向 LLM 提供与你希望其解决的问题更相关的数据来增强其能力。

它以 Python 和 TypeScript 包的形式提供,具有几个令人印象深刻的功能:

  • 模型交互:LangChain 允许与任何语言模型交互,管理输入并从输出中提取信息。
  • 高效集成:提供与 OpenAI、Hugging Face 等流行 AI 平台的高效集成。
  • 灵活性和定制性:LangChain 提供灵活性、定制选项和强大的组件来创建跨不同行业的各种应用程序。
  • 核心组件:该框架由 LangChain 库、LangChain 模板、LangServe 和 LangSmith 组成,简化了整个应用程序生命周期。
  • 标准化接口:提供标准化接口、提示管理和记忆能力,使语言模型能够与数据源交互。

这种功能组合使其灵活、快速、可扩展且易于使用,对于任何想要开始使用 AI 的开发者来说,这简直是音乐般的美妙。

LangChain 如何运作?

LangChain 是一个与 LLMs 集成的模块化框架。 它是一个标准化的接口,消除了使用不同 LLM API 的复杂性和困难 - 这与 GPT-4、LLaMA 或你想要使用的任何其他 LLM 集成的过程相同。 它还具有动态 LLM 选择功能,这意味着开发人员可以为他们使用 LangChain 执行的特定任务选择最合适的 LLM。

模块化设计还有助于将输入数据处理和转换为可操作的输出。 它处理各种数据类型,包括文本、代码和多媒体格式,并提供用于预处理、清理和规范化数据的工具。 这是为了确保数据适合 LLMs 使用,并且可能涉及标记化、规范化和语言识别。

LangChain 还处理 LLM 的输出,将其转换为适合应用程序或特定任务要求的格式。 这包括格式化文本、生成代码片段以及提供复杂数据的摘要等。

LangChain 核心概念

LangChain 的架构建立在组件和链的概念之上。 组件表示执行特定任务的可重用模块,例如处理输入数据、生成文本格式、访问外部信息或管理工作流程。 链是一系列组件,它们协同工作以实现更广泛的目标,例如总结文档、生成创意文本格式或提供个性化建议。

组件和模块

在 LangChain 中,术语 “组件(components)” 和 “模块 (modules)” 有时可以互换使用,但两者之间有一个微妙的区别:

  • 组件是 LangChain 的核心构建模块,代表特定的任务或功能。 它们通常较小且集中,可以在不同的应用程序和工作流程中重复使用。
  • 另一方面,模块组合多个组件以形成更复杂的功能。 LangChain 甚至为其一些主要模块提供了标准接口,包括内存模块(一种可重用的构建块,用于存储和管理供大型语言模型使用的数据)和代理(一种动态控制单元,根据实时反馈和信息来协调链及用户交互)。

与组件一样,模块是可重用的,并且可以组合在一起以创建更复杂的工作流程。 这称为链,将组件或模块序列组合在一起以实现特定目标。 链是 LangChain 中工作流程编排的基础,对于构建处理各种任务的有效应用程序至关重要。

与 LLMs 整合

LangChain 通过提供标准化接口与 LLMs 无缝集成。 但 LangChain 与 LLM 的整合不仅仅是提供一个连接机制。 它还提供了多种功能来优化 LLM 的使用,以构建基于语言的应用程序:

  • 提示管理:LangChain 使你能够制作有效的提示,帮助 LLMs 理解任务并生成有用的响应。
  • 动态 LLM 选择:这使你可以根据复杂性、准确性要求和计算资源等因素为不同的任务选择最合适的 LLM。
  • 内存管理集成:LangChain 与内存模块集成,这意味着 LLM 可以访问和处理外部信息。
  • 基于代理的管理:这使你能够编排复杂的基于 LLM 的工作流程,以适应不断变化的环境和用户需求。

工作流程管理

在 LangChain 中,工作流管理是编排和控制链和代理的执行以解决特定问题的过程。 这涉及管理数据流、协调组件的执行以及确保应用程序有效地响应用户交互和不断变化的环境。 以下是一些关键的工作流程管理组件:

  • 链编排:LangChain 协调链的执行,以确保任务按正确的顺序执行,数据在组件之间正确传递。
  • 基于代理的管理:通过预定义的模板和用户友好的界面简化了代理的使用。
  • 状态管理:LangChain 自动跟踪应用程序的状态,为开发者提供访问和修改状态信息的统一接口。
  • 并发管理:LangChain 处理并发执行的复杂性,使开发人员能够专注于任务和交互,而不必担心线程或同步问题。

设置 LangChain

LangChain 的优点之一是上手要求很少。 在本指南中,我们将使用 Python,因此你需要在计算机上安装 Python 3.8 或更高版本。 就是这样!

安装与配置

第一步是安装核心 LangChain 框架。 最简单的方法是使用以下 PIP 命令:

pip install langchain

接下来你需要的是一个可供 LangChain 交互的 LLM。 我们将在本示例中使用 OpenAI,但你可以在应用程序中使用任何你想要的 LLM:

pip install openai

为了让 OpenAI 正常工作,你还需要一个 API 密钥来验证你的请求。 你可以通过创建 OpenAI 帐户、转到 API 密钥部分并选择 “Create new secret key” 来获取密钥。 拿到密钥后,请将其存放在安全的地方。 你很快就会需要它。

最后,创建一个名为 data.txt 的文本文件。 这将是你用来为 LLM 提供上下文的外部数据源:

In West Philadelphia born and raised
On the playground was where I spent most of my days
Chillin' out, maxin', relaxin', all cool
And all shootin' some b-ball outside of the school

现在是有趣的时候了!

使用 LangChain 开发应用程序

为了构建这个 LangChain 应用程序,你需要打开你选择的文本编辑器或 IDE,并在与 data.txt 相同的位置创建一个新的 Python (.py) 文件。 你将创建一个超级基本的应用程序,向 OpenAI 的 GPT-3 LLM 发送提示并打印响应。

正在寻找更高级的东西吗? 查看我们的将 Amazon Bedrock 与 Elasticsearch 和 Langchain 结合使用的指南。

步骤一:从 LangChain 导入 OpenAI 类

在 Python 脚本的顶部,添加此导入语句以从 LangChain 的 LLM 模块中提取 OpenAI 类:

from langchain.llms import OpenAI

步骤二:定义从文本文件读取数据的功能:

定义该函数,以便应用程序将文件路径作为参数。 这将打开文件进行读取并返回其内容:

def read_data_from_file(file_path):
    with open(file_path, 'r') as file:
        return file.read()

步骤三:初始化 OpenAI 模型

使用你的 API 密钥创建 OpenAI 类的实例,将 YOUR-OPENAI-KEY 替换为你从 OpenAI 获取的实际密钥:

gpt3 = OpenAI(api_key='YOUR-OPENAI-KEY')

步骤四:定义一个函数来请求 OpenAI 的响应

编写一个函数,将提示作为参数并返回 GPT-3 模型的响应:

def get_response(prompt):
    return gpt3(prompt)

步骤五:从文本文件中读取数据

指定文本文件的路径并使用你之前定义的函数来读取其内容。 然后,你将数据存储在 external_data 变量中:

file_path = 'data.txt'
external_data = read_data_from_file(file_path)

步骤六:创建测试提示

你可以在此处定义要发送到 GPT-3 的提示。 在此示例中,你将要求它读取文本并告诉你文本文件正在谈论哪个电视节目:

prompt = f"Based on the following data: {external_data}, what TV show is this about?"

步骤七:获取 GPT-3 的响应并打印

调用发送准备好的提示的函数,然后检索并打印来自 GPT-3 的响应:

print("Response:", get_response(prompt))

步骤八:运行应用程序并检查响应

完成所有这些后,你将拥有一个如下所示的 Python 应用程序:

test.py

from langchain.llms import OpenAI

# Function to read data from a file
def read_data_from_file(file_path):
    with open(file_path, 'r') as file:
        return file.read()

# Initialize the LLM
gpt3 = OpenAI(api_key='YourOpenAIkey')

def get_response(prompt):
    return gpt3(prompt)

# Read data from your text file
file_path = 'data.txt'
external_data = read_data_from_file(file_path)

# Prepare your prompt including the external data
prompt = f"Based on the following data: {external_data}, what TV show is this about?"

# Get the response from GPT-3
print("Response:", get_response(prompt))

所以现在剩下要做的就是运行你的 Python 应用程序以确保它正常工作! 保存文件,并在终端中使用以下命令运行你的应用程序:

python YOUR-APP-NAME.py
$ python test.py 
/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-packages/langchain/llms/__init__.py:548: LangChainDeprecationWarning: Importing LLMs from langchain is deprecated. Importing from langchain will no longer be supported as of langchain==0.2.0. Please import from langchain-community instead:

`from langchain_community.llms import OpenAI`.

To install langchain-community run `pip install -U langchain-community`.
  warnings.warn(
/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-packages/langchain_core/_api/deprecation.py:117: LangChainDeprecationWarning: The class `langchain_community.llms.openai.OpenAI` was deprecated in langchain-community 0.0.10 and will be removed in 0.2.0. An updated version of the class exists in the langchain-openai package and should be used instead. To use it run `pip install -U langchain-openai` and import as `from langchain_openai import OpenAI`.
  warn_deprecated(
/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-packages/langchain_core/_api/deprecation.py:117: LangChainDeprecationWarning: The function `__call__` was deprecated in LangChain 0.1.7 and will be removed in 0.2.0. Use invoke instead.
  warn_deprecated(
Response: 

The TV show is "The Fresh Prince of Bel-Air".

用例

这个例子是一个过于简化的演示,但 LangChain 的灵活性意味着构建新的AI应用程序有无限的可能性。 我们不可能尝试在这里将它们全部列出,但我们将通过一些案例研究来强调你可以构建的各种东西:

  • 聊天机器人:构建你自己的聊天机器人,你可以在其中用自然语言提问并维护对话历史记录。
  • 问答应用程序:创建一个应用程序,你可以在其中询问所需的信息,它会从存储的文档中找到答案。
  • 文本搜索(BM25):创建你自己的文本搜索应用程序来查询大量数据。
  • 向量搜索:构建一个搜索数据相似性并过滤元数据的应用程序。
  • 混合搜索(文本和向量):开发人工智能,使用文本和矢量过滤来匹配相似文档。
  • LangChain 与你自己的 LLM:使用 LangChain 构建一个 AI 应用程序,该应用程序使用你自己的 LLM 和外部数据源。

使用 LangChain 构建 LLM 支持的应用程序

现在应该很清楚了,通过将 LLMs 的力量与外部数据源中的上下文和额外信息相结合,LangChain 为你提供了无限的可能性。 正如本教程所示,它也非常容易上手。 LangChain 的易用性与灵活性和强大功能相结合,使其成为开发各种人工智能应用程序的理想平台。 无论你是构建聊天机器人、问答应用程序还是搜索引擎,LangChain 都可以帮助你创建创新且有效的解决方案。

接下来你应该做什么

只要你准备好,我们可以通过以下四种方式帮助你从业务数据中获取见解:

  1. 开始免费试用,看看 Elastic 如何帮助你的业务。
  2. 浏览我们的解决方案,了解 Elasticsearch 平台的工作原理以及我们的解决方案如何满足你的需求。
  3. 了解如何将生成式人工智能融入企业中。
  4. 与你认识并喜欢阅读本文的人分享这篇文章。 通过电子邮件、LinkedIn、Twitter 或 Facebook 与他们分享。

原文:LangChain Tutorial: An Intro to Building LLM-powered apps | Elastic Blog

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/432726.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

自然语言处理之语言模型(LM)介绍

自然语言处理(Natural Language Processing,NLP)是人工智能(Artificial Intelligence,AI)的一个重要分支,它旨在使计算机能够理解、解释和生成人类语言。在自然语言处理中,语言模型&…

钉钉h5应用 globalthis is not defined vite client

钉钉h5应用 globalthis is not defined vite client problem 背景 钉钉h5应用使用 vue3 vite 构建的前端工程 问题 h5页面在pc端浏览器和pc端钉钉打开正常h5页面在移动端钉钉打开异常 页面空白 通过调试工具找到报错信息 globalthis is not defined vite client reason …

从零开发短视频电商 端到端测试Playwright实战CSDN搜索

文章目录 背景脚本录制配置窗口大小UserAgent设置全局默认超时时间保留登录身份信息加载登录身份信息 测试框架建议 背景 假设我是csdn的测试人员,我想测试如下流程: 1.用户进入站点https://www.csdn.net, 2.在搜索框输入"lakernote&…

Excel技巧:如何对含有相同内容的列增加递增序号

如何在Excel中对含有相同内容的单元格自动添加递增序号 当我们在处理Excel数据时,经常会遇到需要根据某一列中的重复内容来对另一列的单元格进行编号的情况。例如,我们可能需要对所有含有特定字符的单元格进行标记,并在另一列中为它们分配一…

从 Language Model 到 Chat Application:对话接口的设计与实现

作者:网隐 RTP-LLM 是阿里巴巴大模型预测团队开发的大模型推理加速引擎,作为一个高性能的大模型推理解决方案,它已被广泛应用于阿里内部。本文从对话接口的设计出发,介绍了业界常见方案,并分享了 RTP-LLM 团队在此场景…

windows 安装 minio

座右铭:怎么简单怎么来,以实现功能为主。 欢迎大家关注公众号与我交流 1. 打开官网链接 https://www.minio.org.cn/ 2. 点击下载 3. 点击 windows,然后点击 MINIO SERVER 右侧的 DOWNLOAD 进行下载 4. 找到环境变量,新建系统变量…

推荐书籍《低代码平台开发实践:基于React》—— 提升开发效率,构建优质应用

写在前面 随着数字化转型的深入,企业对应用开发效率和灵活性的要求不断提高。低代码平台作为新兴的软件开发方式,通过可视化界面和预构建组件,极大简化了应用开发流程,降低了技术门槛。基于React的低代码平台以其组件化、响应式和…

JavaScript基础3之面向对象关于面向过程、函数式编程、对比、构造函数、原型

JavaScript基础 面向对象面向过程函数式编程命令式编程函数式编程特性副作用透明引用不可变变量函数是一等公民 常见的函数式编程模型 面向对象为什么要使用面向对象封装继承多态 对比面向过程函数式编程面向对象 构造函数原型constructor使用场景 对象原型 面向对象 面向过程…

关于制作Python游戏全过程(汇总1)

目录 前言: 1.plane_sprites模块: 1.1导入模块: 1.1.1pygame:一个用于创建游戏的Python库。 1.1.2random:Python标准库中的一个模块,用于生成随机数。 1.2定义事件代号: 1.2.1ENEMY_EVENT:自定义的敌机出场事件代号&#xf…

从一个word里面复制表格到另一个word时,表格变形的问题

复制过来保留源格式,检查段落、页边距里面的格式都和原始word一致后,仍然表格变形。 这时点页边距-自定义页边距-文档网格 看字符数是不是一致的

字节跳动热门的前端开源项目

字节跳动开源官网 Arco Dsign Arco Design 是一套设计系统,主要服务于字节跳动旗下中后台产品的体验设计和技术实现。它的目标在于帮助设计师与开发者解放双手、提升工作效率,并高质量地打造符合业务规范的中后台应用。它拥有系统的设计规范和资源&…

Nature 研究亮点(Volume 626 Issue 8001, 29 February 2024)

文章目录 激光雕刻肥皂膜卵细胞的回收系统巴斯克语的起源产后抑郁症的治疗 激光雕刻肥皂膜 研究者:Haitao Xu 和 Yu Zhao,清华大学,北京。 发现:在特定条件下,可以使用激光在肥皂膜上进行雕刻。肥皂膜由洗涤剂分子&am…

leetcode 11.盛最多水的容器

题目链接:https://leetcode.cn/problems/container-with-most-water/ 题目描述 给定一个长度为 n 的整数数组 height 。有 n 条垂线,第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。 找出其中的两条线,使得它们与 x 轴共同构成的容器可以…

QT打包EXE

第一步构建 第二步 构建后会产生一个新的文件找到里面刚刚构建出来的exe,将此exe文件放到新的文件夹下 第三步 打包 找到对应的windeployqt.exe 文件 在新建的文件夹下运行 windeployqt.exe xxxx.exe即可 t.exe xxxx.exe即可

在亚马逊云科技上开启您的多机多卡分布式训练之旅

随着机器学习模型规模的扩大和数据量的增加,单个设备的计算能力和内存容量逐渐成为瓶颈。这导致训练过程变得缓慢且耗时长,限制了模型的进一步发展和改进。为了解决这个问题,分布式训练应运而生。它利用多个计算资源并行地执行计算任务&#…

爬虫逆向网站案例

一、相关网页 东方财富人气排行榜 二、查找url 三、寻找curl并复制 四、打开Convert curl commands to code (curlconverter.com) 五、修改并执行代码 import requestscookies {st_si: 73974981954644,st_pvi: 39724919122964,st_sp: 2024-03-05%2018%3A27%3A22,st_inirUrl:…

EdgeX Foundry - 连接 MQTT 设备

文章目录 一、概述1.安装说明2.MQTT 设备模拟器2.1.模拟器设计2.2.Spring Boot 程序源码2.2.1.MQTT2.2.2.JsonUtils2.2.3.Device 2.3.程序配置 二、连接 MQTT 设备1.docker-comepse2.设备配置文件3.启动 EdgeX Foundry4.访问 UI4.1. consul4.2. EdgeX Console 5.创建 MQTT 设备…

国产电脑替代后,办公软件不兼容,国产机成了摆设如何解决?

随着国家信创战略的推进,许多党政机关、行政事业单位、央国企已经采购了大量的国产CPU和国产操作系统的办公电脑,然而,在替代Windows系统电脑的过程中,许多企业遇到了一个严重的问题:办公软件的不兼容性。这导致许多国…

dolphinescheduler调用API

(作者:陈玓玏) 1. 打开api文档 api文档地址:http://{api server ip}:12345/dolphinscheduler/swagger-ui/index.html?languagezh_CN&langcn,我是用k8s部署的,所以ip和端口是由service决定的&#xf…

人事档案转出需要注意哪些方面

人事档案转出是指将员工的人事档案从一个部门、公司或组织转移到另一个部门、公司或组织的过程。这个过程需要注意以下几个方面: 1.法律合规:在进行人事档案转出前,要确保遵守相关的法律法规和公司内部规定。例如,要确保有合法的授…
最新文章