首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >AI 制作生成的专业工程化实践:统一生成流水线与代码实现

AI 制作生成的专业工程化实践:统一生成流水线与代码实现

原创
作者头像
资源大佬 jzit-top
发布于 2026-09-30 17:56:42
发布于 2026-09-30 17:56:42
290
举报

AI 制作生成不是“调一次模型 API”,而是一条生产流水线:任务接入、模型调度、内容生成、后处理、审核、发布、监控。专业视角下,核心是可控、可复现、可观测、可合规。下面用 FastAPI + 异步队列实现一个最小统一生成系统。

一、架构分层

  • 接入层:接收文本、图像、音频、视频生成任务。
  • 编排层:任务队列、重试、超时、幂等、限流。
  • 生成层:LLM、图像模型、TTS、视频模型。
  • 后处理层:ffmpeg 合成、字幕、转码。
  • 审核层:敏感词、版权、肖像权、AI 标注。
  • 运维层:日志、指标、成本、告警。

二、任务模型与队列

代码语言:javascript
复制
import os, asyncio, uuid
from enum import Enum
from typing import Any, Dict
from pydantic import BaseModel, Field
from openai import AsyncOpenAI

class Modality(str, Enum):
    text = "text"
    image = "image"
    video = "video"
    audio = "audio"

class GenTask(BaseModel):
    task_id: str = Field(default_factory=lambda: uuid.uuid4().hex)
    modality: Modality
    prompt: str
    params: Dict[str, Any] = {}
    status: str = "pending"
    retries: int = 0

queue: asyncio.Queue[GenTask] = asyncio.Queue()

async def submit(task: GenTask):
    await queue.put(task)
    return task.task_id

async def worker():
    while True:
        task = await queue.get()
        try:
            task.status = "running"
            result = await dispatch(task)
            result = audit(task, result)
            task.status = "succeeded"
            print(task.task_id, result)
        except Exception as e:
            task.retries += 1
            if task.retries < 3:
                await queue.put(task)
            else:
                task.status = "failed"
                print("failed", task.task_id, e)
        finally:
            queue.task_done()

三、模型调度与生成

代码语言:javascript
复制
client = AsyncOpenAI(
    api_key=os.getenv("OPENAI_API_KEY"),
    base_url=os.getenv("OPENAI_BASE_URL"),
)

async def gen_text(task: GenTask) -> dict:
    resp = await client.chat.completions.create(
        model=os.getenv("OPENAI_MODEL", "gpt-4o-mini"),
        messages=[{"role": "user", "content": task.prompt}],
        temperature=task.params.get("temperature", 0.7),
    )
    return {"text": resp.choices[0].message.content}

async def gen_image(task: GenTask) -> dict:
    # 实际调用即梦、通义万相、Stable Diffusion 等官方 API
    return {"image_url": "outputs/image.png"}

async def gen_video(task: GenTask) -> dict:
    # 实际调用可灵、即梦、Runway 等官方 API
    return {"video_path": "outputs/video.mp4"}

async def dispatch(task: GenTask) -> dict:
    if task.modality == Modality.text:
        return await gen_text(task)
    if task.modality == Modality.image:
        return await gen_image(task)
    if task.modality == Modality.video:
        return await gen_video(task)
    raise ValueError("不支持的模态")

四、审核与后处理

代码语言:javascript
复制
BAD_WORDS = {"违法", "暴力", "色情"}  # 示例,生产环境应接入审核服务

def audit(task: GenTask, result: dict) -> dict:
    text = str(result)
    if any(w in text for w in BAD_WORDS):
        raise ValueError("审核未通过")
    return result

async def compose_video(image_pattern: str, audio: str, out: str):
    cmd = [
        "ffmpeg", "-y",
        "-framerate", "12",
        "-i", image_pattern,
        "-i", audio,
        "-c:v", "libx264",
        "-pix_fmt", "yuv420p",
        "-shortest", out,
    ]
    proc = await asyncio.create_subprocess_exec(*cmd)
    await proc.wait()

五、FastAPI 接入

代码语言:javascript
复制
from fastapi import FastAPI, HTTPException
app = FastAPI(title="AI Generation Pipeline")

@app.on_event("startup")
async def startup():
    for _ in range(3):
        asyncio.create_task(worker())

@app.post("/tasks")
async def create_task(task: GenTask):
    if len(task.prompt) > 2000:
        raise HTTPException(400, "提示词过长")
    task_id = await submit(task)
    return {"task_id": task_id, "status": "pending"}

六、工程化要点

  1. 幂等:用业务唯一键防止重复生成、重复扣费。
  2. 重试:区分可重试错误和不可重试错误,设置上限。
  3. 限流:按用户、IP、任务类型限流,保护模型配额。
  4. 缓存:相同提示词和参数命中缓存,降低成本。
  5. 可观测:记录 trace_id、模型、耗时、token、成本、审核结果。
  6. 安全:API Key 只放服务端;输入输出审核;日志脱敏。
  7. 合规:AI 生成内容按平台要求标注;不生成违法、暴力、色情、歧视内容;不侵犯版权和肖像权。

七、总结

AI 制作生成的专业流程是:统一任务模型 → 异步队列 → 模型调度 → 审核 → 后处理 → 发布。代码可以简单,但幂等、重试、限流、日志、审核和合规不能省。先跑通文本和图像的最小闭环,再扩展视频、音频和多模型路由。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

目录
  • 一、架构分层
  • 二、任务模型与队列
  • 三、模型调度与生成
  • 四、审核与后处理
  • 五、FastAPI 接入
  • 六、工程化要点
  • 七、总结
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档