API Path
/aipaas/lm/v1/text/picture
请求协议
HTTPS
请求方法
POST
请求头部 :
| 头部标签 | 必填 | 说明 | 类型 | 数据字典 | 限制 | 头部内容 | 示例 |
|---|---|---|---|---|---|---|---|
| Content-Type | 是 | application/json | [string] | application/json | application/json | ||
| X-APP-ID | 是 | 控制台-应用管理-创建应用-AppID,公网鉴权,公网调用时必传 | [string] | ||||
| Authorization | 是 | 公网鉴权,公网调用时必传 | [string] | ||||
| Device-Uuid | 否 | 设备管理-设备uuid | [string] |
请求参数:
| 参数名 | 说明 | 必填 | 类型 | 数据字典 | 限制 | 示例 |
|---|---|---|---|---|---|---|
| seq_id | 请求序列号,请求的唯一标识 | 是 | [string] | |||
| task_id | 能力编号,当前能力编号为10001 | 是 | [int] | |||
| prompt | 文本内容 | 是 | [string] | |||
| resolution_ratio | 分辨率 | 否 | [array] | [1,1]:分辨率1:1,[9,16]:分辨率9:16,[16,9]:分辨率16:9,[4,3]:分辨率4:3 | ||
| style | 生成风格 | 否 | [int] | 0:通用风格,1:写实风格,2:卡通风格,3:3D风格,4:素描风格,5:中国画风格,6:油画风格,7:水彩风格,8:彩铅风格,9:像素风格 | ||
| batch_size | 生成图片数量,默认4张,最大支持4张。 | 否 | [int] | |||
| callback_url | 接收回调结果的url地址,return_mode为0是必传 | 否 | [string] | |||
| return_mode | 结果返回模式,0:push,1:pull,默认为0。push模式即提供callback_url接收最终结果回调;pull模型即通过大模型异步调用结果回查接口查询最终调用结果,接口文档详见开发指南下的大模型异步调用结果回查。 | 否 | [int] |
响应内容 :
| 参数名 | 说明 | 必填 | 类型 | 数据字典 | 限制 | 示例 |
|---|---|---|---|---|---|---|
| code | 状态响应码。参考错误编码规范 | 是 | [string] | |||
| msg | 调用结果描述。参考错误编码规范 | 是 | [string] | |||
| requestId | 请求ID,用于调用查询大模型生成结果信息接口 | 是 | [string] |
成功示例[Mock API] :
{
"code": "10000",
"msg": "调用成功",
"requestId": "test001"
}
失败示例[Mock API] :
{
"code": "10903",
"msg": "服务执行失败",
"requestId": "test001"
}
该算法提供根据输入文字和风格制作并生成结果图片的能力。
服务接口调用时需要严格遵循服务鉴权规则
公网服务调用鉴权规则请参见:开发指南 - 接口签名认证
通用状态码请参见【状态码】中的【网关认证】,其余状态码如下:
| 返回编码 | 返回信息 | 说明 |
|---|---|---|
| 10000 | 服务执行成功 | 服务执行成功 |
| 10100 | 算法模型异常 | 算法模型调用失败(超时) |
| 10101 | 结果图片不合规 | 算法生成图片存在不合规元素,不进行输出 |
| 10200 | 图片下载异常 | 图片 url 访问失败,下载异常 |
| 10201 | 图片格式错误 | 下载后的图片格式不对,非图片(除 jpeg, png, jpg) |
| 10202 | 算法推理异常 | 算法推理失败,生成图片失败 |
| 10203 | 图片上传异常 | 结果图片上传 ceph/minIO 失败 |
| 10204 | 图片分辨率过小 | 图片分辨率过小,无法正常生成结果 |
| 10205 | 图片检测到多个人脸 | 图片检测到多个人脸 |
| 10206 | 图片面部较小 | 图片检测到脸部过小 |
| 10207 | 人脸仅检测到侧脸 | 人脸只检测到侧脸 |
| 10208 | 图片不存在人脸 | 图片不存在人脸 |
| 10209 | 图片姿态不符合要求 | 人脸朝向不符合要求 |
| 10210 | 图片面部存在遮挡 | 人脸存在遮挡情况 |
| 10211 | 图片面部模糊 | 图片人脸过于模糊 |
| 10212 | 图片非全身照 | 图片中的人物非全身照,可能存在人体部分被遮挡情况 |
| 10213 | 图片脸部不完整 | 图片脸部不完整 |
| 10301 | 服务必填参数缺失 | 服务必填参数缺失或未填写 |
| 10304 | 服务入参错误 | 部分参数存在限制说明,会针对入参做校验返回;例如传入的 style 风格不在范围内,prompt 入参不合规等情况 |
| 10903 | 服务执行失败 | 服务执行失败(可能存在组件连接异常、算法模型程序运行异常等情况,导致服务无法正常运行) |
{
"seq_id": "test001",
"task_id": 10001,
"prompt": "丁香一样结着愁怨的姑娘",
"resolution_ratio": [1, 1],
"style": 2,
"batch_size": 1,
"callback_url": "http://your-callback-address"
}
import cn.hutool.http.HttpRequest;
import cn.hutool.http.HttpResponse;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
public class ImageGenerateText2Image {
public static void main(String[] args) {
text2ImageRequest();
}
/**
* 方法中使用到的 JSONObject、HttpRequest、HttpResponse均来自Hutool工具类。
* 具体maven依赖为:
*
* cn.hutool
* hutool-all
* 5.8.29
*
*/
public static void text2ImageRequest() {
String url = "服务调用地址";
// 设置请求头
Map headers = new HashMap();
//公网调用鉴权
headers.put("X-APP-ID", "yourAppId");
headers.put("Authorization", "yourAuthorization");
headers.put("Content-Type", "application/json");
// 创建请求对象
Map request = new HashMap();
request.put("seq_id", "test001");
request.put("task_id", 10001);
request.put("prompt", "丁香一样结着愁怨的姑娘");
request.put("resolution_ratio", Arrays.asList(1, 1));
request.put("style", 2);
request.put("batch_size", 1);
request.put("return_mode", 1);
// 将请求对象转换为
String requestString = JSONUtil.toJsonStr(request);
// 发起HTTP请求
HttpResponse response =
HttpRequest.post(url)
.headerMap(headers, false)
.body(requestString)
.execute();
// 打印返回结果
System.out.println(response.body());
}
}
import requests
import json
import logging
# 配置日志
logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')
logger = logging.getLogger(__name__)
def text_to_image_request_enhanced():
"""
增强版的文本转图像请求函数
包含更详细的日志记录和错误处理
"""
try:
url = "服务调用地址"
headers = {
"X-APP-ID": "yourAppId",
"Authorization": "yourAuthorization",
"Content-Type": "application/json"
}
# 构建请求体
request_body = {
"seq_id": "test001",
"task_id": 10001,
"prompt": "丁香一样结着愁怨的姑娘",
"resolution_ratio": [1, 1],
"style": 2,
"batch_size": 1,
"return_mode": 1
}
logger.info(f"准备发送文本生成图像请求到: {url}")
logger.debug(f"请求头: {headers}")
logger.debug(f"请求体: {json.dumps(request_body, indent=2, ensure_ascii=False)}")
# 发送POST请求
response = requests.post(
url=url,
headers=headers,
json=request_body,
timeout=30
)
logger.info(f"响应状态码: {response.status_code}")
# 处理响应
if response.status_code == 200:
try:
response_data = response.json()
logger.info("文本生成图像请求成功完成")
logger.debug(f"完整响应: {json.dumps(response_data, indent=2, ensure_ascii=False)}")
# 通常响应中会包含生成的图像数据或图像URL
if "image_url" in response_data:
logger.info(f"生成图像URL: {response_data['image_url']}")
elif "image_data" in response_data:
logger.info("收到图像数据(Base64编码)")
return response_data
except json.JSONDecodeError:
logger.error("响应不是有效的JSON格式")
logger.error(f"原始响应: {response.text}")
return None
else:
logger.error(f"文本生成图像请求失败,状态码: {response.status_code}")
logger.error(f"错误响应: {response.text}")
return None
except requests.exceptions.Timeout:
logger.error("请求超时,请检查网络连接或稍后重试")
except requests.exceptions.ConnectionError:
logger.error("连接错误,请检查URL是否正确或服务是否可用")
except requests.exceptions.HTTPError as e:
logger.error(f"HTTP错误: {e}")
except Exception as e:
logger.error(f"未预期的错误: {e}")
# 图像处理工具函数
def save_image_from_response(response_data, output_path):
"""
从响应中提取图像并保存到文件
"""
try:
if "image_data" in response_data:
# 假设图像数据是Base64编码的
import base64
image_data = response_data["image_data"]
if image_data.startswith("data:image"):
# 处理data URL格式
image_data = image_data.split(",")[1]
with open(output_path, "wb") as f:
f.write(base64.b64decode(image_data))
logger.info(f"图像已保存到: {output_path}")
elif "image_url" in response_data:
# 下载远程图像
image_url = response_data["image_url"]
image_response = requests.get(image_url, timeout=30)
with open(output_path, "wb") as f:
f.write(image_response.content)
logger.info(f"图像已从URL下载并保存到: {output_path}")
else:
logger.warning("响应中未找到图像数据或图像URL")
except Exception as e:
logger.error(f"保存图像时出错: {e}")
# 主程序
if __name__ == "__main__":
result = text_to_image_request_enhanced()
if result:
# 保存生成的图像(假设响应中包含图像数据)
save_image_from_response(result, "generated_image.jpg")
print("文本生成图像任务完成")