logo
2

AppBuilder-SDK的使用方法-Python

本文是对这次AppBuilder-SDK直播课程的文字总结,感兴趣的朋友还可以去看直播课回放
本文主要讲的是如何在Python中使用AppBuilder-SDK,使用的IDE 为 PyCharm社区版

如何安装

Pycharm的终端中执行如下命令,快速安装Python语言的最新版本AppBuilder-SDK,要求 Python版本 >= 3.9。
  
  
python3 -m pip install --upgrade appbuilder-sdk

如何获取密钥

前往API密钥,点击【新增密钥】按钮创建密钥,可自定义备注,支持一键复制操作。
这里要提醒一下,密钥是比较重要的,自己的密钥尽量不要外传。如果删掉了的话,这个密钥也是不可恢复的。所以一定保管好密钥。

实例展示

获取模型列表

将下面这段代码粘贴到pycharm编辑器中,使用你自己的API密钥替换["APPBUILDER_TOKEN"] = "..."中的三个点
  
  
import os
import appbuilder
# 设置环境变量和初始化
# 请前往千帆AppBuilder官网创建密钥,流程详见:https://cloud.baidu.com/doc/AppBuilder/s/Olq6grrt6#1%E3%80%81%E5%88%9B%E5%BB%BA%E5%AF%86%E9%92%A5
os.environ["APPBUILDER_TOKEN"] = "..."
models = appbuilder.get_model_list(api_type_filter=["chat"], is_available=True)
print(models)
运行代码之后就会返回你的这个API密钥当前开通的模型服务
PS. 千帆上有很多模型,这里不做介绍,需要的话可以去这里开通付费百度智能云控制台 (baidu.com)

使用SDK调用创建的应用

所有的实例文档都可以从这里获取
此处我们使用“快递助手”这个实例代码来进行讲解

代码体验快递助手

  1. 需要你创建一个快递助手的应用,怎么创建应用这里就不展开讲了,想要详细了解的可以看这两个直播的录屏
这里我们快速的创建一个“快递助手”应用
1.1 进入百度智能云控制台 (baidu.com),点击“创建应用”
1.2 点击AI自动生成配置,自动化生成一个快递查询助手
1.3 自动生成的Agent仅仅是对大模型进行了角色设定,要真的让他有三头六臂(查询快递的功能)还需要添加具体的组件,点击下方的这个按钮
添加下方的两个组件
1.4 此时可以再点击一下角色指令优化功能,这样的话Appbuilder可以抓取你添加的组件,重新生成一个角色指令
1.5 最后点击“发布”,我们的一个“快递查询”的Agent就快速生成好了
  1. API密钥的获取方式上文中提到了,这里就不赘述了
  1. 获取应用ID,那么应用ID从哪里看
进到个人主页的应用列表,下图中标黄的那些就是你的刚创建的快递助手应用ID了
这里有一点要注意的,每个人的API key只能调用自己创建的应用。
  1. 现在我们可以在代码中体验它了
复制下列代码到pycharm编辑器中,替换其中的secret_key,和 APP ID,点击run 就可以了
  
  
import appbuilder
import os
# 注意以下示例正确运行依赖的条件包括:
# 1. 在百度智能云千帆AppBuilder官网使用AppBuilderClient创建应用且应用已发布
# 2. 密钥正确有效
# 3. 密钥需要与发布应用正确对应,即需要使用发布应用的账户下的密钥
# 配置密钥与应用ID
os.environ["APPBUILDER_TOKEN"] ="secret_key"
app_id = "APP ID"
# 初始化Agent
builder = appbuilder.AppBuilderClient(app_id)
# 创建会话ID
conversation_id = builder.create_conversation()
# 执行对话
msg = builder.run(conversation_id, "我的快递单号是:9858485940100; 请查询下此快递的状态")
print("快递查询助理回答内容:", msg.content.answer)
# 执行流式对话
msg1 = builder.run(conversation_id, "使用语音播报快递当前状态", stream=True)
for content in msg1.content:
for ev in content.events:
if ev.content_type == "audio":
print("快递查询助理生成的音频播放地址:", ev.detail["audio"])
  1. 点击Run之后,你应该能得到这样的结果
  1. 你也可以加入这样一条命令来看具体的输出细节
  
  
print(msg.model_dump_json(indent=4))

使用SDK调用创建的组件

Appbuilder还提供了一种调用方式,如果你认为某一个组件很好用,可以直接调用这个组件
Appbuilder目前提供了这些组件可供调用,在SDK介绍文档中的此处可以看到

