要在Python项目中集成LiblibAI的图生图功能,实现批量图像生成、定时任务调度或与现有业务系统深度对接,最可靠的方式是通过其开放平台API完成接入。需要特别留意的是,不能直接复用网页端的Cookie或Session,API接口也不支持上传本地文件路径,必须将图片转为base64编码或通过表单上传。

获取并配置API密钥
第一步是获取合法的调用凭证。这一步不可或缺,没有密钥时所有请求都会被拒绝,并返回401错误。操作路径非常清晰:登录LiblibAI官网,进入左侧导航栏的“API开发平台”,确认已领取500试用积分(未领取的话后续调用会提示“余额不足”),然后在密钥管理页面复制AccessKey和SecretKey。
这里有一项极其重要的提醒:SecretKey必须离线保存,绝不能硬编码到Git仓库或前端代码中。建议使用python-dotenv写入.env文件,再通过os.getenv读取,确保密钥安全。
构造图生图专用请求
图生图API与文生图有本质区别,它必须携带base64编码的图片数据、去噪强度以及可选的蒙版信息,缺一不可。目前有两种主流方法可以实现:
方法一:使用requests发送POST请求。将参考图读取为bytes,用base64.b64encode()转成字符串,然后拼入JSON payload。需要注意,image字段的值是base64字符串,但不能包含data:image/png;base64,前缀。
方法二:启用multipart/form-data上传。这种方式仅限部分接口版本。需要将图片文件对象作为form-data字段传入,字段名为image_file;此时payload中不再放base64,但必须同步提供width和height参数,否则服务端无法解析图像尺寸。
两种方式都要求在HTTP Header中添加X-Liblib-Access-Key和Authorization签名头。后者由uri+timestamp+nonce+SecretKey按HMAC-SHA1生成,顺序错一位就会验签失败,所以务必注意拼接顺序,确保签名正确。
设置关键参数避免生成失败
参数设置是否得当,直接决定了调用能否成功。以下几个方面值得重点关注:
首先,确认模型支持图生图。调用前必须指定checkpoint_name参数,值必须是平台当前启用的图生图模型名,例如"F.1 Kontext"或"Seedream 4.0"。填错了会返回400报错“model not found”。
其次,控制去噪强度范围。denoising_strength设为0.4到0.6之间最稳妥。低于0.3时AI几乎不改图,高于0.7则结构崩坏的概率会大幅增加。这个参数直接影响输出是否保留原图构图,可以说是整个调用的核心。
第三,提示词必须包含风格或动作指令。纯描述性文字如“一只猫”效果会很差。建议写成“赛博朋克风格的机械猫,蹲在霓虹雨巷中,侧身回望”这种形式,否则AI会默认沿用原图语义,不会主动增强表现力。
最后,上传的图片必须满足硬性条件:分辨率不低于512×512像素,格式限定为PNG、JPG或WEBP,文件体积不超过10MB。上传前最好用PIL.Image.open校验尺寸,用os.path.getsize()检查大小,否则API会直接返回400,而且不说明具体原因。
发起调用并解析响应
准备工作完成后,就可以正式发起调用了。整个流程可以分为几个步骤:首先,组装完整请求URL,即https://api.liblib.art/v1/generate/image2image。其次,设置headers,确保包含Content-Type: application/json、X-Liblib-Access-Key和Authorization三要素。然后,用requests.post()提交payload,超时设为60秒——图生图的耗时通常在15到45秒之间。
提交后要检查status_code是否为200。非200的情况需要打印response.text进行排查。如果响应成功,响应体中的task_id字段是后续轮询结果的唯一依据。接着,用GET请求访问/v1/task/{task_id}进行轮询,直到status变为success。此时result字段里的url就是最终生成图的直链,可直接下载或展示。
