要在Python中稳定调用LiblibAI文生图API,需正确配置签名参数(Signature、Timestamp、SignatureNonce)、构造含提示词等字段的JSON请求体,并严格轮询/task/status接口获取图片URL;密钥须从官网API平台创建并安全存储,Timestamp误差不可超300秒,SignatureNonce须每次唯一,缺失task_id或code非0时不可轮询。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜
要在Python程序中稳定调用LiblibAI文生图API生成图像,必须正确配置签名参数、构造请求体,并能准确解析返回的JSON结构;漏填Timestamp、错拼URI路径或忽略任务轮询机制都会导致请求被拒绝或返回空结果。
登录LiblibAI官网→进入左侧导航栏“API开发平台”→点击“创建密钥”,系统将生成AccessKey与SecretKey。AccessKey用于标识身份,SecretKey用于签名计算,【SecretKey仅显示一次,关闭页面后不可恢复,必须立即复制保存至环境变量或加密文件】。
在项目根目录新建.env文件,写入:
LIBLIB_ACCESS_KEY="KIQMFXjHaobx7wqo9XvYKA"
LIBLIB_SECRET_KEY="KppKsn7ezZxhi6lIDjbo7YyVYzanSu2d"
LiblibAI要求所有请求携带Signature、Timestamp、SignatureNonce三要素,且签名算法为HMAC-SHA1,拼接顺序固定为:URI + "&" + Timestamp + "&" + SignatureNonce。
Timestamp必须为毫秒级整数,误差超过300秒即被判定为失效请求。
SignatureNonce需为UUID v4字符串(不含短横线),每次请求必须唯一,重复使用将触发风控拦截。
以下为关键签名函数(直接可用):
def make_signature(uri, secret_key):
timestamp = str(int(time.time() * 1000))
nonce = str(uuid.uuid4()).replace('-', '')
content = uri + '&' + timestamp + '&' + nonce
digest = hmac.new(secret_key.encode(), content.encode(), sha1).digest()
signature = base64.urlsafe_b64encode(digest).rstrip(b'=').decode()
return signature, timestamp, nonce
第一步:调用/api/generate/webui/text2img接口,POST JSON体包含提示词、模型名、分辨率等核心参数。
第二步:必须携带四个查询参数——AccessKey、Signature、Timestamp、SignatureNonce,缺一不可。
第三步:请求成功返回JSON,其中task_id字段为后续轮询唯一依据,【若返回中无task_id或code非0,说明参数未通过校验,不要继续轮询】。
示例请求体:
{"prompt":"水墨江南,青瓦白墙,撑油纸伞的少女侧影","model_name":"Seedream 4.0","width":1024,"height":1024,"steps":30,"cfg_scale":7}
① 发起GET请求至/api/task/status,附带查询参数:task_id、AccessKey、Signature、Timestamp、SignatureNonce;
② 每次轮询间隔不得少于2秒,连续5次返回status为pending应终止并检查任务ID有效性;
③ 当status变为success时,从result.images数组中提取首个url字段值,该链接有效期为24小时;
④ 若status为failed,需读取error_msg内容判断原因——常见有积分不足、模型未启用、提示词含违禁词三类。