ChatGPT和GPT-4的成功标明,通过运用强化学习训练的大型言语模型,能够构建可扩展且功能强大的自然言语处理应用程序。

可是,呼应的有用性取决于提示信息,这导致用户探究了提示工程范畴。此外,大多数实际国际的自然言语处理用例需求比单个ChatGPT会话更杂乱的功能。这便是像LangChain这样的库能够发挥作用的当地!

LangChain是一个Python库,协助您利用大型言语模型构建定制的自然言语处理应用程序。

在本指南中,咱们将讨论LangChain是什么,以及您能够运用它构建什么。咱们还将通过运用LangChain构建一个简略的问答应用程序来入门。

让咱们开端吧!

LangChain是什么?

LangChain是由Harrison Chase创立的Python库,供给了开箱即用的支持,用于运用LLM(Large Language Models)构建自然言语处理应用程序。您能够连接到各种数据和核算源,并构建在特定范畴数据源、私有存储库等上履行自然言语处理使命的应用程序。

截至编撰本文时(2023年3月),LangChain的GitHub存储库拥有超越14,000颗星星,并有来自国际各地的270多名贡献者。

LangChain教程:构建基于GPT的应用程序

运用LangChain能够构建的风趣应用程序包括(但不限于):

  • 聊天机器人

  • 针对特定范畴的摘要和问答

  • 查询数据库以获取信息并进行处理的应用程序

  • 处理数学和推理谜题等特定使命的署理程序

LangChain模块概述

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

LangChain教程:构建基于GPT的应用程序

LLM(Large Language Models)

LLM是LangChain的根本组件。它实际上是环绕大型言语模型的封装,能够利用特定大型言语模型的功能和才能。

Chains(链式调用)

如前所述,LLM是LangChain中的根本单元。可是,正如LangChain的名字所暗示的那样,您能够依据特定使命来链式调用LLM。

例如,您或许需求从特定URL获取数据,对回来的文本进行

摘要,并运用生成的摘要回答问题。

链式调用也能够很简略。您或许需求读取用户输入,然后用它构建提示信息。然后能够用该提示信息生成呼应。

LangChain教程:构建基于GPT的应用程序

提示(Prompts)

提示是任何自然言语处理应用程序的核心。即使在ChatGPT会话中,答案的协助程度也取决于提示信息。为此,LangChain供给了能够用来格式化输入和履行其他实用功能的提示模板。

文档加载器和东西(Document Loaders and Utils)

LangChain的文档加载器和东西模块便利连接到数据源和核算源。

假定您有一个大型经济学文本语料库,期望构建一个自然言语处理应用程序。您的语料库或许包含各种文本文件、PDF文档、HTML网页、图画等。目前,文档加载器利用Python库Unstructured将这些原始数据源转换为能够进行处理的文本。

东西模块供给了Bash和Python解释器会话等功能。这对于需求直接与底层系统进行交互的应用程序很有用。或者在需求核算特定数学量或处理问题时,需求代码片段,而不是仅核算一次答案。

署理程序(Agents)

咱们说到“链式调用”能够协助将一系列LLM调用链接在一起。可是,在某些使命中,调用的顺序一般不确定。下一步很或许取决于用户输入和先前过程的呼应。

对于这种类型的应用程序,LangChain库供给了“署理程序”,能够依据沿途的输入采取动作,而不是固定确实定性顺序。

除上述之外,LangChain还供给与向量数据库的集成,并具有在LLM调用之间坚持状态的内存功能等等。

运用LangChain构建问答应用程序

现在咱们对LangChain有了一定的了解,让咱们运用LangChain构建一个问答应用程序,以下是五个简略过程:

第1步 – 设置开发环境

在编码之前,让咱们设置开发环境。我假定您已经在工作环境中装置了Python。

您能够运用pip装置LangChain库:

pip install langchain

由于咱们将运用OpenAI的言语模型,咱们还需求装置OpenAI SDK:

pip install openai

第2步 – 将OPENAI_API_KEY设置为环境变量

接下来,登录您的OpenAI帐户。导航到帐户设置 > 查看API密钥。生成一个密钥并仿制它。

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

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

第3步 – 运用LangChain进行简略的LLM调用

现在咱们已经装置了所需的库,让咱们看看怎么运用LangChain进行简略的LLM调用。

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

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

“text-davinci-003:具有更好的质量、更长的输出和共同的指令遵从性,能够履行任何言语使命,优于curie、babbage或ada模型。还支持在文本中刺进补全。” – OpenAI文档

让咱们定义一个问题字符串并生成一个回答:

question = "2023年学习的最佳编程言语是什么?"print(llm(question))
输出 >>很难猜测2023年最受欢迎的编程言语是哪个。可是,当今最受欢迎的编程言语是JavaScript、Python、Java、C++和C#,所以它们很或许在可预见的未来坚持受欢迎。此外,像Rust、Go和TypeScript等较新的言语正在赢得重视,或许在未来成为受欢迎的挑选。

第4步 – 创立提示模板

让咱们提出另一个问题,关于学习一门新编程言语的尖端资源,比方Golang:

question = "2023年学习Golang的前4个资源是什么?"print(llm(question))
输出 >>1. The Go Programming Language by Alan A. A. Donovan and Brian W. Kernighan2. Go in Action by William Kennedy, Brian Ketelsen and Erik St. Martin3. Learn Go Programming by John Hoover4. Introducing Go: Build Reliable, Scalable Programs by Caleb Doxsey

虽然这对初学者来说作用不错,

可是当咱们试图收拾一份学习多种编程言语和技能栈的资源清单时,它很快变得重复。

这便是提示模板发挥作用的当地。您能够创立一个模板,能够运用一个或多个输入变量进行格式化。

咱们能够创立一个简略的模板来获取学习任何技能栈的前k个资源。在这里,咱们运用”k”和”this”作为输入变量:

from langchain import PromptTemplatetemplate = "2023年学习{k}的前{k}个资源是什么?"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 LLMChainchain = LLMChain(llm=llm, prompt=prompt)

现在,您能够将输入作为字典传入,并运转LLM链,如下所示:

input = {'k': 3, 'this': 'Rust'}print(chain.run(input))
输出 >>1. Rust By Example - Rust By Example是学习Rust的一份很好的资源,它供给了一系列交互式操练,教你怎么运用该言语及其特性。2. Rust Book - 官方的Rust Book是该言语的全面指南,从基础知识到更高档的主题。3. Rustlings - Rustlings是快速学习Rust的好方法,它供给一系列小操练,协助你逐渐学习该言语。

总结

这便是全部内容!您现在知道怎么运用LangChain构建一个简略的问答应用程序。期望您对LangChain的功能有了初步了解。作为下一步,尝试探究LangChain以构建更风趣的应用程序。祝编码愉快!

【微信公号:H5开讲啦】

LangChain教程:构建基于GPT的应用程序