AI 工程GPU 管线Prompt 工程

从新闻标题到封面图:3.2 秒的 AI 配图管线

2026-09-20 · PM Parker · 阅读约 12 分钟

每天 130 条具身智能新闻需要配图。人肉找图有版权风险、效率低、风格不统一。我在一台 RTX 4090 上搭了一条从新闻标题到封面图的自动化管线——从 prompt 到像素,3.2 秒出一张商业级配图,成本 0.024 元。

这篇文章拆解整条管线的设计思路:prompt 怎么写、GPU 怎么调度、图片怎么回到视频里。

架构总览

整条管线分四层,每层只做一件事。

新闻入库 318 信源 · 20min 周期 内容增强 LLM · 评分 · cover_prompts Prompt 工程 Ollama qwen3.6:35b GPU 出图 z-image-turbo · 3.2s 同一基础设施 · RTX 4090 · 24GB VRAM · Docker 容器按需启停 TTS 配音 edge-tts · 实测时长回填 逐帧渲染 node22 + playwright ffmpeg 合成 画面 + 配音 + BGM 发布上线 CF + radarpush 📡 每期 40~85s · 0.024 元/张配图 · 全程无人值守 · 每天 7 期

上层是内容管线:新闻入库时 LLM 自动生成出图 prompt,存入数据库。下层是视频管线:取 prompt、调 GPU 出图、渲染成视频。两层通过 cover_prompts 字段连接——不需要人参与,从新闻入库到视频发布全程自动。

Prompt 工程:九段式结构

prompt 质量决定了出图质量。我的 prompt writer 不是让 LLM 自由发挥——而是给了一个九段式强制结构,每段都有明确的职责。

系统提示词的核心(Ollama qwen3.6:35b 本地推理):

你是 SDXL / Flux / z-image-turbo 的 MASTER prompt engineer。你产出商业级编辑质量的 prompt。每个 prompt 必须包含九个段落:SUBJECT(具体人物/物体/姿态)、SETTING(场景)、COMPOSITION(构图)、LIGHTING(光线)、STYLE(风格)、MOOD(情绪)、COLOR(色板)、DETAIL(细节)、QUALITY(质量标记)。80-180 tokens,纯英文。

九段式的好处:每段有独立职责,LLM 不会在风格描述和主体描述之间跳跃。出图的一致性从 60% 提升到 90% 以上。

举个真实的例子——一篇关于「医疗机器人商业化换挡提速」的新闻,生成的 prompt:

Extreme close-up macro shot of a sleek white medical robot's articulated arm precisely positioning a surgical instrument over a holographic patient interface, cool clinical LED lighting with subtle cyan reflections on polished chrome surfaces, shallow depth of field blurring a state-of-the-art hospital OR background, photorealistic editorial style, confident and precise mood, sterile whites and medical teals with warm accent highlights on instrument tips, intricate mechanical joint details and fiber-optic cable management, shot on Hasselblad with 120mm macro f/2.8, ultra-sharp, 8K resolution

这个 prompt 喂给 z-image-turbo,出来的图可以直接用在新闻视频里当背景——不需要人工二次修图。

GPU 调度:按需启停的容器农场

模型不在宿主机上常驻——每个模型是一个 Docker 容器,由 GPU Scheduler 管理。调度器维护一个模型注册表:

模型容器名VRAM启动时间
z-image-turboz-image19 GB30 s
ernie-imageernie-image10 GB20 s
qwen-imageqwen-image16.5 GB60 s
hunyuan3d-2h3d12 GB240 s

调度器的核心逻辑:任务来了 → 查注册表找到对应容器 → 检查 VRAM 是否够 → 不够就停掉低优先级容器释放显存 → 启动目标容器 → 执行推理 → 空闲超时自动停止。

这套机制的好处:一台 4090 可以跑四个不同架构的模型,不需要同时加载。代价是首次启动要等 30~240 秒——但对每天 12 期的产线来说完全可接受。

Prompt → Pixel 的完整链路

从新闻标题到最终配图,完整流程是:

新闻标题「宇树科技发布新四足机器人 B2-W,负载能力提升 300%」→ LLM 生成 prompt → "A quadruped robot dog with a reinforced payload platform traversing rugged outdoor terrain, industrial design with exposed mechanical joints and sensor arrays, overcast natural lighting emphasizing the robust build quality, editorial photography style, determined and capable mood, muted earth tones with yellow safety accents on joint actuators, intricate hydraulic system details and heat dissipation vents, shot on Sony A1 with 35mm f/1.4, ultra-detailed, commercial grade" → GPU 推理(4 步蒸馏,3.2s)→ 输出 1024×640 PNG → 插入视频时间轴。

关键参数只有四个:模型名、分辨率、步数(蒸馏模型 4 步足够)、种子。不需要复杂的采样器配置或 LoRA 叠加——蒸馏模型的价值就是用最少的步数出可用的图。

踩坑与教训

整条管线搭下来,真正花时间的不是核心推理——是把所有环节串起来之后的边界处理。

比如:推理代理的尾斜杠。转发 GPU 推理请求的 HTTP 代理,POST 路径写的是 /v1/generate/image——如果不带尾斜杠,nginx 可能 301 重定向到带斜杠的路径,POST 数据丢失,返回空结果。排查了半小时才发现是 nginx 自动补斜杠导致的 POST→GET 转换。

比如:负向提示词不生效。z-image-turbo 的 diffusers 管道里,negative_prompt 参数需要通过 pipe() 的 guidance_scale 配合才生效——单独传 negative_prompt 而不调 guidance_scale,负向词会被忽略。这个 bug 导致前几批出图里全是文字水印。

比如:容器空闲回收的时机。GPU Scheduler 会在容器空闲 30 分钟后自动停止以释放显存。但如果在容器停止的瞬间有新请求进来,调度器会重新启动容器——冷启动 30 秒。高峰期这个"停止→启动"循环会导致延迟抖动。解法:加了一个请求计数器,10 分钟内有请求就延迟回收。

最终效果

一天 130 条新闻 → 筛选出 15~20 条有价值的事件 → 每条生成一张封面图 → 总成本不到 0.5 元 → 全程无人值守。

配图的质量足够当新闻视频的封面——不是"凑合能看"的水平,是真的可以直接发布的那种。风格统一(青绿色调 + 电影感构图)、无版权风险、3.2 秒出图。

如果后续要提升质量,方向是:换更大的模型(FLUX.1-dev 替代 z-image-turbo)、增加 ControlNet 控制构图、用 IP-Adapter 保持跨图风格一致性。但目前的质量已经够用——够用就先跑,别在不需要 95 分的地方追求 100 分。


← 返回列表 · 相关: 具身智能视频产线:12 期/日全自动化