# 图片生成 API 文档
# 接口说明
根据用户输入的文字内容,生成符合语义描述的不同风格的图像;
部分开发语言demo如下,其他开发语言请参照文档进行开发,也欢迎热心的开发者到 讯飞开放平台社区 (opens new window) 分享你们的demo。
图片生成 demo go语言 (opens new window)
图片生成 demo python语言 (opens new window)
图片生成 demo java语言 (opens new window)集成图片生成时,需按照以下要求:
| 内容 | 说明 |
|---|---|
| 传输方式 | http[s] (为提高安全性,强烈推荐https) |
| 请求地址 | https://spark-api.cn-huabei-1.xf-yun.com/v2.1/tti 注:服务器IP不固定,为保证您的接口稳定,请勿通过指定IP的方式调用接口,使用域名方式调用 |
| 请求行 | POST /v2.1/tti HTTP/1.1 |
| Content-Type | application/json;charset=UTF-8 |
| 接口鉴权 | 签名机制,详情请参照签名生成 (opens new window) |
| 字符编码 | UTF-8 |
| 响应格式 | 统一采用JSON格式 |
| 开发语言 | 任意,只要可以向讯飞云服务发起HTTP请求的均可 |
| 适用范围 | 任意操作系统,但因不支持跨域不适用于浏览器 |
# 鉴权说明
在调用业务接口时,请求方需要对请求进行签名,服务端通过签名来校验请求的合法性。技术咨询可直接提交工单 (opens new window)
# 鉴权方法
详情请参照下方签名生成 (opens new window)
# 鉴权结果
如果鉴权失败,则根据不同错误类型返回不同HTTP Code状态码,同时携带错误描述信息,详细错误说明如下:
| HTTP Code | 说明 | 错误描述信息 | 解决方法 |
|---|---|---|---|
| 401 | 缺少authorization参数 | {"message":"Unauthorized"} | 检查是否有authorization参数,详情见authorization参数详细生成规则 |
| 401 | 签名参数解析失败 | {“message”:”HMAC signature cannot be verified”} | 检查签名的各个参数是否有缺失是否正确,特别确认下复制的api_key是否正确 |
| 401 | 签名校验失败 | {“message”:”HMAC signature does not match”} | 签名验证失败,可能原因有很多。 1. 检查api_key,api_secret 是否正确。 2.检查计算签名的参数host,date,request-line是否按照协议要求拼接。 3. 检查signature签名的base64长度是否正常(正常44个字节)。 |
| 403 | 时钟偏移校验失败 | {“message”:”HMAC signature cannot be verified, a valid date or x-date header is required for HMAC Authentication”} | 检查服务器时间是否标准,相差5分钟以上会报此错误 |
时钟偏移校验失败示例:
HTTP/1.1 403 Forbidden
Date: Mon, 22 May 2023 05:44:14 GMT
Content-Length: 116
Content-Type: text/plain; charset=utf-8
{
"message": "HMAC signature does not match, a valid date or x-date header is required for HMAC Authentication"
}
# 请求参数
在调用业务接口时,都需要在 Http Request Body 中配置以下参数,请求数据均为json字符串。
请求参数示例:
{
"header": {
"app_id": "your_appid"
},
"parameter": {
"chat": {
"domain": "general",
"width": 512,
"height": 512
}
},
"payload": {
"message": {
"text": [
{
"role": "user",
"content": "帮我画一座山"
}
]
}
}
}
请求参数说明:
注: 文生图目前仅开放单轮交互,单轮交互只需要传递一个user角色的数据
| 参数名 | 类型 | 必传 | 描述 |
|---|---|---|---|
| header.app_id | string | 是 | 应用的app_id |
| header.uid | string | 否 | 每个用户的id,非必传字段,用于后续扩展,"maxLength":32 |
| parameter.chat.width | int | 图片的宽度 | 参考下方分辨率说明, 不同的分辨率计费不同,请选择合适的使用 |
| parameter.chat.height | int | 图片的高度 | 参考下方分辨率说明, 不同的分辨率计费不同,请选择合适的使用 |
| payload.message.text | json/object/array | 是 | 文本数据 |
| payload.message.text.role | string | 是 | 角色,user:表示是用户的问题 |
| payload.message.text.content | string | 是 | 文本内容,该角色的对话内容,不得超过1000个字符 |
# 分辨率说明
注: 图片生成按点数计费,不同分辨率计费不同,具体如下
| 分辨率(width * height) | 图点数 |
|---|---|
| 512x512 | 6 |
| 640x360 | 6 |
| 640x480 | 6 |
| 640x640 | 7 |
| 680x512 | 7 |
| 512x680 | 7 |
| 768x768 | 8 |
| 720x1280 | 12 |
| 1280x720 | 12 |
| 1024x1024 | 14 |
# 返回结果
返回参数示例: 成功
{
"header": {
"code": 0,
"message": "Success",
"sid": "cht000704fa@dx16ade44e4d87a1c802",
"status": 0
},
"payload": {
"choices": {
"status": 2,
"seq": 0,
"text": [
{
"content": "base64",
"index": 0,
"role": "assistant"
}
]
}
}
}
异常
{
"header": {
"code": 10003,
"message": "xxxx",
"sid": "cht00120013@dx181c8172afb0001102",
"status": 2,
}
}
返回参数说明:
| 参数 | 类型 | 含义 |
|---|---|---|
| header.code | int | 服务错误码 , 0表示正常,非0表示出错 |
| header.sid | string | 会话的sid |
| header.status | int | 会话的状态 ,文生图场景下为2 |
| header.message | string | 返回消息描述 ,错误码的描述信息 |
| payload.choices.status | int | 数据状态 ,0:开始, 1:开始, 2:结束(表示文本响应结束) |
| payload.choices.seq | int | 数据序号,最小值:0, 最大值:9999999 |
| payload.choices.text | json object array | 文本结果 ,是一个json 数组 |
text字段参数说明
| 参数 | 类型 | 含义 |
|---|---|---|
| content | string | 返回的base64图片结果,默认分辨率512*512 |
| index | int | 结果序号,在多候选中使用 |
| role | string | 角色,assistant说明这是AI的回复 |
根据《人工智能生成合成内容标识办法》规定,API 接口已在生成的图片元数据中增加隐式标识
示例如下:
{"Label":"1","ContentProducer":"001191340000711771143J00000","ProduceID":"ase000fe8f5@dx19975bedcc6b832882","ReservedCode1":"","ContentPropagator":"001191340000711771143J00000","PropagateID":"ase000fe8f5@dx19975bedcc6b832882","ReservedCode2":""}
注:保存图片数据时,需要通过字节流写入的方式保存,否则元数据可能因为格式转换而丢失,代码如下:
#将base64 的图片数据存在本地
def base64_to_image(base64_data, save_path,image_name):
# 解码base64数据
img_data = base64.b64decode(base64_data)
with open(os.path.join(save_path, image_name+'.png' ),'wb') as f:
f.write(img_data)
# 错误码描述
| 错误码 | 错误信息 |
|---|---|
| 0 | 成功 |
| 10003 | 用户的消息格式有错误 |
| 10004 | 用户数据的schema错误 |
| 10005 | 用户参数值有错误 |
| 10008 | 服务容量不足 |
| 10021 | 输入审核不通过 |
| 10022 | 模型生产的图片涉及敏感信息,审核不通过 |
# 常见问题
# 图片生成的主要功能是什么?
答:根据用户输入的文字内容,生成符合语义描述的不同风格的图像。
# 图片生成支持什么应用平台?
答:目前支持Web API应用平台。
# 图片生成的默认大小为多少?
答:分辨率512*512。