Generate AI images using multiple providers (OpenAI DALL-E, Google Imagen, DashScope/Tongyi Wanxiang, Replicate). Supports various aspect ratios, quality presets, batch generation, and provider-specific prompt engineering techniques.
至少需要配置一个图像生成服务的 API 密钥。在 .env 文件或环境变量中设置:
| 环境变量 | 服务商 | 获取方式 |
|---|---|---|
OPENAI_API_KEY | OpenAI DALL-E 3 | https://platform.openai.com/api-keys |
GOOGLE_API_KEY | Google Imagen 3 |
| https://aistudio.google.com/apikey |
DASHSCOPE_API_KEY | 通义万象 (阿里云) | https://dashscope.console.aliyun.com/ |
REPLICATE_API_TOKEN | Replicate (Flux 等) | https://replicate.com/account/api-tokens |
| 依赖 | 用途 | 安装方式 |
|---|---|---|
| Python ≥ 3.10 | 运行生成脚本 | 系统预装 |
httpx | HTTP 请求 | pip install httpx |
Pillow | 图片处理 | pip install Pillow |
| 依赖 | 用途 | 安装方式 |
|---|---|---|
openai | OpenAI SDK | pip install openai |
google-genai | Google Gemini/Imagen SDK | pip install google-genai |
dashscope | 通义万象 SDK | pip install dashscope |
replicate | Replicate SDK | pip install replicate |
| 能力 | DALL-E 3 | Imagen 3 | 通义万象 | Replicate (Flux) |
|---|---|---|---|---|
| 图片质量 | ★★★★★ | ★★★★★ | ★★★★ | ★★★★★ |
| 中文 prompt | ★★★ | ★★★ | ★★★★★ | ★★ |
| 文字渲染 | ★★★★ | ★★★★ | ★★★ | ★★★ |
| 速度 | 中等 | 快 | 快 | 慢 |
| 价格 | 较贵 | 中等 | 便宜 | 按模型 |
| 尺寸灵活度 | 3 种固定 | 多种 | 多种 | 自定义 |
| 风格多样性 | ★★★★★ | ★★★★ | ★★★★ | ★★★★★ |
Agent 根据以下规则自动选择最合适的服务商:
用户可通过指定服务商名称覆盖自动选择。
| 比例 | 像素(示例) | 适用场景 |
|---|---|---|
| 1:1 | 1024×1024 | 头像、图标、社交媒体帖子 |
| 16:9 | 1792×1024 | PPT 配图、YouTube 封面、桌面壁纸 |
| 4:3 | 1365×1024 | 传统幻灯片、相册 |
| 9:16 | 1024×1792 | 手机壁纸、Instagram Stories、短视频封面 |
| 3:2 | 1536×1024 | 摄影风格、杂志插图 |
| 2:3 | 1024×1536 | 海报、书籍封面 |
| 预设 | 说明 | 适用场景 |
|---|---|---|
draft | 快速草稿,低分辨率 | 方案探索、快速迭代 |
standard | 标准质量 | 日常使用、网页配图 |
hd | 高清,细节丰富 | 正式出版、印刷 |
ultra | 最高质量,最长等待 | 海报、展览 |
步骤 1 — 理解用户意图
从用户描述中提取以下信息:
| 要素 | 默认值 | 说明 |
|---|---|---|
| 主题 | — | 图片的核心内容 |
| 风格 | 写实 | 摄影、插画、水彩、赛博朋克、扁平化等 |
| 比例 | 1:1 | 根据用途自动推断 |
| 质量 | standard | draft/standard/hd/ultra |
| 服务商 | auto | 自动选择或用户指定 |
步骤 2 — 构建优化 Prompt
将用户描述转换为各服务商优化的 prompt(见 Prompt 工程部分)。
步骤 3 — 调用生成 API
根据选择的服务商调用对应 API。
步骤 4 — 返回结果
输出生成的图片文件路径,并附上使用的 prompt 和参数。
一次生成多张图片供用户选择:
步骤 1 — 确定批量参数
| 参数 | 说明 |
|---|---|
| 数量 | 2-8 张(默认 4) |
| 变体策略 | same-prompt(同 prompt 不同种子)/ varied-prompt(不同风格变体) |
步骤 2 — 生成所有图片
并行调用 API 以加快速度。对于 varied-prompt 模式,为每张图调整 prompt 的风格描述词。
步骤 3 — 展示结果并让用户选择
当用户不确定如何描述想要的图片时:
[主体描述], [环境/背景], [风格], [光线], [构图], [色调], [细节描述]
示例:
A cozy coffee shop interior with warm lighting,
morning sunlight streaming through large windows,
a steaming cup of latte on a wooden table with an open book,
shot on 35mm film, soft warm tones,
shallow depth of field, photorealistic
with text "Hello" 可以在图中渲染文字from openai import OpenAI
client = OpenAI()
response = client.images.generate(
model="dall-e-3",
prompt="一只橘猫坐在窗台上看雨,窗外是东京夜景,赛博朋克风格,霓虹灯倒映在雨滴中",
size="1792x1024",
quality="hd",
n=1
)
image_url = response.data[0].url
revised_prompt = response.data[0].revised_prompt
from google import genai
client = genai.Client()
response = client.models.generate_images(
model='imagen-3.0-generate-002',
prompt='A serene Japanese garden in autumn, koi fish swimming in a crystal clear pond, maple trees with red and orange leaves',
config=genai.types.GenerateImagesConfig(
number_of_images=1,
aspect_ratio='16:9'
)
)
for image in response.generated_images:
image.image.save('garden.png')
<photography>、<anime>、<3d cartoon> 等风格标签import dashscope
response = dashscope.ImageSynthesis.call(
api_key=os.getenv('DASHSCOPE_API_KEY'),
model='wanx-v1',
input={
'prompt': '一座雪山下的小木屋,温暖的灯光从窗户透出,天空中有极光,油画风格',
'negative_prompt': '低质量, 模糊, 变形'
},
parameters={
'size': '1024*1024',
'n': 1,
'style': '<oil painting>'
}
)
image_url = response.output.results[0].url
import replicate
output = replicate.run(
"black-forest-labs/flux-1.1-pro",
input={
"prompt": "An astronaut riding a horse on Mars, cinematic lighting, 8k resolution, hyperdetailed",
"aspect_ratio": "16:9",
"output_format": "png",
"safety_tolerance": 2
}
)
{描述关键词}_{服务商}_{比例}_{日期时间}.png
示例:coffee_shop_dalle3_16x9_20250301_143022.png
每次图片生成后,返回以下信息:
📸 图片已生成
- 文件:./images/coffee_shop_dalle3_16x9.png
- 服务商:DALL-E 3
- 尺寸:1792 × 1024 (16:9)
- 质量:HD
- Prompt:[实际使用的 prompt]
- 耗时:8.3s
- 费用估算:$0.08
批量生成时以网格形式对比展示,标注每张的差异(不同风格、不同构图等)。
症状:调用失败,返回 401/403 错误
解决:检查 .env 或环境变量中的 API Key 是否已正确设置
错误:"画一张好看的图" 正确:"一只白色的猫咪趴在阳光下的窗台上,背景是模糊的绿色植物,温暖的暖色调,胶片摄影风格"
常见错误搭配:
Flux 等模型对中文支持有限,必须先翻译为英文再调用。Agent 应自动完成翻译。
AI 图像生成模型在渲染中文文字时质量不稳定。如果必须在图片中嵌入中文文字,建议:
from PIL import Image, ImageDraw, ImageFont
img = Image.open('base_image.png')
draw = ImageDraw.Draw(img)
font = ImageFont.truetype('msyh.ttc', size=48)
draw.text((100, 50), '标题文字', fill='white', font=font)
img.save('final_image.png')
批量生成时注意费用:
| 服务商 | 单张费用(约) |
|---|---|
| DALL-E 3 HD | $0.08 |
| DALL-E 3 Standard | $0.04 |
| Imagen 3 | $0.03 |
| 通义万象 | ¥0.04 |
| Flux Pro | $0.05 |
生成前提醒用户预估费用。
所有服务商都有内容安全审查。如果生成被拒绝:
用户可在技能同目录下创建 EXTEND.md 添加: