【千帆AppBuilder】使用Python调用基于官方的API创建图片故事的应用,一起体验下全代码
大模型开发/技术交流
- 有奖征文
- LLM
- 文心大模型
8月29日4607看过
背景
前段时间看到一个关于由图片生成故事的讨论。
因此基于这个讨论点通过千帆AppBuilder创建AI应用。
AppBuilder创建应用支持上传图片和文件,这个满足我们的需求。
Let's Go
因此基于这个讨论点通过千帆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缓存起来,不必要每次都调用。
对话id,可以用于后续调用,有效期为7天。
备注:如果对于高并发场景,那么可以把会话id缓存起来,不必要每次都调用。
import requestsimport jsondef 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 requestsimport jsondef 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。
这里返回的数据就不能直接转为json,需要自己额外处理再转为json。
import requestsimport jsonapp_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()
调试
上面也非常贴心的提供了一个调试按钮,直接在页面就可以调试查看结果
新建会话
大模型对话
大模型对话也需要依赖于会话编号。
上传文件
上传文件也需要依赖于会话编号。
示例代码中心:https://console.bce.baidu.com/support/?u=qfdc#/api?product=QIANFAN&project=%E5%8D%83%E5%B8%86AppBuilder&parent=OpenAPI&api=v2%2Fapp%2Fconversation%2Ffile%2Fupload&method=post
示例代码中心:https://console.bce.baidu.com/support/?u=qfdc#/api?product=QIANFAN&project=%E5%8D%83%E5%B8%86AppBuilder&parent=OpenAPI&api=v2%2Fapp%2Fconversation%2Ffile%2Fupload&method=post
体验效果
-
体验地址
我在百度智能云千帆AppBuilder开发了一款AI原生应用,快来使用吧!「图转故事小达人」:https://appbuilder.baidu.com/s/pOVocg7O
手机端体验地址:https://wx.baeapps.com/api/ai_apaas/v1/wx_program/share?share_code=appalWBosSSbvtVOI89fP8S
手机端体验地址:https://wx.baeapps.com/api/ai_apaas/v1/wx_program/share?share_code=appalWBosSSbvtVOI89fP8S
评论