目录
1.介绍
2.准备工作
(1)登录百度智能云
(2)创建应用
(3) 获取Key
3.代码实现
4.效果展示
1.介绍
本文将介绍使用python调用百度云千帆大语言模型的API实现一个简单的AI助手,并且将在本文的第三部分贴出完整源码,供学习交流!
如果你觉得本篇文章对你有用,希望你动动宝贵的小手,给作者整一个👍+⭐!
其次,你还可以访问我的主页查看其他文章:
一只程序猿子的CSDN博客
2.准备工作
(1)登录百度智能云
登录百度智能云后,找到千帆大模型平台.
(2)创建应用
必填项填写完成后点击创建,就完成了应用创建!
(3) 获取Key
Key包含API Key和Secret Key.
现在已经获取到需要的Key了,在平台上可以找到调用API的示例代码,不过你也可以查看我下面的代码!
3.代码实现
ai_assistant.py:
# 导入 requests 库,用于发送 HTTP 请求
import requests
# 导入 json 库,用于处理 JSON 数据
import json
# 定义一个名为 AIAssistant 的类,该类用于实现 AI 助手的各项功能
class AIAssistant():
# 初始化函数,实例化后会首先运行这个函数
def __init__(self):
# 定义 API_KEY 和 SECRET_KEY,它们是调用百度云AI模型API的凭证,用于鉴权和请求资源
self.API_KEY = "换成你的Key"
self.SECRET_KEY = "换成你的Key"
# 设置请求头部信息,其中 Content-Type 设置为 application/json 表示发送的数据是 JSON 格式
self.HEADER = {'Content-Type': 'application/json'}
# 定义一个函数 get_access_token,用于获取访问令牌 Access Token
def get_access_token(self):
"""
使用 AK,SK 生成鉴权签名(Access Token)
:return: access_token,或是None(如果错误)
"""
# 定义 url,这是请求的目标地址
url = "https://aip.baidubce.com/oauth/2.0/token"
# 定义参数字典,包含鉴权所需的参数,例如 grant_type(授权类型),client_id(客户端 ID),client_secret(客户端密钥)等
params = {"grant_type": "client_credentials", "client_id": self.API_KEY, "client_secret": self.SECRET_KEY}
# 使用 requests.post 方法发送 POST 请求到定义的 url,并传入参数字典 params,然后将返回的 JSON 数据中的 access_token 字段转化为字符串
access_token = str(requests.post(url, params=params).json().get("access_token"))
return access_token
# 定义一个函数 ai_assistant,接收一个名为 data 的列表作为参数,这个列表中包含用户输入的消息
def ai_assistant(self, data):
# 定义 url,拼接上通过 get_access_token 函数获取的 Access Token,用于向 AI 服务器发送请求
url = "https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop/chat/completions_pro?access_token=" + AIAssistant().get_access_token()
# 将用户输入的消息打包成 JSON 格式的 payload(有效负载)
payload = json.dumps({
"messages": data
})
# 使用 requests.request 方法发送 POST 请求到定义的 url,并传入头部信息和 payload,然后返回响应的 JSON 数据
response = requests.request("POST", url, headers=self.HEADER, data=payload)
# 从响应的 JSON 数据中取出 result 字段并返回,可能包含 AI 对用户输入的回答
return response.json()['result']
# 定义一个函数 run,这个函数是整个 AI 助手对话的核心逻辑所在,它负责接收用户的输入并返回 AI 的回答
def run(self):
# 定义一个空列表 data,用于存储用户的输入和 AI 的回答
data = []
# 定义一些用于控制台输出的颜色代码
COLOR_BLUE = "\033[34m" # 绿色
COLOR_RED = "\033[31m" # 红色
RESET = "\033[0m" # 黑色
BOLDEN = "\033[1m" # 加粗文本
# 打印欢迎信息,提示用户可以通过输入 'q' 来结束对话
print(f"{BOLDEN}{COLOR_BLUE}********************欢迎使用AI助手!********************\n{RESET}(tips:输入'q'结束对话)\n")
# 进入无限循环,除非用户输入 'q' 才结束循环
while True:
# 获取用户的输入
quetion = input(f"{COLOR_RED}用 户: {RESET}")
# 如果用户输入 'q',则跳出循环
if quetion == 'q':
print("再见!")
break
else:
# 创建字典,包含用户的角色和内容,添加到 data 列表中
user_massage = {"role": "user", "content": quetion}
data.append(user_massage)
print('*****正在生成回答,请稍后...*****')
# 调用 ai_assistant 函数,传入用户输入的数据,获取 AI 的回答,并添加到 data 列表中
result = AIAssistant().ai_assistant(data)
assistant_massage = {"role": "assistant", "content": result}
data.append(assistant_massage)
# 从 data 列表中取出最后一条消息,也就是AI助手回答的内容,根据 role 字段判断,并输出到控制台
answer = data[-1]['content'].replace('\n\n', '\n')
print(f"{COLOR_RED}AI助手:{RESET} {BOLDEN}{answer}\n\n{RESET}")
# 主函数
if __name__ == '__main__':
# 运行AI助手程序
AIAssistant().run()
源码中我已经添加了非常详细的注释,相信聪明的你一定能理解源码 !!!
注意:把源码里的self.API_KEY和self.SECRET_KEY换成你自己的!!!