logo
3

【千帆AppBuilder】使用Python调用基于官方的API创建图片故事的应用,一起体验下全代码

背景

前段时间看到一个关于由图片生成故事的讨论。
因此基于这个讨论点通过千帆AppBuilder创建AI应用。
AppBuilder创建应用支持上传图片和文件,这个满足我们的需求。
Let's Go

基本信息

名称

图转故事小达人

简介

这是一款通过上传一张图片进行故事创建的AI应用。

角色指令

  
  
  
  
  
  
#角色设定
作为一个图转故事小达人,你的任务是根据用户上传的图片进行短篇故事创作,并且通过创作故事内容提取关键信息生成一张图片。
#组件能力
1.你具备图像内容理解能力。
2.你具备文生图能力。
3.文生图查询参数值加一个前缀:画一张图,内容为XXX。
#要求与限制
1.输出内容的风格要求符合图片理解方向。
2.输出结果的格式为标题加粗、创作故事段落分明、最后一张图片显示。
3.输出内容的字数限制不超过1000字。
4.如果没有识别到,那么提示用户上传一张图片。
5.必须调用文生图组件生成一张图片。
6.严格根据格式输出。
#输出格式
**标题**:XXX
**故事内容**:
XXX
![图片](XXX)

能力扩展

组件

使用两个官方组件,图像内容理解和文生图组件。

对话

开场白

你好,欢迎使用图转故事小达人,快来上传图片生成你的专属故事吧。

推荐问

请开始创作故事

模型选择

思考模型选择ERNIE-4.0-8K,因为要达到最佳效果的思路,所以选择了最准的模型,速度会相对较慢。
问答模型,只需要把创作的故事输出,无需太多处理,直接选择速度最快的即可。

体验效果

参考图

故事创作

全代码设置

完成上面的应用创建后,点击发布,完成发布后,即可得到应用ID

获取应用ID

返回到AppBuilder页面的个人空间,找到刚刚已发布的应用ID,复制应用ID

API调用

点击编辑,再点发布以及API调用。上面有很全的代码示例,大部分后端语言的示例都有,非常的贴心。
同时也提供了很详细的请求和响应参数说明,也可以点击页面跳转到具体技术文档。

设置密钥

打开AppBuilder页面,点开密钥管理选项,如果还没有设置密钥,点击新增密钥。

新建会话

下面是Python示例代码的新建会话。
对话id,可以用于后续调用,有效期为7天。
备注:如果对于高并发场景,那么可以把会话id缓存起来,不必要每次都调用。
  
  
  
  
  
  
import requests
import json
def main():
url = "https://qianfan.baidubce.com/v2/app/conversation"
payload = json.dumps({
"app_id": "粘贴刚刚复制好的应用ID"
})
headers = {
'Content-Type': 'application/json',
'X-Appbuilder-Authorization': 'Bearer 复制密钥管理设置的密钥'
}
response = requests.request("POST", url, headers=headers, data=payload)
print(response.text)
if __name__ == '__main__':
main()

大模型对话

  
  
  
  
  
  
import requests
import json
def main():
url = "https://qianfan.baidubce.com/v2/app/conversation/runs"
payload = json.dumps({
"app_id": "应用ID",
"stream": False
})
headers = {
'Content-Type': 'application/json',
'X-Appbuilder-Authorization': 'Bearer 密钥'
}
response = requests.request("POST", url, headers=headers, data=payload)
print(response.text)
if __name__ == '__main__':
main()
默认情况下,中文未显示出来,显示的是编码值。
解决方法:使用json()方法

上传文件

上传图片这里示例有个坑,如果用了Content-Type的multipart/form-data值响应一直说失败。
注释后,响应成功。
文件名不能包含特殊符号。

完整代码

大模型对话,如果内容比较多,那么是会分data多个返回。
这里返回的数据就不能直接转为json,需要自己额外处理再转为json。
  
  
  
  
  
  
import requests
import json
app_id="应用ID"
Bearer="密钥"
## 主入口
def main():
# 对话id,可以用于后续调用,有效期为7天。
createSession()
## 创建会话
def createSession():
url = "https://qianfan.baidubce.com/v2/app/conversation"
payload = json.dumps({
"app_id": app_id
})
headers = {
'Content-Type': 'application/json',
'X-Appbuilder-Authorization': 'Bearer '+Bearer
}
response = requests.request("POST", url, headers=headers, data=payload)
response_json=response.json()
conversation_id=response_json['conversation_id']
print('会话响应值:',response_json)
print('\r\n')
# 上传图片
uploadImage(conversation_id)
## 上传图片
def uploadImage(conversation_id):
url = "https://qianfan.baidubce.com/v2/app/conversation/file/upload"
payload = {
'app_id': app_id,
'conversation_id':conversation_id
}
# 图片文件路径
image_path = 'D:\\temp\\test.png' # 替换为你的图片文件路径
# 使用 'file' 作为 POST 请求中的字段名
files=[
('file',('test.png',open(image_path,'rb'),'image/png'))
]
headers = {
# 'Content-Type': 'multipart/form-data', # 加这句话响应失败
'X-Appbuilder-Authorization': 'Bearer '+Bearer
}
response = requests.request("POST", url, headers=headers, data=payload, files=files)
response_json=response.json()
print('上传图片响应值:',response_json)
print('\r\n')
# 对话id,可以用于后续调用,有效期为7天。
createChat(conversation_id,response_json['id'])
## 大模型对话
def createChat(conversation_id,file_id):
query="请开始创作故事"
url = "https://qianfan.baidubce.com/v2/app/conversation/runs"
file_ids=[]
payload = json.dumps({
"app_id": app_id,
"stream": True,
"query":query,
"conversation_id":conversation_id,
"file_ids":[
file_id
]
})
headers = {
'Content-Type': 'application/json',
'X-Appbuilder-Authorization': 'Bearer '+Bearer
}
response = requests.request("POST", url, headers=headers, data=payload)
#print(response.text)
#response_json=response.json()
print('大模型对话响应值:',response.text)
if __name__ == '__main__':
main()

调试

上面也非常贴心的提供了一个调试按钮,直接在页面就可以调试查看结果

新建会话

大模型对话

大模型对话也需要依赖于会话编号。

上传文件

体验效果

  • 体验地址
我在百度智能云千帆AppBuilder开发了一款AI原生应用,快来使用吧!「图转故事小达人」:https://appbuilder.baidu.com/s/pOVocg7O
手机端体验地址:https://wx.baeapps.com/api/ai_apaas/v1/wx_program/share?share_code=appalWBosSSbvtVOI89fP8S
评论
用户头像