本文旨在解决豆包大模型视觉模型生成的图片能够友好的全链路使用,解决用户在使用中的调用、存储、分发、后处理相关的问题。
使用最佳实践底层的能力和模型均由 火山方舟 提供,因为提供的能力、效果均由对齐火山方舟 视觉模型 的效果,并基于该模型做了能力扩展。
能力扩展对比
类型 | 能力对比 | 直接调用豆包 API | veImageX-豆包 AIGC 生图 |
---|---|---|---|
Doubao-文生图模型-智能绘图 | 通用 2.0L-文生图(CVProcess) | ✅ | ✅ |
通用 2.0S-文生图(HighAesSmartDrawing) | ✅ | ✅ | |
通用 XL pro-文生图(Text2ImgXLSft) | ✅ | ✅ | |
通用 1.4-文生图(CVProcess) | ✅ | ✅ | |
通用 1.3-文生图(HighAesSmartDrawing) | ✅ | ✅ | |
通用 1.2-文生图(HighAesSmartDrawing) | ✅ | ✅ | |
动漫 1.3.X-文生图/图生图(CVProcess) | ✅ | ✅ | |
通用XL pro-图生图(Img2ImgXLSft) | ✅ | ✅ | |
通用 2.0S-角色特征保持(CVProcess) | ✅ | ✅ | |
通用 1.4-角色特征保持(CVProcess) | ✅ | ✅ | |
单图写真(pv版)(HighAesSmartDrawing) | ✅ | ✅ | |
outpainting智能扩图(Img2ImgOutpainting) | ✅ | ✅ | |
通用 2.0L-指令编辑(SeedEdit)(CVProcess) | ✅ | ✅ | |
动漫 1.3.X-文生图/图生图异步 | ✅ | ✅ | |
通用 2.0L-文生图异步 | ✅ | ✅ | |
通用 2.0S-文生图异步 | ✅ | ✅ | |
AIGC 图像风格化(CVProcess) | ✅ | ✅ | |
人像保持同步(CVProcess) | ✅ | ✅ | |
人像保持异步 | ✅ | ✅ | |
调用形式 | API | API+SDK | |
数据流传输 | 公网下载,再上传 | 通过内网直接存入 veImageX 存储中 | |
扩展能力 | 无损压缩存储 | - | ✅ |
常规存储存储 | - | ✅ | |
压缩分发 | - | ✅ | |
盲水印 | - | ✅ | |
智能人像裁剪 | - | ✅ | |
智能超分辨率 | - | ✅ | |
水印添加 | - | ✅ | |
智能审核 | - | ✅ | |
画质增强 | - | ✅ | |
输入限制 | 输入的图片体积 | - | 单图扩展到 35MB,使用时会转码 |
输入的图片分辨率 | - | 超额分辨率会做前处理 | |
输出限制 | 输出限制 |
| 返回 veImageX 的永久 URL 和存储 URI |
通过 veImageX 提供的 OpenAPI 调用 Doubao 大模型的过程中,传入的大模型参数几乎完全透传。
每次调用 API 仅会生成 1 张图,如需获取多张图,请分批调用接口。
已完成火山引擎实名注册。
已开通 veImageX 产品。
已开通智能处理计费配置。
已创建图像处理类型服务。
已创建图片处理模板。
登录火山方舟控制台,进入开通管理页面。
点击并进入视觉大模型页签,依次完成以下三个豆包模型的开通。开通后,您就能通过 veImageX 的 OpenAPI 接入豆包的 API 服务。
登录 veImageX 控制台,进入附加组件。
在智能处理页签下,选择 ImageX-豆包 AIGC 方案组件后单击产品体验按钮。
切换为基础配置页签,单击前往授权按钮,完成授权。
在正式开始使用前,您还需要在 veImageX 侧提前获取以下信息。
获取图像处理服务的服务 ID:进入控制台的服务管理页面,查看并记录正常状态的图像处理服务的服务 ID。
获取服务内正常可用的域名:进入上面服务的基础配置页面,在分发配置页签下查看并记录正常且 CNAME 已解析的域名。
获取图片处理模板的模板配置:进入上面服务的处理配置页面,查看并记录图片处理模板的模板配置(不带~)。如tplv-xxxxxxx-6.image
。
在调用前,您已参考操作准备在 veImageX 侧获取到了以下配置信息。
ak=ak sk=sk Domain=imagex.example.com // 仅为示例 ServiceId=n9xxxxxxxz3 // 仅为示例 Template=tplv-n9xxxxxxxz3-69.jpeg // 仅为示例
各模型的调用示例如下。
# coding:utf-8 from volcengine.imagex.v2.imagex_service import ImagexService if __name__ == '__main__': service = ImagexService() service.set_socket_timeout(30) # 设置请求超时时间 service.set_ak('ak') # 传入账号的 AK service.set_sk('sk') # 传入账号的 SK query = { # 以下为火山引擎 veImageX 获取到的配置 # 参数 ServiceId,表示 veImageX 的服务 ID,需要为图像处理服务,可参考操作准备获取 'ServiceId': 'n9xxxxxxxz3' } body = { # 以下为火山引擎 veImageX 获取到的配置 # 参数 Domain,表示 veImageX 的服务下的域名,可参考操作准备获取 # 参数 Template,表示 veImageX 的图片处理模板配置,可参考操作准备获取 # 参数 Outputs,表示自定义的结果图文件名 "Domain": "imagex.example.com", "Template": "tplv-n9xxxxxxxz3-69.jpeg", "Outputs": [ "demo1.png" ], # 以下是火山方舟豆包 API 的参数,SDK 会进行透传 # 参数 ModelAction,表示所用豆包 API 的接口 Action,同步类型的取值有: # 1. CVProcess:[通用 2.0L-文生图](https://www.volcengine.com/docs/6791/1339374),[通用 1.4-文生图](https://www.volcengine.com/docs/6791/1278096),[动漫 1.3.X-文生图/图生图](https://www.volcengine.com/docs/6791/1213131)、[通用 2.0S-角色特征保持](https://www.volcengine.com/docs/6791/1361423)、[通用 1.4-角色特征保持](https://www.volcengine.com/docs/6791/1354010)、[通用 2.0L-指令编辑(SeedEdit)](https://www.volcengine.com/docs/6791/1384311) # 2. HighAesSmartDrawing:[通用 2.0S-文生图](https://www.volcengine.com/docs/6791/1333839),[通用 1.3-文生图](https://www.volcengine.com/docs/6791/1213132),[通用 1.2-文生图](https://www.volcengine.com/docs/6791/1213130)、[单图写真(pv版)](https://www.volcengine.com/docs/6791/1213737) # 3. Text2ImgXLSft:[通用 XL pro-文生图](https://www.volcengine.com/docs/6791/1330195) # 4. Img2ImgOutpainting:[outpainting智能扩图](https://www.volcengine.com/docs/6791/1223722) # 5. Img2ImgXLSft:[通用XL pro-图生图](https://www.volcengine.com/docs/6791/1330203) # 参数 ModelVersion,表示所用豆包 API 的接口 Version,取值固定为 2022-08-31 # 参数 ReqJson,表示所用豆包 API 的接口的请求参数。需要根据对应接口文档参数描述进行传值,每个接口各不相同。 "ModelVersion": "2022-08-31", "ModelAction": "CVProcess", "ModelVersion": "2022-08-31", "ReqJson": { "req_key": "high_aes_general_v20_L", "prompt": "雨后,出现一道彩虹,飞过一群鸟儿" }, } resp = service.get_cv_text_generate_image(query, body) print(resp)
# coding:utf-8 from volcengine.imagex.v2.imagex_service import ImagexService if __name__ == '__main__': service = ImagexService() service.set_socket_timeout(30) # 设置请求超时时间 service.set_ak('ak') # 传入账号的 AK service.set_sk('sk') # 传入账号的 SK query = { # 以下为火山引擎 veImageX 获取到的配置 # 参数 ServiceId,表示 veImageX 的服务 ID,需要为图像处理服务,可参考操作准备获取 'ServiceId': 'n9xxxxxxxz3' } body = { # 以下为火山引擎 veImageX 获取到的配置 # 参数 Domain,表示 veImageX 的服务下的域名,可参考操作准备获取 # 参数 Template,表示 veImageX 的图片处理模板配置,可参考操作准备获取 # 参数 Outputs,表示自定义的结果图文件名 "Domain": "imagex.example.com", "Template": "tplv-n9xxxxxxxz3-69.jpeg", "ImageUrl": "http://test.img.com/A.png", "Outputs": [ "demo2.png" ], # 以下是火山方舟豆包 API 的参数,SDK 会进行透传 # 参数 ModelAction,表示所用豆包 API 的接口 Action,取值固定为 CVProcess # 参数 ModelVersion,表示所用豆包 API 的接口 Version,取值固定为 2022-08-31 # 参数 ReqJson,表示所用豆包 API 的接口的请求参数。需要根据对应接口文档参数描述进行传值,每个接口各不相同。 "ModelAction": "CVProcess", "ModelVersion": "2022-08-31", "ReqJson": { "req_key": "img2img_water_ink_style", "image_urls": [ "http://test.img.com/B.jpeg"] } } resp = service.get_cv_image_generate_result(query, body) print(resp)
# coding:utf-8 from volcengine.imagex.v2.imagex_service import ImagexService if __name__ == '__main__': service = ImagexService() service.set_socket_timeout(30) # 设置请求超时时间 service.set_ak('ak') # 传入账号的 AK service.set_sk('sk') # 传入账号的 SK query = { # 以下为火山引擎 veImageX 获取到的配置 # 参数 ServiceId,表示 veImageX 的服务 ID,需要为图像处理服务,可参考操作准备获取 'ServiceId': 'n9xxxxxxxz3' } } body = { # 以下为火山引擎 veImageX 获取到的配置 # 参数 Domain,表示 veImageX 的服务下的域名,可参考操作准备获取 # 参数 Template,表示 veImageX 的图片处理模板配置,可参考操作准备获取 # 参数 Outputs,表示自定义的结果图文件名 "Domain": "imagex.example.com", "Template": "tplv-n9xxxxxxxz3-69.jpeg", "Outputs": [ "demo3.png" ], # 以下是火山方舟豆包 API 的参数,SDK 会进行透传 # 参数 ModelAction,表示所用豆包 API 的接口 Action,同步类型的取值固定为 CVProcess # 参数 ModelVersion,表示所用豆包 API 的接口 Version,取值固定为 2022-08-31 # 参数 ReqJson,表示所用豆包 API 的接口的请求参数。需要根据对应接口文档参数描述进行传值,每个接口各不相同。 "ModelAction": "CVProcess", "ModelVersion": "2022-08-31", "ReqJson": { "req_key": "img2img_anime_accelerated_maintain_id_for_smart_drawing_anime", "image_urls": ["http://test.img.com/A.png"] } } resp = service.get_cv_anime_generate_image(query, body) print(resp)
veImageX 提供了多种语言的服务端 SDK,具体如下所示:
您可通过设置超时时间来处理,以下为各语言设置超时的代码:
Python:service.set_socket_timeout(30)
Go:instance.Client.SetTimeout(30)
Java:instance.setSocketTimeout(30)
Node.js:通常在接口第二个参数进行设置,如const res = await Client.GetCVTextGenerateImage(requestParam, params:{timeout: 30})