第二章 调用大模型API
一、基本概念
1.Prompt
Prompt 最初是 NLP(自然语言处理)研究者为下游任务设计出来的一种任务专属的输入模板。它是指用于引导自然语言处理模型执行特定任务或生成特定类型文本的输入文本或问题。它可以是一个简短的句子、问题、或者命令,它的作用是告诉模型执行什么样的任务或者生成什么样的相应。给大模型的输入即prompt,大模型的输出即Completion。
2.Temperature
由于LLM生成的结果具有随机性,因此可以在模型的顶层通过选取不同预测概率的预测结果来生成最后的结果。我们一般可以通过控制 Temperature 参数来控制 LLM 生成结果的随机性与创造性。
Temperature 一般取值在 0~1 之间,当取值较低接近0时,预测的随机性会较低,产生更保守、可预测的文本,不太可能生成意想不到或不寻常的词。当取值较高接近1时,预测的随机性会较高,所有词被选择的可能性更大,会产生更有创意、多样化的文本,更有可能生成不寻常或意想不到的词。
根据不同的问题与应用场景的稳定性和灵活性要求,需要设置不同的temperature参数。
3.System prompt
并不在大模型本身训练中得到体现,而是大模型服务方为提升用户体验所设置的一种策略。System prompt更像给模型初始化设定的一种人设。在一个对话中一般仅需构造一个System Prompt ,如果有多个对话,增加对应数量的 User Prompt 即可。
{
"system prompt":"你是一个幽默风趣的个人知识库助手,可以根据给定的知识库内容回答用户的提问,注意,你的回答风格应是幽默风趣的",
"user prompt":"我今天有什么事务?"
}
二、调用ChatGPT(略,因为暂时没有openai账号)
三、调用百度文心
1.文心一言
文心一言,是由百度于2023年3月27日推出的中文大模型,是目前国内大语言模型的代表产品。文心一言所考虑的落地场景包括多模态生成、文学创作等多种商业场景。百度同样提供了文心一言的 API 接口,其于推出大模型的同时推出了文心千帆企业级大语言模型服务平台,包括了百度整套大语言模型开发工作链。百度智能云千帆大模型 (baidu.com)
教程两种通过 Python 代码调用百度文心一言大模型的方法:直接调用百度文心原生接口;使用 LangChain 调用百度文心接口。
2.获取文心一言调用秘钥
要调用文心一言 API,首先需要先获取文心一言调用秘钥,在代码中需要配置自己的秘钥才能实现对模型的调用。
百度文心有两层秘钥认证,第一层是拥有调用权限的账户可以从账户中获取的 API_Key 和 Secret_Key。第二层认证是access_token,通过第一层的两个Key获取得到。在教程中,首先获取 API_Key、Secret_Key ,然后基于 Key 获取 access_token 值,最后直接通过 access_token 来调用文心大模型。
2.1获取API_Key、Secret_Key
进入文心千帆服务平台,通过百度账号登陆后,创建一个调用文心大模型的应用。
创建完成后,可以在控制台看到创建的应用的
AppID
、API Key
、Secret Key
。使用这里的 API Key
和 Secret Key
即可进行 access_token 的获取。
2.2基于API_Key、Secret_Key,获取access_token
代码参考:获取access_token - 千帆大模型平台 | 百度智能云文档 (baidu.com)
通过代码 post 访问指定网址获取到账户对应的 access_token;其中expires_in:access_token的有效期(秒为单位,有效期30天)。
进入服务器返回的json文本参数的网址:
3.通过 POST 访问调用百度文心原生接口
完成 access_token 的获取后,可以同样通过 POST 访问来调用百度文心原生接口。此处教程调用的是ERNIE-Bot-turbo
模型的 chat 接口,也就是常说的百度文心大模型。而我使用的是 ERNIE-3.5-8k 模型的 chat 接口。
代码参考:
import requests
import json
def main():
url = ("https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop/chat/completions?"
"access_token=#填上上述步骤获得的access_token#&#