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

本文主要是介绍【千帆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格式文本

这篇关于【千帆AppBuilder】使用Python调用基于官方的API创建图片故事的应用,一起体验下全代码模式下是怎样的效果的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1129915

相关文章

使用Python实现图像LBP特征提取的操作方法

《使用Python实现图像LBP特征提取的操作方法》LBP特征叫做局部二值模式,常用于纹理特征提取,并在纹理分类中具有较强的区分能力,本文给大家介绍了如何使用Python实现图像LBP特征提取的操作方... 目录一、LBP特征介绍二、LBP特征描述三、一些改进版本的LBP1.圆形LBP算子2.旋转不变的LB

Maven的使用和配置国内源的保姆级教程

《Maven的使用和配置国内源的保姆级教程》Maven是⼀个项目管理工具,基于POM(ProjectObjectModel,项目对象模型)的概念,Maven可以通过一小段描述信息来管理项目的构建,报告... 目录1. 什么是Maven?2.创建⼀个Maven项目3.Maven 核心功能4.使用Maven H

Python中__init__方法使用的深度解析

《Python中__init__方法使用的深度解析》在Python的面向对象编程(OOP)体系中,__init__方法如同建造房屋时的奠基仪式——它定义了对象诞生时的初始状态,下面我们就来深入了解下_... 目录一、__init__的基因图谱二、初始化过程的魔法时刻继承链中的初始化顺序self参数的奥秘默认

SpringBoot使用GZIP压缩反回数据问题

《SpringBoot使用GZIP压缩反回数据问题》:本文主要介绍SpringBoot使用GZIP压缩反回数据问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录SpringBoot使用GZIP压缩反回数据1、初识gzip2、gzip是什么,可以干什么?3、Spr

Python实现特殊字符判断并去掉非字母和数字的特殊字符

《Python实现特殊字符判断并去掉非字母和数字的特殊字符》在Python中,可以通过多种方法来判断字符串中是否包含非字母、数字的特殊字符,并将这些特殊字符去掉,本文为大家整理了一些常用的,希望对大家... 目录1. 使用正则表达式判断字符串中是否包含特殊字符去掉字符串中的特殊字符2. 使用 str.isa

Spring Boot 集成 Quartz并使用Cron 表达式实现定时任务

《SpringBoot集成Quartz并使用Cron表达式实现定时任务》本篇文章介绍了如何在SpringBoot中集成Quartz进行定时任务调度,并通过Cron表达式控制任务... 目录前言1. 添加 Quartz 依赖2. 创建 Quartz 任务3. 配置 Quartz 任务调度4. 启动 Sprin

Linux下如何使用C++获取硬件信息

《Linux下如何使用C++获取硬件信息》这篇文章主要为大家详细介绍了如何使用C++实现获取CPU,主板,磁盘,BIOS信息等硬件信息,文中的示例代码讲解详细,感兴趣的小伙伴可以了解下... 目录方法获取CPU信息:读取"/proc/cpuinfo"文件获取磁盘信息:读取"/proc/diskstats"文

python中各种常见文件的读写操作与类型转换详细指南

《python中各种常见文件的读写操作与类型转换详细指南》这篇文章主要为大家详细介绍了python中各种常见文件(txt,xls,csv,sql,二进制文件)的读写操作与类型转换,感兴趣的小伙伴可以跟... 目录1.文件txt读写标准用法1.1写入文件1.2读取文件2. 二进制文件读取3. 大文件读取3.1

Java使用SLF4J记录不同级别日志的示例详解

《Java使用SLF4J记录不同级别日志的示例详解》SLF4J是一个简单的日志门面,它允许在运行时选择不同的日志实现,这篇文章主要为大家详细介绍了如何使用SLF4J记录不同级别日志,感兴趣的可以了解下... 目录一、SLF4J简介二、添加依赖三、配置Logback四、记录不同级别的日志五、总结一、SLF4J

使用Python实现一个优雅的异步定时器

《使用Python实现一个优雅的异步定时器》在Python中实现定时器功能是一个常见需求,尤其是在需要周期性执行任务的场景下,本文给大家介绍了基于asyncio和threading模块,可扩展的异步定... 目录需求背景代码1. 单例事件循环的实现2. 事件循环的运行与关闭3. 定时器核心逻辑4. 启动与停