🧠 图解记忆: 生图 Agent 的职责是理解意图、增强 Prompt、选择与调用模型并验收结果;真正从噪声去噪成图的是扩散模型。
💡 答案要点
主流生图模型对比:
| 模型 | 原理 | 优势 | 适用场景 |
|---|---|---|---|
| Stable Diffusion | 扩散模型(DDPM)+ 潜空间压缩 | 开源可本地部署,可微调 | 定制化生图,私有化部署 |
| DALL-E 3 | Transformer + CLIP引导 | 文字理解强,API简单 | 快速集成,文字渲染 |
| Midjourney | 闭源扩散模型 | 美学质量高 | 艺术创作 |
| Flux | Flow Matching(新架构) | 速度快,质量好 | 实时生图 |
| ComfyUI + SD | 工作流引擎 + SD | 高度可定制 | Agent集成,流程自动化 |
Stable Diffusion 核心原理(面试重点):
文本Prompt → CLIP文本编码器 → 条件向量
↓
随机噪声 → [去噪U-Net(循环T步)] → 潜空间图像
↑
条件向量注入(Cross-Attention)
↓
潜空间图像 → VAE解码器 → 最终图像(512x512 or 1024x1024)关键参数:
- CFG Scale(Classifier-Free Guidance):控制文本对图像的影响强度,7-12是常用范围
- Steps:去噪步数,20-50步,越多越精细但越慢
- Sampler:去噪算法,DDIM快、DPM++质量好
- Seed:随机种子,固定seed可复现
Agent 集成生图的架构:
python
class ImageGenerationAgent:
def __init__(self):
self.sd_client = StableDiffusionClient(
model="sd-xl-1.0",
api_url="http://localhost:7860" # 本地 ComfyUI
)
async def generate(self, description: str) -> str:
# 1. 用 LLM 优化 Prompt(自然语言→专业生图Prompt)
optimized_prompt = await self._enhance_prompt(description)
# 2. 调用生图模型
image = await self.sd_client.generate(
prompt=optimized_prompt,
negative_prompt="blurry, low quality, distorted",
cfg_scale=7.5,
steps=30,
width=1024, height=1024
)
return image
async def _enhance_prompt(self, description: str) -> str:
"""LLM 将自然语言转为生图专业提示词"""
return await llm.complete(
f"将以下描述转为 Stable Diffusion 提示词(英文,包含风格、光线、质量词):{description}"
)面试话术:
"我们生图子 Agent 用的是 Stable Diffusion XL,通过本地 ComfyUI 部署。核心原理是扩散模型:从随机噪声出发,在文本 embedding 的引导下(Cross-Attention),经过30步去噪还原出图像。关键是在 Agent 链路中加了一步 Prompt Enhancement,用 LLM 把用户的自然语言描述转为专业的 SD Prompt,图像质量提升明显。"
