绝不夸张,无论是多新的新手,只要把百度的账号和API token申请好了,保证你在30分钟内开始拥有你自己的智能聊天机器人。超过30分钟,你找我。

本文主要分两部分:
- 申请大模型的API Token
- 一个最简单的文心一言聊天机器人实现
注:由于当时市面上的大模型都没有开放免费的API,而百度有,所以就选了百度的拿来做学习。申请百度的API Token
注册百度账号
注册地址: https://ai.baidu.com/
申请API权限
登录控制台: 完成实名身份认证
找到“千帆大模型服务与开发平台ModelBuilder”
创建千帆ModelBuilder应用
申请地址:https://console.bce.baidu.com/qianfan/ais/console/applicationConsole/application/v1
步骤一. 创建千帆应用
(1)登录百度智能云千帆控制台。
请您注册并登录百度智能云千帆控制台 :
https://console.bce.baidu.com/qianfan/ais/console/applicationConsole/application/v1
(2)创建千帆应用
进入控制台创建应用
(https://console.bce.baidu.com/qianfan/ais/console/applicationConsole/application/create )。如果已有应用,此步骤可跳过。
(3)创建应用后,获取AppID、API Key、Secret Key。
API文档
ERNIE-3.5-128K-Preview: https://cloud.baidu.com/doc/WENXINWORKSHOP/s/Fm3e8i4zy搞定。一个最简单的文心一言聊天机器人实现
申请好了API后,我们就可以直接利用百度提供的文心一言的API或者SDK来实现一个聊天机器人了。
就像某名言说的那样,talk is cheap, show me the code.
直接上代码
import os
import requests
import json
import qianfan
#这里的API_KEY,SECRET_KEY替换成你自己申请的
API_KEY = "ZCcK674j19GL5*************"
SECRET_KEY = "lPuu14wS4fiqMYUw4s**********"
def chat_api(your_name: str, query:str):
# os.environ["QIANFAN_ACCESS_KEY"] = API_KEY
# os.environ["QIANFAN_SECRET_KEY"] = SECRET_KEY
os.environ["QIANFAN_AK"] = API_KEY
os.environ["QIANFAN_SK"] = SECRET_KEY
llm = qianfan.ChatCompletion()
messages = []
# user message
messages.append({'role': 'user', 'content': your_name + "说:" + query})
chunk_size = 50
json_payload = {
"messages" : messages,
"temperature": 0.7,
"max_output_tokens": chunk_size
}
response = llm.do(endpoint="eb-instant", messages=messages, stream=True)
llm_result_text = ""
for r in response:
print(r["body"]["result"])
llm_result_text = llm_result_text + r["body"]["result"]
print(f"response={llm_result_text}")
def chat_http(your_name: str, query:str):
url = "https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop/chat/ernie_speed?access_token=" + get_access_token()
messages = []
# user message
messages.append({'role': 'user', 'content': your_name + "说:" + query})
chunk_size = 50
json_payload = {
"messages" : messages,
"temperature": 0.7,
"max_output_tokens": chunk_size
}
payload = json.dumps(json_payload)
headers = { 'Content-Type': 'application/json' }
print(f"payload={payload}")
# r = requests.request("POST", url, headers=headers, data=payload, stream=True)
r = requests.get(url, headers=headers, data=payload, stream=True)
# Check if the request was successful
if r.status_code == 200:
for chunk in r.iter_content(chunk_size=128):
print(f"chunk={chunk}")
print("adfasdf")
def get_access_token():
"""
使用 AK,SK 生成鉴权签名(Access Token)
:return: access_token,或是None(如果错误)
"""
url = "https://aip.baidubce.com/oauth/2.0/token"
params = {"grant_type": "client_credentials", "client_id": API_KEY, "client_secret": SECRET_KEY}
return str(requests.post(url, params=params).json().get("access_token"))
if __name__ == '__main__':
# chat_http("catherine", "今天吃啥")
chat_api("catherine", "今天吃啥")
将上述代码,保存到你的代码仓库,并取名为: ernie_test.py
测试运行机器人
1. 切换到你自己的conda虚拟环境
在前面,你创建了一个自己这个学习项目用的conda虚拟环境:https://kb.oddmeta.net/docs/omassistant/omassistant-1g4tdttdcpbv7
该环境名为cathy:
conda activate cathy
2. 命令行切换到代码目录下,然后执行
python ernie_test.py
当然,如果你用Visual Studio Code/Pycharm之类的IDE工具来写的代码,其实也完全可以直接在IDE工具里执行。
3. 报错处理
在这个示例代码里,你import了一些第3方的组件,
import requests
import json
import qianfan
有可能你这个虚拟环境里没有安装过,如果这样的话,运行时将会有一些报错,比如:
(cathy) G:\oddmeta\learning-ai\llm>python ernie_test.py
Traceback (most recent call last):
File "G:\oddmeta\learning-ai\llm\ernie_test.py", line 2, in <module> import requests
ModuleNotFoundError: No module named 'requests'
和/或
(cathy) G:\oddmeta\learning-ai\llm>python ernie_test.py
Traceback (most recent call last): File "G:\oddmeta\learning-ai\llm\ernie_test.py", line 4, in <module>
import qianfan
ModuleNotFoundError: No module named 'qianfan'
出现类似的报错,解决办法很简单,既然没有,那咱安装一下不就有了?
pip install requests
pip install qianfan
所有缺的模块都可以在一个pip install后面带齐。
OK。完结。
试过的朋友,出来现身说个法。你花了几分钟?