Python+ERNIE-4.0-8K/Yi-34B-Chat大模型初探

文摘   2024-05-11 08:06   湖北  

点击上方蓝字 江湖评谈设为关注/星标




前言

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 KeySecret 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 OKDate: Thu, 23 Mar 2023 03:12:03 GMTContent-Type: application/json;charset=utf-8Statement: AI-generatedX-Ratelimit-Limit-Requests: 120X-Ratelimit-Limit-Tokens: 120000X-Ratelimit-Remaining-Requests: 119X-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 osimport 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/vlpteyv3cimport requestsimport 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 osimport qianfanimport 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之类的访问快些,少去了一些不必要的麻烦。

往期精彩回顾

.NET9异常(CLR)原理(顶阶技术)


江湖评谈
记录,分享,自由。
 最新文章