LangChain:构建您自己的 GPT 驱动的应用程序

9 个月前 语言模型 122

ChatGPT 和 GPT-4 的成功表明,通过强化训练的大型语言模型可以产生可扩展且强大的 NLP 应用程序。

但是,响应的有用性取决于提示,这导致用户探索提示工程空间。此外,大多数现实世界的 NLP 用例需要比单个 ChatGPT 会话更复杂。这就是像LangChain这样的库可以提供帮助的地方!

LangChain 是一个 Python 库,可帮助您利用大型语言模型来构建自定义 NLP 应用程序。

在本指南中,我们将探讨LangChain是什么以及您可以使用它构建什么。我们还将通过使用LangChain构建一个简单的问答应用程序来弄湿我们的脚。

让我们开始吧!

什么是LangChain?

LangChain 由 Harrison Chase 创建,是一个 Python 库,它为使用 LLM 构建 NLP 应用程序提供开箱即用的支持。您可以连接到各种数据和计算源,并构建在特定于域的数据源、私有存储库等上执行 NLP 任务的应用程序。

您可以使用LangChain构建的有趣应用程序包括(但不限于):

  • 聊天机器人
  • 特定领域的总结和问答
  • 查询数据库以提取信息,然后处理信息的应用
  • 解决数学和推理难题等特定问题的智能体

1, LangChain模块概述

接下来,让我们来看看LangChain中的一些模块:

语言大模型LLM

LLM 是 LangChain 的基本组件。它本质上是大型语言模型的包装器,有助于使用特定大型语言模型的功能和能力。

链Chains

如前所述,LLM 是 LangChain 中的基本单元。但是,正如名称LangChain所暗示的那样,您可以根据特定任务将LLM调用链接在一起。

例如,您可能需要从特定 URL 获取数据,汇总返回的文本,并使用生成的摘要回答问题。

链条也可以很简单。您可能需要读入用户输入,然后使用该输入来构造提示。然后可用于生成响应。

提示词Prompts

提示是任何 NLP 应用程序的核心。即使在 ChatGPT 会话中,答案也只与提示一样有用。为此,LangChain提供了提示模板,您可以使用这些模板来格式化输入和许多其他实用程序。

文档加载程序和实用程序

LangChain的Document Loaders和Utils模块分别有助于连接到数据源和计算源。

假设您有一个大型经济学文本语料库,您想在上面构建一个 NLP 应用程序。您的语料库可能是文本文件、PDF 文档、HTML 网页、图像等的混合体。目前,文档加载器利用 Python 库非结构化将这些原始数据源转换为可处理的文本。

utils 模块提供 Bash 和 Python 解释器会话等。这些适用于有助于直接与底层系统交互的应用程序。或者,当我们需要代码片段来计算特定的数学量或解决问题而不是计算一次答案时。

智能体Agent

我们提到过,“链”可以帮助将一系列 LLM 调用链接在一起。但是,在某些任务中,调用的顺序通常不是确定性的。下一步可能取决于用户输入和前面步骤中的响应。

对于此类应用程序,LangChain库提供了“智能体”,这些代理可以根据沿途的输入而不是硬编码的确定性序列来执行操作。

除此之外,LangChain还提供与向量数据库的集成,并具有用于维护LLM调用之间状态的内存功能,等等。

2, 使用LangChain构建问答应用程序

现在我们已经了解了LangChain,让我们通过五个简单的步骤使用LangChain构建一个问答应用程序:

第 1 步 – 设置开发环境
在开始编码之前,让我们先设置开发环境。我假设您的工作环境中已经安装了 Python。

您现在可以使用 pip 安装 LangChain 库:

pip install langchain

由于我们将使用 OpenAI 的语言模型,因此我们还需要安装 OpenAI SDK:

pip install openai

第 2 步 – 将OPENAI_API_KEY设置为环境变量
接下来,登录您的 OpenAI 帐户。导航到帐户设置>查看 API 密钥。生成密钥并复制它。

在 Python 脚本中,使用 os 模块并点击环境变量字典 。将“OPENAI_API_KEY”设置为您刚刚复制的密钥:os.environ

import os
os.environ["OPENAI_API_KEY"] = "your-api-key-here"

第 3 步 – 使用 LangChain 进行简单的 LLM 调用
现在我们已经安装了所需的库,让我们看看如何使用 LangChain 进行简单的 LLM 调用。

为此,让我们导入 OpenAI 包装器。在此示例中,我们将使用 text-davinci-003 模型:

from langchain.llms import OpenAI
llm = OpenAI(model_name="text-davinci-003")

让我们定义一个问题字符串并生成一个响应:

question = "Which is the best programming language to learn in 2023?"
print(llm(question))

Output >>

It is difficult to predict which programming language will be the most popular in 2023. However, the most popular programming languages today are JavaScript, Python, Java, C++, and C#, so these are likely to remain popular for the foreseeable future. Additionally, newer languages such as Rust, Go, and TypeScript are gaining traction and could become popular choices in the future.

第 4 步 – 创建提示模板
让我们在学习一门新编程语言的顶级资源上再问一个问题,比如说 Golang:

question = "What are the top 4 resources to learn Golang in 2023?"
print(llm(question))

Output>>

  1. The GoProgramming Language by Alan A. A. Donovan and Brian W. Kernighan
  2. Go in Action by William Kennedy, Brian Ketelsen and Erik St. Martin
  3. Learn Go Programming by John Hoover
  4. Introducing Go: Build Reliable, Scalable Programs by Caleb Doxsey

虽然这对初学者来说效果很好,但当我们试图策划一个资源列表来学习编程语言和技术堆栈列表时,它很快就会变得重复。

这就是提示模板派上用场的地方。您可以创建可以使用一个或多个输入变量设置格式的模板。

我们可以创建一个简单的模板来获取前 k 个资源来学习任何技术堆栈。在这里,我们使用 and 作为:kthisinput_variables

from langchain import PromptTemplate
template = "What are the top {k} resources to learn {this} in 2023?"
prompt = PromptTemplate(template=template,input_variables=['k','this'])

第 5 步 – 运行我们的第一个 LLM 链
我们现在有一个 LLM 和一个提示模板,我们可以在多个 LLM 调用中重用它们。

llm = OpenAI(model_name="text-davinci-003")
prompt = PromptTemplate(template=template,input_variables=['k','this'])

让我们继续创建一个 LLMChain:

from langchain import LLMChain
chain = LLMChain(llm=llm,prompt=prompt)

您现在可以将输入作为字典传入并运行 LLM 链,如下所示:

input = {'k':3,'this':'Rust'}
print(chain.run(input))

Output >>

  1. Rust By Example - Rust By Example is a great resource for learning Rust as it provides a series of interactive exercises that teach you how to use the language and its features.
  2. Rust Book - The official Rust Book is a comprehensive guide to the language, from the basics to the more advanced topics.
  3. Rustlings - Rustlings is a great way to learn Rust quickly, as it provides a series of small exercises that help you learn the language step-by-step.

总结

这就结束了!您知道如何使用 LangChain 构建一个简单的问答应用程序。我希望你已经对LangChain的功能有了初步的了解。下一步,尝试探索LangChain以构建更多有趣的应用程序。祝您编码愉快!


文章来源:wearefram.com

相关资讯