【千帆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

相关文章

使用Java将各种数据写入Excel表格的操作示例

《使用Java将各种数据写入Excel表格的操作示例》在数据处理与管理领域,Excel凭借其强大的功能和广泛的应用,成为了数据存储与展示的重要工具,在Java开发过程中,常常需要将不同类型的数据,本文... 目录前言安装免费Java库1. 写入文本、或数值到 Excel单元格2. 写入数组到 Excel表格

redis中使用lua脚本的原理与基本使用详解

《redis中使用lua脚本的原理与基本使用详解》在Redis中使用Lua脚本可以实现原子性操作、减少网络开销以及提高执行效率,下面小编就来和大家详细介绍一下在redis中使用lua脚本的原理... 目录Redis 执行 Lua 脚本的原理基本使用方法使用EVAL命令执行 Lua 脚本使用EVALSHA命令

C#如何调用C++库

《C#如何调用C++库》:本文主要介绍C#如何调用C++库方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录方法一:使用P/Invoke1. 导出C++函数2. 定义P/Invoke签名3. 调用C++函数方法二:使用C++/CLI作为桥接1. 创建C++/CL

Python中pywin32 常用窗口操作的实现

《Python中pywin32常用窗口操作的实现》本文主要介绍了Python中pywin32常用窗口操作的实现,pywin32主要的作用是供Python开发者快速调用WindowsAPI的一个... 目录获取窗口句柄获取最前端窗口句柄获取指定坐标处的窗口根据窗口的完整标题匹配获取句柄根据窗口的类别匹配获取句

利用Python打造一个Excel记账模板

《利用Python打造一个Excel记账模板》这篇文章主要为大家详细介绍了如何使用Python打造一个超实用的Excel记账模板,可以帮助大家高效管理财务,迈向财富自由之路,感兴趣的小伙伴快跟随小编一... 目录设置预算百分比超支标红预警记账模板功能介绍基础记账预算管理可视化分析摸鱼时间理财法碎片时间利用财

Java 中的 @SneakyThrows 注解使用方法(简化异常处理的利与弊)

《Java中的@SneakyThrows注解使用方法(简化异常处理的利与弊)》为了简化异常处理,Lombok提供了一个强大的注解@SneakyThrows,本文将详细介绍@SneakyThro... 目录1. @SneakyThrows 简介 1.1 什么是 Lombok?2. @SneakyThrows

Python中的Walrus运算符分析示例详解

《Python中的Walrus运算符分析示例详解》Python中的Walrus运算符(:=)是Python3.8引入的一个新特性,允许在表达式中同时赋值和返回值,它的核心作用是减少重复计算,提升代码简... 目录1. 在循环中避免重复计算2. 在条件判断中同时赋值变量3. 在列表推导式或字典推导式中简化逻辑

python处理带有时区的日期和时间数据

《python处理带有时区的日期和时间数据》这篇文章主要为大家详细介绍了如何在Python中使用pytz库处理时区信息,包括获取当前UTC时间,转换为特定时区等,有需要的小伙伴可以参考一下... 目录时区基本信息python datetime使用timezonepandas处理时区数据知识延展时区基本信息

Python位移操作和位运算的实现示例

《Python位移操作和位运算的实现示例》本文主要介绍了Python位移操作和位运算的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录1. 位移操作1.1 左移操作 (<<)1.2 右移操作 (>>)注意事项:2. 位运算2.1

使用Python和Pyecharts创建交互式地图

《使用Python和Pyecharts创建交互式地图》在数据可视化领域,创建交互式地图是一种强大的方式,可以使受众能够以引人入胜且信息丰富的方式探索地理数据,下面我们看看如何使用Python和Pyec... 目录简介Pyecharts 简介创建上海地图代码说明运行结果总结简介在数据可视化领域,创建交互式地