AI 图片生成统一入口:从 6 种分散方案到 1 个技能

2026-06-04

为什么要做这件事

我的 AI Agent 系统里图片生成的能力散落在 6 个地方:系统内置的 image_generate、通义千问主技能、阿里云百炼脚本、商汤日日新、9Router 网关、还有博客发布管道里的配图逻辑。

问题很明显——问 Agent “生成一张图片”,它不知道该调哪个。6 个方案之间有大量重复代码,默认模型还是过时的 wan2.6-t2i(没有免费额度)。更离谱的是,阿里云百炼脚本和通义千问技能调的是同一个 API,但维护了两套代码。

所以我决定合并。目标:一个入口覆盖所有图片生成场景

合并前的 6 个方案

先看看原来都有什么:

  1. 系统内置 image_generate — 无需加载技能,后端可配(FAL、OpenAI),但用户不能选模型,只有 landscape/portrait/square 三种比例
  2. qianwen-image-generation(通义千问) — 支持 5 种生成方式、16 个模型,功能最全,是事实上的主技能
  3. aliyun-media-generation(阿里云百炼) — 本地脚本 qwen_image.py,实际调的也是通义千问 API,和方案 2 重复
  4. sensenova-media-generation(商汤日日新)sensenova-u1-fast 模型,纯文生图,支持推理生图(先理解再画)
  5. 9Router 网关 — 统一网关转发,提到有文生图能力
  6. 博客发布管道 — T2 撰写要正文配图,T4 要封面图,之前靠 image_generate 降级凑合

这 6 个方案的关系错综复杂。百炼脚本和通义千问调同一个接口,商汤是独立的备选,内置工具是兜底。但对 Agent 来说,没有清晰的路由规则。

合并过程

第一步:查免费额度

这是最关键的一步。我查了通义千问的用量和模型信息,发现 wan2.7-image-pro50 张/月免费额度,而原来的默认模型 wan2.6-t2i 没有。

免费额度直接决定了默认模型选谁。50 张/月对个人博客配图来说绰绰有余。

第二步:合并到通义千问技能

把所有图片生成能力收拢到 qianwen-image-generation

  • 默认模型从 wan2.6-t2i 改为 wan2.7-image-pro(6 处引用要逐一排查)
  • 新增本地快速工具章节,引用 ~/tools/qwen-image/qwen_image.py
  • 新增 API 坑点章节(文档常写错的 endpoint 和分辨率格式)

第三步:精简阿里云百炼技能

百炼脚本的 Section C(文生图/图生图)和通义千问重复,直接删掉。只保留 Section A(文生视频 T2V)和 Section B(图生视频 I2V)。

技能名也从 aliyun-media-generation 改成 aliyun-video-generation——但目录名不动,因为改目录名会影响 git 历史和脚本路径引用。技能匹配靠的是 YAML name 字段,不是目录名。

第四步:更新发布管道

博客流水线的 T2 撰写步骤明确加载 qianwen-image-generation,首选 wan2.7-image-pro(免费 50 张/月),备选商汤日日新。T4 封面设计走另一条路:guizang-social-card → image_generate → 默认 logo。

合并后的职责划分

合并完,每个技能有且只有一个明确的职责:

技能 干什么 推荐模型
qianwen-image-generation 文生图、图生图、图像编辑(唯一入口 wan2.7-image-pro(免费 50 张/月)
aliyun-video-generation 文生视频(T2V)、图生视频(I2V) wan2.7-t2v
sensenova-media-generation 推理生图(备选) sensenova-u1-fast
image_generate 系统内置兜底 FAL/OpenAI

怎么用

最简单的调用方式:

# 文生图(默认 wan2.7-image-pro)
python3 ~/tools/qwen-image/qwen_image.py generate "A cozy flower shop with wooden door" -o output.png

# 图生图(编辑)
python3 ~/tools/qwen-image/qwen_image.py edit input.png "apply watercolor style" -o output.png

# 批量生成 3 张
python3 ~/tools/qwen-image/qwen_image.py generate "提示词" -n 3 -o out.png

用技能内置脚本(功能更全,支持更多参数):

python3 ~/.hermes/skills/qianwen/qianwen-image-generation/scripts/image.py \
  --model wan2.7-image-pro \
  --request '{"prompt":"A cozy flower shop", "size":"1280*720"}' \
  --output output.png

模型速查表

不同场景该用哪个模型:

模型 干什么 免费额度 推荐度
wan2.7-image-pro 文生图+编辑+序列图+4K 50张/月 首选
wan2.6-t2i 纯文生图 一般
wan2.7-image 文生图+编辑(更快,最高2K) 未知 可以
qwen-image-2.0-pro 文字渲染+真实纹理 未知 特定场景
z-image-turbo 开源SOTA 未知 试试

5 个踩坑点

这些都是合并过程中实际踩到的,不是纸上谈兵。

坑 1:API Endpoint 文档写错了

通义千问的官方文档里,有些页面写的图片生成 endpoint 是错的。

正确的 endpoint:

POST /api/v1/services/aigc/multimodal-generation/generation

文档里出现过的错误 endpoint:

/compatible-mode/v2/images/generations  → 404

分辨率格式也有坑——用星号 2048*2048,不是字母 x 2048x2048。这个报错信息不直观,排查了半天。

坑 2:wan2.6-image 不能纯文生图

wan2.6-image 是图像编辑模型,必须传 reference_images(参考图)或者开启 enable_interleave。纯文字提示词调用会直接报错。

这是合并时才发现的。之前两个技能各自维护,没人注意到这个模型的使用限制。

坑 3:Token Plan 密钥不兼容

如果你用的是阿里云百炼的 Token Plan 团队版,密钥格式是 sk-sp-...,指向不同的 endpoint。图片生成技能需要标准的 sk-... 格式 DashScope Key。

两种 Key 不通用,用错了会报 401 认证失败,但错误信息不会告诉你”你用错 Key 类型了”。

坑 4:默认模型改了 6 处

把默认模型从 wan2.6-t2i 改成 wan2.7-image-pro,涉及 SKILL.md(多处引用)、scripts/image.pyscripts/image_lib.py,还有本地工具脚本。漏改一处就会出现不一致。

经验:改默认模型前,先全局搜索旧模型名,确认所有引用点。

坑 5:目录名和技能名是两回事

改技能的 YAML name 字段就够了,不用改目录名。改目录名会影响 git 历史和脚本中的路径引用。技能匹配靠的是 YAML name 字段,不是目录名。

所以 aliyun-video-generation 这个技能,目录仍然叫 aliyun-media-generation/。看起来有点怪,但比破坏一堆路径引用要好。

总结

6 个图片生成方案合并成 1 个统一入口,核心收益是:Agent 不再纠结该调谁,用户不再记不住哪个脚本在哪。

合并的逻辑其实不复杂——找到功能最全的那个技能(通义千问),把其他方案的独有能力收进来,重复的删掉,独立的保留但明确边界。真正费时间的是排查免费额度、修正文档错误、处理密钥兼容性这些脏活。

如果你也在用 AI Agent 系统,图片生成技能散落在多个地方,可以参考这个思路:先查额度决定默认模型,再合并重复代码,最后更新所有引用。