AI 绘图平台在处理「图生图」任务时,通常会输出多张结果图,用以展示不同角度、光影或动作的变化。然而,最近在将 Dreamina 的图生图功能整合进自建 AIGC 服务时,许多开发者发现一个诡异现象:无论提示词写得多么详细,生成结果始终只有一张图。
表面看是模型输出问题,实际上是服务端逻辑过早返回导致的。本文将带大家完整分析问题成因,讲清楚轮询机制的设计思路,并展示如何通过几行 TypeScript 代码修复这个痛点,让 Dreamina 恢复到「一次生成四图」的正常状态。
文章目录
- 问题现象与定位思路
- 改进后的轮询代码实现
- 修复后运行效果
- 进一步优化建议
- 完整修复版函数
- 总结
问题现象与定位思路
在服务端调用/mweb/v1/aigc_draft/generate提交图生图任务后,日志中经常能看到类似输出:
[info] 图生图完成: 状态=45, 已生成 1 张图片 [info] 图生图结果: 成功生成 1 张图片生成速度非常快,结果只包含一张图。
表面看像模型输出数量限制,但进一步分析发现,Dreamina 服务返回的状态码45 并不代表任务结束,而是「任务阶段性完成」。
换句话说:
服务端在检测到第一张图片生成时,就提前
break退出了轮询,任务仍在后台继续运行,但程序已经返回结果。
问题根源:轮询逻辑过早终止
来看核心逻辑(修改前):
if(item_list.length>0)