最近在搞大模型应用,简单记录个文心一言的多轮对话实现,简单易懂,首先access_token需要在百度智能云上获取
一、百度智能云账号注册
首先注册百度账户,成为开发者,在下面的链接申请文心大模型:https://cloud.baidu.com/survey_summit/wenxinworkshop.html
申请以后,进入文心千帆大模型操作台:https://ai.baidu.com/wenxinworkshop/app/overview
按上图官网流程操作,创建应用,领券,加钱,开通,获得api_key和id信息
二、获得专属access_token
def get_access_token():
"""
使用 API Key,Secret Key 获取access_token,替换下列示例中的应用API Key、应用Secret Key
"""
url = "https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=DREFFWQgIfakxZZ32qPziVWN&client_secret=rxitAsDDb8YEvEOgYiHiuVIswrZWsTWL"
payload = json.dumps("")
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request("POST", url, headers=headers, data=payload)
return response.json().get("access_token")
三、 使用access_token实现对话
然后进入正题,实现多轮对话
import erniebot
class Chat_Bot():
def __init__(self, access_token = '【你利用api_key申请获得的token】', api_type = 'aistudio'):
# List supported models
models = erniebot.Model.list()
# print(models)
# ernie-bot 文心一言旗舰版
# ernie-bot-turbo 文心一言轻量版
# ernie-text-embedding 文心百中语义模型
# ernie-vilg-v2 文心一格模型
# Set authentication params
self.api_type = api_type
self.access_token = access_token
def chat(self, message=''):
erniebot.api_type = self.api_type
erniebot.access_token = self.access_token
response = erniebot.ChatCompletion.create(model='ernie-bot', messages=message)
return response
if __name__ == '__main__':
messages_l = [{
'role': 'user',
'content': "请问你是谁?"
}, {
'role': 'assistant',
'content':
"我是百度公司开发的人工智能语言模型,我的中文名是文心一言,英文名是ERNIE-Bot,可以协助您完成范围广泛的任务并提供有关各种主题的信息,比如回答问题,提供定义和解释及建议。如果您有任何问题,请随时向我提问。"
}, {
'role': 'user',
'content': "我在南京,周末可以去哪里玩?"
}]
# Create a chat completion
Chat = Chat_Bot()
response = Chat.chat(message=messages_l)
# response = erniebot.ChatCompletion.create(model='ernie-bot', messages=messages_l)
print('回复:', response.result)