点击上方蓝字 江湖评谈设为关注/星标
前言
ERNIE-4.0-8K是百度自研的旗舰级超大规模⼤语⾔模型,广泛适用于各领域复杂任务场景,需要付费。百度的Yi-34B-Chat可以免费使用的,本篇通过Python脚本构建下这两个模型的对话脚本。
术语
API Key,Access key,Secret Key。一般基本上是两者跟最后一个组成两个一组,比如API Key和Secret Key组成两个一组,用https方式进行Access Token的获取。比如API Key和Secret Key两个一组,通过Python/GO等方式与大模型对话访问等。
ERNIE-4.0-8K
1.进入百度千帆大模型平台,进行账号注册。地址如下:
https://qianfan.cloud.baidu.com/
2.第一步做好了之后,进入到千帆模型平台控制台,选择应用接入创建一个应用,就有了API Key和Secret Key,千帆帆模型控制台地址如下:
https://console.bce.baidu.com/qianfan/overview
3.通过API Key和Secret Key获取access_token,以下Python脚本:
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=XXXX&client_secret=XXXX"
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调用ERNIE-4.0-8K大模型
def main():
url = "https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop/chat/completions_pro?access_token=" + get_access_token()
payload = json.dumps({
"messages": [
{
"role": "user",
"content": "介绍一下北京"
}
]
})
headers = {
'Content-Type': 'application/json'
}
response = requests.request("POST", url, headers=headers, data=payload)
print(response.text)
最后调用main
if __name__ == '__main__':
main()
返回:
HTTP/1.1 200 OK
Date: Thu, 23 Mar 2023 03:12:03 GMT
Content-Type: application/json;charset=utf-8
Statement: AI-generated
X-Ratelimit-Limit-Requests: 120
X-Ratelimit-Limit-Tokens: 120000
X-Ratelimit-Remaining-Requests: 119
X-Ratelimit-Remaining-Tokens: 119998
{
"id": "as-fg4g836x8n",
"object": "chat.completion",
"created": 1709716601,
"result": "北京,简称“京”,古称燕京、北平,中华民族的发祥地之一,是中华人民共和国首都、直辖市、国家中心城市、超大城市,也是国务院批复确定的中国政治中心、文化中心、国际交往中心、科技创新中心,中国历史文化名城和古都之一,世界一线城市。
北京被世界城市研究机构评为世界一线城市,联合国报告指出北京市人类发展指数居中国城市第二位。北京市成功举办夏奥会与冬奥会,成为全世界第一个“双奥之城”。北京有着3000余年的建城史和850余年的建都史,是全球拥有世界遗产(7处)最多的城市。
北京是一个充满活力和创新精神的城市,也是中国传统文化与现代文明的交汇点。在这里,你可以看到古老的四合院、传统的胡同、雄伟的长城和现代化的高楼大厦交相辉映。此外,北京还拥有丰富的美食文化,如烤鸭、炸酱面等,以及各种传统艺术表演,如京剧、相声等。
总的来说,北京是一个充满魅力和活力的城市,无论你是历史爱好者、美食家还是现代都市人,都能在这里找到属于自己的乐趣和归属感。",
"is_truncated": false,
"need_clear_history": false,
"finish_reason": "normal",
"usage": {
"prompt_tokens": 2,
"completion_tokens": 221,
"total_tokens": 223
}
}
Yi-34B-Chat
因ERNIE-4.0-8K是付费使用,所以体验有诸多限制。这里看下Yi-34B-Chat+Python模式。Python便于数据处理。
# file name is test.py
#参考https://cloud.baidu.com/doc/WENXINWORKSHOP/s/xlmokikxe#%E5%8D%95%E8%BD%AE%E5%AF%B9%E8%AF%9D
import os
import qianfan
//这里的access_key和secret_key与千帆大模型控制台-》应用程序接入
//的不一样。这的是千帆大模型控制台-》安全认证里面的
os.environ["QIANFAN_ACCESS_KEY"] = "your ACCESS_KEY"
os.environ["QIANFAN_SECRET_KEY"] = "your SECRET_KEY"
chat_comp = qianfan.ChatCompletion()
# 指定特定模型
resp = chat_comp.do(model="Yi-34B-Chat", messages=[{
"role": "user",
"content": "你好"
}])
print(resp["body"]['result'])
注意它这个返回的结果resp["body"]['result']只返result字段,否则有其它的字段一起返回,难以观看。运行下脚本如下:
按照以上ERNIE-4.0-8K方式调用,则除了url请求不同,其它基本相同。
#参考:https://cloud.baidu.com/doc/WENXINWORKSHOP/s/vlpteyv3c
import requests
import json
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=API_KEY&client_secret=Secret_Key"
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")
def main():
url = "https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop/chat/yi_34b_chat?access_token=" + get_access_token()
payload = json.dumps({
"messages": [
{
"role": "user",
"content": "北京和武汉"
}
]
})
headers = {
'Content-Type': 'application/json'
}
response = requests.request("POST", url, headers=headers, data=payload)
print(response.json().get("result"))
if __name__ == '__main__':
main()
结果如下所示:
改造
把纯python模式做成对话的形式,这里需要添加控制台交互以及ctrl+c退出,以及自定退出(输入exit退出)等功能。
import os
import qianfan
import sys
os.environ["QIANFAN_ACCESS_KEY"] = "your access_key"
os.environ["QIANFAN_SECRET_KEY"] = "your secret_key"
chat_comp = qianfan.ChatCompletion()
def ABC(str):
resp = chat_comp.do(model="Yi-34B-Chat", messages=[{"role": "user","content": str}])
print(resp["body"]['result'])
while(1):
try:
print("\r\n")
user_input = input("Please type something and press enter: ")
if user_input =="exit":
exit(0)
if len(user_input)!=0:
ABC(user_input)
else:
print("请输入参数")
except KeyboardInterrupt:
print("\r\n")
sys.exit()
这样你就可以完美的跟Yi-34B进行对话了
结尾
由于大的环境问题,国内的大模型网路比OpenAI之类的访问快些,少去了一些不必要的麻烦。
往期精彩回顾