代码体验语音合成功能

此处我们使用“TTS语音讲解”这个组件来进行讲解,详细信息请看:Github文档
  1. 此时我们先去薅个羊毛,点击文档的这里领取免费额度
在弹出的页面中选中语音合成的全部功能以及其他中的图像内容理解功能,点击0元领取
(这两个功能是演示用到的,对于其余的,强烈建议大家现在先全都领了,过了这村没这店了)
  1. 复制下列代码到pycharm编辑器中,用自己的API key替换其中的secret_key
  
  
import os
import appbuilder
# 请前往千帆AppBuilder官网创建密钥,流程详见:https://cloud.baidu.com/doc/AppBuilder/s/Olq6grrt6#1%E3%80%81%E5%88%9B%E5%BB%BA%E5%AF%86%E9%92%A5
os.environ["APPBUILDER_TOKEN"] = "secret_key"
tts = appbuilder.TTS()
cwd = os.getcwd()
# 使用baidu-tts模型, 默认返回MP3格式
inp = appbuilder.Message(content={"text": "欢迎使用语音合成"})
out = tts.run(inp)
mp3_sample_path = os.path.join(cwd,"sample_baidu_tts.mp3")
with open(mp3_sample_path, "wb") as f:
f.write(out.content["audio_binary"])
print("成功将文本转语音,mp3格式文件已写入:{}".format(mp3_sample_path))
# 使用paddlespeech-tts模型,目前只支持返回WAV格式
wav_sample_path = os.path.join(cwd,"sample_paddlespeech_tts.wav")
inp = appbuilder.Message(content={"text": "欢迎使用语音合成"})
out = tts.run(inp, model="paddlespeech-tts", audio_type="wav")
with open(wav_sample_path, "wb") as f:
f.write(out.content["audio_binary"])
print("成功将文本转语音,wav格式文件已写入:{}".format(wav_sample_path))
代码中的这个部分是我们让其生成语音的部分
这段代码中共有两个模型,可以对比一下选一个你喜欢的(我喜欢paddlespeech-tts)

代码体验图片理解功能

  1. 这里分享另一个用来找示例代码的方式,进入组件广场,点击图片内容理解组件,在SDK示例代码中就可以看到代码例子了
  1. 将示例代码粘贴到pycharm编辑器中,用自己的API key替换其中的secret_key
下图中圈出的部分就是我们让这个组件去理解的内容
这张图片长这样
运行后,我们就可以得到图片的内容了

创建和修改知识库

百度智能云控制台 (baidu.com)中,知识库在个人空间里,你可以在这里添加或修改知识库
那么怎么使用SDK去创建和修改知识库呢,可以直接看此处的Github文档,为照顾不方便访问GitHub的朋友,我直接粘贴过来
  
  
# 请前往千帆AppBuilder官网创建密钥,流程详见:https://cloud.baidu.com/doc/AppBuilder/s/Olq6grrt6#1%E3%80%81%E5%88%9B%E5%BB%BA%E5%AF%86%E9%92%A5
os.environ["APPBUILDER_TOKEN"] = "..."

相关功能

初始化已有知识库

在个人空间里查看知识库ID,示例
  
  
# 初始化已有线上知识库, dataset_id 替换为知识库ID
dataset = appbuilder.console.Dataset(dataset_id)

创建全新知识库

  
  
# 创建全新知识库
dataset = appbuilder.console.Dataset.create_dataset("my_dataset")

上传文档到知识库

  
  
# 设置文档路径,例如“./test.pdf”
file_path1 = "..."
file_path2 = "..."
file_paths = [file_path1, file_path2]
# 将文档上传到知识库
document_infos = dataset.add_documents(file_paths)
print(document_infos)

获取知识库中的文档列表

  
  
# 获取第一页的文档列表, 每页10条
document_list = dataset.get_documents(1, 10)
print(document_list)

删除知识库中的文档

  
  
# 删除第一个文档
document_ids = [document_list.data[0].id]
dataset.delete_documents(document_ids)

题外话:Open API 和 Assistants API

Open API

Appbuilder 还提供了 API 接口调用的方式,具体文档可以看这里Open API文档
几个常用接口:新建会话、文件上传、大模型对话都在这里,感兴趣的朋友可以深入研究

Assistants API

Appbuilder还提供了一个Assistants API,具体文档可以看这里Assistants API
截至发稿日,尚在内测,感兴趣的朋友可以去深入研究
评论
用户头像