1、概述:
该项目通过python代码调取百度AI开发平台(百度智能云千帆AppBuilder)API实现本地化AI部署,这里采用查看百度千帆模型的API文档,查看调用方式。
2、实现步骤:
(1):注册一个“百度AI开发平台”的账号。(我这里已经是注册过了,就不给大家演示了)
百度AI开放平台-全球领先的人工智能服务平台 (baidu.com)
(2):登录好后进入控制台,并查看产品导览,并选择百度智能云千帆ModeBuider。
(3):点击应用接入,创建应用实例。(这里可以看见为你创建的应用实例创建的服务,也 就是说你对应的这个API对应的有那些功能)。当创建好应用实例后就可以得到:应用ID 、API Key、Secret Key。
这里的应用描述按照自己的要求写就行。
创建好后就可以得到应用ID 、API Key、Secret Key。
(4):为了检测你的的应用实例服务是否开通,可以前往检验(去模型广场随机选择一个模型, 单击它去产看它的API文档,然后前往API在线调试平台-示例代码进行检验服务是否开通)
这里我就随便选择了一个模型来试一下服务是否开通。
当这里显示已鉴权,就可以使用了。
(5):部署代码逻辑:
A.查看刚刚的模型API的技术文档python示例代码,将API Key、
Secret Key替换为自己的,就可以使用了。(注意:这里使用的方法 2 )
import os
import qianfan
# 通过环境变量初始化认证信息
# 方式一:【推荐】使用安全认证AK/SK鉴权
# 替换下列示例中参数,安全认证Access Key替换your_iam_ak,Secret Key替换your_iam_sk,如何获取请查看https://cloud.baidu.com/doc/Reference/s/9jwvz2egb
os.environ["QIANFAN_ACCESS_KEY"] = "your_iam_ak"
os.environ["QIANFAN_SECRET_KEY"] = "your_iam_sk"
# 方式二:【不推荐】使用应用AK/SK鉴权
# 替换下列示例中参数,将应用API_Key、应用Secret key值替换为真实值
#os.environ["QIANFAN_AK"] = "应用API_Key"
#os.environ["QIANFAN_SK"] = "应用Secret_Key"
chat_comp = qianfan.ChatCompletion()
# 指定特定模型
resp = chat_comp.do(model="ERNIE-4.0-8K-Latest", messages=[{
"role": "user",
"content": "你好"
}])
print(resp["body"])
B.在原示例代码的基础上进行修改,完善AI本地部署。(这里的代码是根据官方提供的示例代码进行修改的)
import os
import qianfan
from concurrent.futures import ThreadPoolExecutor
# 设置环境变量
os.environ["QIANFAN_AK"] = "QAQg7UPHbqN8aF8ww8GlDkHS"
os.environ["QIANFAN_SK"] = "oXK8P6Z525Cly2T09NndxDZINquzRijn"
# 初始化ChatCompletion对象
chat_comp = qianfan.ChatCompletion()
# 缓存字典,用于存储查询结果
cache = {}
def get_response(model, message):
# 使用缓存来避免重复查询
cache_key = (model, message["content"])
if cache_key in cache:
return cache[cache_key]
# 发送请求并获取响应
resp = chat_comp.do(model=model, messages=[message])
# 存储结果到缓存
cache[cache_key] = resp["body"]
return resp["body"]
# 使用线程池来并行处理请求
def parallel_requests(models_messages):
with ThreadPoolExecutor(max_workers=5) as executor:
results = list(executor.map(lambda args: get_response(*args), models_messages))
return results
# 持续性提问循环
while True:
# 用户输入
user_input = input("用户:")
if user_input.lower() == "退出":
print("退出聊天。")
break
models_messages = [
("ERNIE-4.0-8K-Latest", {"role": "user", "content": user_input}),
# 如果需要,可以继续添加更多的模型和消息对
]
responses = parallel_requests(models_messages)
for resp in responses:
print("AI助手:", resp)
运行的结果:
当出现“用户:”时就可以进行与AI的交谈了
这里的返回速度根据你问的问题的内容、网络环境有关。
(6)计费情况
去计费管理查看各个模型的计费规则。
可以在首页面查看实际输入与输出token情况。