今年年初chatgpt大火,国产gpt文心一言也提供了内测服务,大家可以去访问官网申请体验。文心一言APP上的功能更加强大,可以看这个测评文章。作为程序猿的我们,想接入文心一言的能力,比如开发一个聊天机器人,要怎么做呢?百度在其开发者平台开放了大模型服务,下面就跟我一起来对接API吧。
下面我先放出几张图,是我对接完的效果图,一个智能回复机器人。
接下来几章,我会逐步教大家如何对接。全系列链接如下:
手把手教你搭建微信聊天机器人系列(一):文心一言(百度千帆ERNIE-Bot大模型)API测试
手把手教你搭建微信聊天机器人系列(二):eggjs+wechaty搭建一个简单的微信聊天机器人
手把手教你搭建微信聊天机器人系列(三):搭建对接文心一言(ERNIE-Bot大模型)接口的微信聊天机器人
手把手教你搭建微信聊天机器人系列(四):多轮对话支持
创建应用
首先,我们访问百度智能云,注册一个开发者账号。
然后访问控制台,点击侧边栏的大模型服务-应用接入-创建应用。
填写一下基本信息,然后点击创建。
在刚才的页面会出现一条刚刚创建的应用,这里的API Key和Secret Key后面调用接口会用到。
现在开始研究API文档,入口在此
我们选择ERNIE-Bot模型,然后点击后面的创建chat跳转到对应文档。注:我一开始对接了ERNIE-Bot-turbo模型,结果发现有些问题回答错误,体验比较差。后面改回ERNIE-Bot,回答基本都正确。
从接口文档上看,对话接口需要传入access token,我们继续研究一下access token获取的方法。
access token获取
我们使用postman来测试接口,GET请求方式,Params下面添加三个参数,grant_type 参数值为client_credentials,client_id参数值为API Key对应的值,client_secret参数值为Secret Key对应的值。
请求后发现返回结果有个access_token,这个就是后续调用对话接口要用的。
对话接口请求
我们再配置一个POST请求,Params下面添加一个参数access_token,值为上面返回的。
然后还要再配置一下Body选项卡
选择raw,格式JSON,请求体为
{
"messages": [
{
"role": "user",
"content": "介绍一下你自己"
}
]
}
请求后,发现成功返回了对话信息。
刚才只是实现了一次对话的效果,从文档上看,接口是支持上下文语境的,要实现这种效果,需要我们把几次历史对话的内容全部传过去。
多轮对话
我们继续配置两个POST请求,来看看他是否能支持多轮对话。第一个请求,请求体为:
{
"messages": [
{
"role": "user",
"content": "1加1等于几"
}
]
}
第二个请求,我们把上次接口返回的内容result参数值【1加1等于2。】加入请求。注意:role的值为【assistant】。请求体为:
{
"messages": [
{
"role": "user",
"content": "1加1等于几"
},
{
"role": "assistant",
"content": "计算结果为:$1+1 = 2$"
},
{
"role": "user",
"content": "再加1等于几"
}
]
}
至此,两轮对话结束。从测试结果来看,接口是具备一定的智能。我们后续可以开发聊天的界面或者对接微信机器人提供给用户,以实现网页版文心一言的对话功能。微信机器人的对接我已经实现过了,具体流程我后面会再发文章。