本章节主要介绍四种大语言模型(ChatGPTAPI、文心一言、讯飞星火、智谱 GLM)的 API 申请指引和 Python 版本的原生 API 调用方法。
文心一言:当前无赠送新用户 tokens 的活动,推荐已有文心 tokens 额度用户和付费用户使用;
智谱 GLM:新用户赠送 tokens,推荐免费用户使用。
ChatGPT:推荐可科学上网的读者使用;
一、文心一言
哎哟喂,说起这文心一言啊,它可是百度在2023年3月27日那天闪亮登场的中文大模型新秀,简直就是咱们国内大语言模型界的一股清流,代表中的代表嘛!不过呢,你也知道,中文语料那玩意儿,质量参差不齐,再加上咱们国内计算资源和技术上的那么点小瓶颈,文心一言跟那国际大咖ChatGPT比起来,整体性能上还得再努把力,虽说差距有,但在咱们自家地盘——中文语境下,它可是表现得相当不俗,挺让人骄傲的。
文心一言心里头揣着的梦可大了,它不光想搞点文学创作啊、多模态生成啊这些高大上的事儿,还立志要在中文界把ChatGPT给比下去,那雄心壮志,杠杠的!但话说回来,要想真刀真枪地干赢ChatGPT,百度这路还长着呢,得一步一步来。不过呢,话说回来,在咱们这生成式AI监管严得跟啥似的国内环境里,文心一言作为首批获准面向大众开放的AI应用,那可是有它独特的商业优势的,毕竟ChatGPT那哥们儿,现在还只能藏着掖着呢。
百度也是贴心,知道大伙儿想用这好东西,直接给文心一言整了个API接口,还顺带着推出了文心千帆这么个企业级大语言模型服务平台,一站式解决你的大模型开发难题,连带着百度那一套完整的开发流程都打包送上了。你说对于那些自个儿搞不定大模型落地的中小企业啊、传统企业啊,文心千帆简直就是救星般的存在嘛!当然啦,咱们这教程嘛,就专注于怎么通过文心千帆平台去调用文心一言的API,至于其他那些高大上的企业级服务,咱们今儿个就先不扯那么远了。
2.1 千帆 SDK
2.1.1 API 申请指引
- 获取密钥
- 百度智能云千帆大模型平台提供了多种语言的千帆 SDK,开发者可使用 SDK,快捷地开发功能,提升开发效率。
- 在使用千帆 SDK 之前,需要先获取文心一言调用密钥,在代码中需要配置自己的密钥才能实现对模型的调用,下面我们以 Python SDK为例,介绍通过千帆 SDK 调用文心模型的流程。
- 首先需要有一个经过实名认证的百度账号,每一个账户可以创建若干个应用,每个应用会对应一个 API_Key 和 Secret_Key。
-
进入文心千帆服务平台,点击上述应用接入按钮,创建一个调用文心大模型的应用。
接着点击去创建按钮,进入应用创建界面:
简单输入基本信息,选择默认配置,创建应用即可。
创建完成后,我们可以在控制台看到创建的应用的 API Key、Secret Key。 -
需要注意的是,千帆目前只有 Prompt模板、Yi-34B-Chat 和 Fuyu-8B公有云在线调用体验服务这三个服务是免费调用的,如果你想体验其他的模型服务,需要在计费管理处开通相应模型的付费服务才能体验。我们将这里获取到的 API Key、Secret Key 填写至 .env 文件的 QIANFAN_AK 和 QIANFAN_SK 参数。
-
如果你使用的是安全认证的参数校验,需要在百度智能云控制台-用户账户-安全认证页,查看 Access Key、Secret Key,并将获取到的参数相应的填写到 .env 文件的 QIANFAN_ACCESS_KEY、QIANFAN_SECRET_KEY。
然后执行以下代码,将密钥加载到环境变量中。
from dotenv import load_dotenv, find_dotenv
# 读取本地/项目的环境变量。
# find_dotenv() 寻找并定位 .env 文件的路径
# load_dotenv() 读取该 .env 文件,并将其中的环境变量加载到当前的运行环境中
# 如果你设置的是全局的环境变量,这行代码则没有任何作用。
_ = load_dotenv(find_dotenv())
2.1.2 调用文心千帆 API
百度文心同样支持在传入参数的 messages 字段中配置 user、assistant 两个成员角色的 prompt,但与 OpenAI 的 prompt 格式不同的是,模型人设是通过另一个参数 system 字段传入的,而不是在 messages 字段中。
下面我们使用 SDK,封装一个 get_completion 函数供后续使用。
再次提醒读者:如果账户中没有免费的或者购买的额度,在执行下述代码调用文心 ERNIE-Bot 时,会有如下报错:error code: 17, err msg: Open api daily request limit reached。
点击模型服务可以查看千帆支持的全部模型列表。
import qianfan
def gen_wenxin_messages(prompt):
'''
构造文心模型请求参数 messages
请求参数:
prompt: 对应的用户提示词
'''
messages = [{"role": "user", "content": prompt}]
return messages
def get_completion(prompt, model="ERNIE-Bot", temperature=0.01):
'''
获取文心模型调用结果
请求参数:
prompt: 对应的提示词
model: 调用的模型,默认为 ERNIE-Bot,也可以按需选择 ERNIE-