大家好,我是学生大使 Jambo。在上一个系列中,我们介绍了关于 Azure OpenAI API 的使用。如果你有跟着教程使用过,那么你应该能感觉到仅仅是调用 API 是非常简单的,繁琐的是如何将 API 与你的应用结合起来。接下来,我将会介绍一个名为 LangChain 的库,它可以帮助你更方便地将 Azure OpenAI 结合到你的应用中。
我也会将这个做成一个系列,最终目标是实现一个可以根据资料库回答问题的聊天机器人。
为什么要用 LangChain
许多开发者希望将像 GPT 这样的大语言模型整合到他们的应用中。而这些应用不仅仅是简单地将用户的输入传递给 GPT,然后将 GPT 的输出返回给用户。
这些应用可能需要根据特定的资料源来回答问题,因此需要考虑如何存储和查找资料。或者需要整理用户的输入,保存以前的消息记录并提取重点。如果你希望模型按照特定的格式输出文本,那么你需要在 prompt(提示)中详细描述格式,甚至需要提供示例。这些 prompt 通常是应用程序后台进行管理,用户往往不会注意到它们的存在。对于一些复杂的应用程序,一个问题可能需要多个执行动作。例如声称可以自动完成指定项目的 AutoGPT,实际上是根据目标和作者编写的 prompt 生成所需的动作并以JSON格式输出,然后程序再执行相应的动作。
LangChain 基本上已经将这些你可能会使用到的功能打包好了,只需要规划程式逻辑并调用函数即可。此外,LangChain 的这些功能与具体使用的模型API无关,不必为不同的语言模型编写不同的代码,只需更换 API 即可。
基本用法
在使用 LangChain 之前,建议先了解 Azure OpenAI API 的调用,否则即使是使用 LangChain,参数和用法也可能不容易理解。具体可以参考我之前的系列教程:用 Python 调用 Azure OpenAi API
LangChain 将由文字续写(补全)的语言模型称为 llm ,拥有聊天界面(输入为聊天记录)的语言模型称为聊天模型。接下来我们也会用 Azure OpenAI API 来进行示例。
安装
因为 LangChain 在调用 OpenAI 的 API 时,实际上会使用 OpenAI 提供的 SDK,因此我们还需要一并安装 openai
。
pip install langchain
pip install openai
生成文本
实例化模型对象
在使用 API 之前,我们需要先设置环境变量。如果你使用的是 OpenAI 原生的接口,就只需要设置 api_key
;如果是 Azure OpenAI API 则还需要设置 api_version
和 api_base
,具体的值与使用 openai
库调用 Azure API 一样,可以参考我之前的教程:用 Python 调用 Azure OpenAi API
import os
os.environ["OPENAI_API_KEY"] = ""
os.environ["OPENAI_API_VERSION"] = ""
os.environ["OPENAI_API_BASE"] = ""
当然,这些值也可以在 terminal 中使用 export
(在 Linux 下)命令设置,或者在 .env 文件中设置,然后用 python-dotenv
库导入进环境变量。
LangChain 的大语言模型(llm)的类都封装在 llms
中,我们需要从中导入 AzureOpenAI
类,并设置相关的参数。其中指定模型的参数名是 deployment_name
,剩下的参数就是 OpenAI API 的参数了。事实上,上面在环境变量中设置的 API 信息也可以在这里作为参数传入,但考虑到便利性和安全性,仍建议在环境变量中设置 API 信息。
要注意的是,prompt 和 stop 参数并不是在这里传入的(stop 可以但是会报警告),而是在下面生成文本时传入。
from langchain.llms import AzureOpenAI
llm = AzureOpenAI(
deployment_name="text-davinci-003",
temperature=0.9,
max_tokens=265,
)
另外,如果你使用的是原生 OpenAI API ,那么导入的类应该是 OpenAI
,并且指定模型的参数名是 model_name
,例如:
from langchain.llms import AzureOpenAI
llm = AzureOpenAI(model_name="text-davinci-003")
序列化 LLM 配置
假如你需要对多个场景有不同的 llm 配置,那么将配置写在代码中就会不那么简单灵活。在这种情况下,将 llm 配置保存在文件中显然会更方便。文章来源:https://www.toymoban.com/news/detail-502849.html
from langchain.llms import OpenAI
from langchain.llms.loading import load_llm
LangChain 支持将 llm 配置以 json 或 yaml 的格式读取或保存。假设我现在有一个 llm.json
文件,内容如下:文章来源地址https://www.toymoban.com/news/detail-502849.html
{
"model_name": "text-davinci-003",
"temperature": 0.7,
"max_tokens": 256,
"top_p": 1.0,
"frequency_penalty": 0.0,
"presence_penalty": 0.0,
"n": 1,
"be
到了这里,关于用 LangChain 构建基于资料库的问答机器人(一):基础用法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!