当前位置: 首页 > news >正文

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

欢迎来到《小5讲堂》
这是《千帆》系列文章,每篇文章将以博主理解的角度展开讲解。
温馨提示:博主能力有限,理解水平有限,若有不对之处望指正!

在这里插入图片描述

目录

  • 背景
  • 基本信息
    • 名称
    • 简介
    • 角色指令
  • 能力扩展
    • 组件
    • 对话
      • 开场白
      • 推荐问
  • 模型选择
  • 体验效果
    • 参考图
  • 全代码设置
    • 获取应用ID
    • 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缓存起来,不必要每次都调用。
技术文档:https://cloud.baidu.com/doc/AppBuilder/s/vlv2ftwfs

import requests
import 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()

大模型对话

技术文档:https://cloud.baidu.com/doc/AppBuilder/s/mlv2fvh79

import requests
import 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()方法在这里插入图片描述

上传文件

技术文档:https://cloud.baidu.com/doc/AppBuilder/s/flv2fur67
上传图片这里示例有个坑,如果用了Content-Type的multipart/form-data值响应一直说失败。
注释后,响应成功。在这里插入图片描述
文件名不能包含特殊符号。在这里插入图片描述
在这里插入图片描述

完整代码

大模型对话,如果内容比较多,那么是会分data多个返回。
这里返回的数据就不能直接转为json,需要自己额外处理再转为json。

在这里插入图片描述

import requests
import 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()

调试

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

新建会话

在这里插入图片描述

大模型对话

大模型对话也需要依赖于会话编号。在这里插入图片描述

上传文件

上传文件也需要依赖于会话编号。
示例代码中心:点击跳转查看在这里插入图片描述

体验效果

增加数字人提高体验效果,有数字人可以直接进行故事播报,也是不错的体验。在这里插入图片描述
在这里插入图片描述

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

推荐文章

【千帆AppBuilder】你有一封邮件待查收|未来的我,你好吗?欢迎体验AI应用《未来信使》

【千帆平台】零代码结合知识库或者插件开发一款AI应用,2024年奥运会运动员获奖信息(人工智能应用)

【千帆AppBuidler】零代码构建AI人工智能应用,全网都在喊话歌手谁能应战,一键AI制作歌手信息查询应用

【千帆平台】使用AppBuilder零代码创建应用,然后通过OpenAPI方式调用应用

【千帆平台】AIGC人工智能应用,使用AppBuilder零代码创建应用,Excel表格数据转为Markdown格式文本

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • PhpStorm下调试功能配置
  • KAN学习Day1——模型框架解析及HelloKAN
  • Spring boot整合接入Redis
  • shell脚本前置基础
  • 揭秘组合模式:C++设计模式的奥秘与应用!
  • 《基础模型时代的图像分割》研究综述
  • 视频素材网站无水印的有哪些?热门视频素材网站分享!
  • 文心快码帮你解大厂面试题:一次请求从浏览器进入到Sping框架的服务,整个请求的生命周期是什么?
  • HTB-lgnition(curl工具、yakit、 弱口令)
  • Git —— 2、配置本地与远程免密仓库免密访问、实操创建本地仓库与上github新仓库关联
  • stm32之硬件I2C读写MPU6050陀螺仪、加速度传感器应用案例
  • 2024杭电6
  • Spring之整合Mybatis底层源码解析
  • 万字文档带你走进Python的世界
  • 一图打尽C++内存分区(分段)
  • cookie和session
  • CSS盒模型深入
  • Git同步原始仓库到Fork仓库中
  • If…else
  • Joomla 2.x, 3.x useful code cheatsheet
  • Js实现点击查看全文(类似今日头条、知乎日报效果)
  • mysql外键的使用
  • thinkphp5.1 easywechat4 微信第三方开放平台
  • 成为一名优秀的Developer的书单
  • 搞机器学习要哪些技能
  • 缓存与缓冲
  • 利用jquery编写加法运算验证码
  • 罗辑思维在全链路压测方面的实践和工作笔记
  • 使用SAX解析XML
  • 数组大概知多少
  • 说说动画卡顿的解决方案
  • 问:在指定的JSON数据中(最外层是数组)根据指定条件拿到匹配到的结果
  • AI算硅基生命吗,为什么?
  • 进程与线程(三)——进程/线程间通信
  • 浅谈sql中的in与not in,exists与not exists的区别
  • 支付宝花15年解决的这个问题,顶得上做出十个支付宝 ...
  • ​MPV,汽车产品里一个特殊品类的进化过程
  • ​渐进式Web应用PWA的未来
  • #DBA杂记1
  • #宝哥教你#查看jquery绑定的事件函数
  • (Demo分享)利用原生JavaScript-随机数-实现做一个烟花案例
  • (板子)A* astar算法,AcWing第k短路+八数码 带注释
  • (过滤器)Filter和(监听器)listener
  • (接口封装)
  • (七)微服务分布式云架构spring cloud - common-service 项目构建过程
  • (四)Tiki-taka算法(TTA)求解无人机三维路径规划研究(MATLAB)
  • (一一四)第九章编程练习
  • (已解决)什么是vue导航守卫
  • (转)setTimeout 和 setInterval 的区别
  • .NET 8.0 中有哪些新的变化?
  • .NET MVC之AOP
  • .Net OpenCVSharp生成灰度图和二值图
  • .NET开发人员必知的八个网站
  • .NET微信公众号开发-2.0创建自定义菜单
  • .NET序列化 serializable,反序列化