图像、视频与音频生成

Nuxt 模板中使用 Replicate 生成图像、视频与音频。

模板包含图像、视频和音频异步生成示例。三种能力采用相同的提供商工厂结构, 内置提供商目前只有 Replicate。

架构

index.ts

每个 index.ts 管理一个单例工厂,默认提供商为 replicate,且只在存在 runtimeConfig.replicateApiToken 时注册 Replicate*Provider。类型文件定义 createTask/queryTask 接口,并统一为 pendingprocessingsucceededfailedcanceled 五种状态。

配置与路由

NUXT_REPLICATE_API_TOKEN=your-replicate-api-token
能力创建查询
图像POST /api/ai/imagePOST /api/ai/image/query
视频POST /api/ai/videoPOST /api/ai/video/query
音频POST /api/ai/audioPOST /api/ai/audio/query

创建路由校验各媒体类型的请求,返回 taskId 与初始状态。查询路由接收非空 taskId,读取 Replicate prediction,统一状态,并从常见输出结构提取 URL 数组。

六个路由都会调用 requireAiAuth 并使用 Zod。除非 NUXT_PUBLIC_AI_PUBLIC_DEMO=true,否则必须登录;生产环境应保持为 false。

内置页面与默认值

页面/组件模式与当前模型轮询
/ai/image / ImageGenerator.vue文生图/图生图;默认 black-forest-labs/flux-2-pro,另有 bytedance/seedream-3;三种比例5 秒,5 分钟超时
/ai/video / VideoGenerator.vue文/图/视频生视频;默认 Kling 2.5 Turbo Pro,另有 Veo 3.1、Sora 215 秒,10 分钟超时
/ai/audio / AudioGenerator.vue文生音频、音频转音频;qwen/qwen3-tts;语言选择5 秒,5 分钟超时

图像提供商把三种尺寸映射为 1:116:99:16,源图通过 input_images 发送。Veo、Sora 与通用视频路径使用不同输入 key。Qwen 适配器 负责 text、language、voice/clone mode 与可选参考音频 URL。

更换模型

修改组件中的模型选项后,按该模型当前的 Replicate schema 检查提供商输入映射。 仅替换 owner/model 字符串通常不够:prompt、比例、参考图、时长、语言和输出结构 都可能不同。

图像/音频调用方若可省略 model,还要同步修改 Replicate 提供商里的 fallback。 视频路由的 Zod schema 强制要求模型。

添加提供商

为对应能力实现接口,扩展 *ProviderType union,在工厂中注册,并扩展创建/查询 路由的 Zod provider enum。保持统一状态与 URL 字段不变,Vue 组件就无需了解 具体提供商。

生产缺口

这些示例没有持久化任务或所有权。查询路由只需要有效的提供商 task ID,不会 验证它是否属于当前用户。Replicate 结果 URL 也不是持久化产品存储方案。

上线前补充按用户配额与成本上限、任务/所有权持久化、查询授权、指数退避轮询、 取消、持久化结果存储、保留/清理、提供商超时、内容审核与可观测性。限流是推荐 附加项,不是模板已带能力。参考图片上传还需完成存储 所述的生产加固。

验证

  • 所有创建接口都会拒绝未登录和畸形请求。
  • 任务能经过统一状态并返回可播放/显示的 URL。
  • 失败与超时会停止轮询并显示有效反馈。
  • 每个可见模型都使用当前正确的 Replicate 输入映射。
  • 加入所有权后,用户无法查询他人的任务。
  • 加入持久化存储后,提供商 URL 失效也不会丢失生成资源。

相关页面

On this page