2026 年搭一套能出文本、图片、视频的 AI 工作流,不再必须给 OpenAI 交月费。三件事凑到一起改变了成本结构:一是出现了 OpenAI 兼容、带免费额度的多模态 API(Agnes 一个 key 能调文本、图片、视频);二是国产模型 API 矩阵成熟(DeepSeek、通义 Qwen、即梦、豆包、Kling 覆盖文本到音视频);三是开源视频模型够用(Wan2.1、Hunyuan、CogVideo 本地能跑)。三条腿走路,任何一条断档另两条兜得住--这才是「零成本」能落地的根,而不是赌某家永远免费。
这篇 SOP 给一条可复制的流程:盘点需求 -> 统一接入 -> 搭最小管线 -> 本地兜底 -> 成本控制,五步。代码基于 Agnes 官方文档、OpenMontage 的 PROVIDERS.md(国产/本地模型清单)及各国产模型官方文档整理,截至 2026-08-10;API 形态以官方为准,免费额度随时变动以平台公告为准。与同批的 Agnes 5 模型横评(选哪个 Agnes 模型)、OpenMontage 国内替代方案(本 SOP 的模型映射可直接复用其 PROVIDERS 清单)、Hy3 免费窗口热点(文本模型又一免费选项,8/31 前免费)互补,建议对照读。
一、为什么 2026 能零成本:三件套各管一段
「零成本」不是白嫖某一个 API,而是三层叠加把单点依赖压到零:
- 免费 API 层:Agnes 这类 OpenAI 兼容多模态网关,一个 key 覆盖文本/图片/视频,带 RPM 与配额。优点是接入成本极低(换 base_url 即可),缺点是额度有限、随时可能调整。详见本批 Agnes 横评。
- 国产模型层:DeepSeek(文本/编码)、通义 Qwen(DashScope,图片+TTS+ASR)、即梦 Jimeng(字节,视频)、豆包 Doubao Speech(TTS)、Kling(快手,视频)。按量计费但单价低,作为免费额度耗尽后的第一替代;Hy3 在 8/31 前有免费窗口,可临时当文本主力。
- 本地模型层:Wan2.1(阿里,视频)、Hunyuan(腾讯,视频)、CogVideo(智谱,视频)、WhisperX(字幕)。零 API 成本,吃显存,是配额彻底用完时的兜底。
三层不是「选一层」,是「免费层打满 -> 切国产按量 -> 切本地」的降级链。任何一层单独都不够稳,叠起来才稳。
二、需求 -> 模型映射表
动手前先把要做的模态列清,按「免费优先 -> 国产次之 -> 本地兜底」排好。这张表与 OpenMontage 的 PROVIDERS.md 清单对齐,可直接复用:
| 模态 | 首选免费 | 国产替代(按量) | 本地兜底(零成本) |
|---|---|---|---|
| 文本/编码 | Agnes agnes-2.5-flash | DeepSeek / Qwen-Max / Hy3(免费窗口内) | Qwen 本地 / llama.cpp |
| 文生图 | Agnes agnes-image-2.1-flash | Qwen-Image (DashScope) / 即梦 | SD / Flux 本地 |
| 图/文生视频 | Agnes agnes-video-v2.0 | 即梦 Jimeng / Kling | Wan2.1 / Hunyuan / CogVideo |
| TTS 语音 | Agnes(若提供) | 豆包 Doubao Speech / Qwen TTS | edge-tts / XTTS 本地 |
| 字幕 | - | - | WhisperX 本地 |
用法:每一行挑一个当主力,另两个当 fallback,在编排脚本里按配额状态自动切。
三、SOP 五步流程
Step 1 盘点需求与模型组合:列出你要的模态,照第二节映射表给每个模态定「主力 + 两个 fallback」。要点是别只定主力--免费额度一定会耗尽,没有 fallback 的管线第一次撞配额就停摆。
Step 2 统一接入:OpenAI 兼容是钥匙。Agnes 一个 key + 一个 base_url 同时搞定文本和图片(直接用 openai SDK),省掉三套 SDK 的心智负担。国产非兼容的(如 DashScope)走原生 SDK,但要在底外包一层统一接口(同一个 generate_text(prompt) / generate_image(prompt) 签名),后面换模型只改实现。
Step 3 搭最小管线:先跑通「文本 -> 图片 -> 视频」一条链,别一上来堆五个模态。能跑通这一条,加 TTS、加字幕都是接线,不是重写。第四节给可跑代码。
Step 4 本地兜底:在管线的视频环节加一个开关 VIDEO_GEN_LOCAL_MODEL=wan2.1-14b,配额耗尽自动走本地出片。第五节给配置。
Step 5 成本控制:缓存重复请求的结果、错峰跑视频、多 key 轮换(注意别撞 ToS)、视频任务异步串行不要并发刷。监控每个 endpoint 的用量,超免费档立刻切降级链下一层。
四、最小可跑管线:文本 -> 图片 -> 视频
下面这段 Python 跑通三步:agnes-2.5-flash 生成分镜 -> agnes-image-2.1-flash 出图 -> agnes-video-v2.0 图生视频(异步轮询)。文本和图片走 openai SDK(兼容),视频是任务型异步端点用 requests 直连。
import os, time, requests
from openai import OpenAI
AGNES_KEY = os.getenv("AGNES_API_KEY", "ag-xxxxxxxx") # 脱敏,勿硬编码
BASE = "https://apihub.agnes-ai.com/v1"
# 文本 + 图片走 OpenAI 兼容 SDK,换 base_url 即可
client = OpenAI(api_key=AGNES_KEY, base_url=BASE)
# Step 1 文本:生成 15 秒视频分镜(走免费档 20 RPM)
script = client.chat.completions.create(
model="agnes-2.5-flash",
messages=[{"role": "user",
"content": "写一条 15 秒产品视频分镜,输出三句画面描述,每句一行。"}],
)
shots = script.choices[0].message.content
first_shot = shots.splitlines()[0]
print("分镜:", shots)
# Step 2 图片:文生图(走图片 RPM 配额)
img = client.images.generate(
model="agnes-image-2.1-flash",
prompt=first_shot,
n=1,
size="1280x720",
)
image_url = img.data[0].url
print("首图:", image_url)
# Step 3 视频:图生视频,异步任务(走视频配额)
# 视频是任务型端点,不在 openai SDK 内,用 requests 直连 Agnes
headers = {"Authorization": f"Bearer {AGNES_KEY}"}
create = requests.post(f"{BASE}/videos/generations", headers=headers, json={
"model": "agnes-video-v2.0",
"image": image_url,
"prompt": shots,
}, timeout=30).json()
task_id = create["id"]
# 关键:视频是异步任务,必须轮询,不轮询拿不到结果
for _ in range(60): # 最多等 10 分钟
st = requests.get(f"{BASE}/videos/generations/{task_id}",
headers=headers, timeout=30).json()
if st["status"] == "succeeded":
print("视频地址:", st["video"]["url"])
break
if st["status"] == "failed":
raise RuntimeError("视频生成失败:" + st.get("error", "unknown"))
time.sleep(10)每步免费额度:文本 20 RPM、图片按图片 RPM 配额、视频按任务配额,三条都以平台公告为准。配额耗尽时把 Step 3 换成下一节的本地兜底即可,前两步不动。
五、本地模型兜底配置
视频配额最先耗尽,本地兜底主要兜视频。设环境变量 VIDEO_GEN_LOCAL_MODEL,配额不足时脚本自动切本地 Wan2.1 出片,零 API 成本:
# 本地兜底:Wan2.1 离线出视频,零 API 成本
# 环境:pip install diffusers torch accelerate
# 选型:显存 24GB+ 用 14b,8GB 左右用 1.3b,量力而行
import os, torch
from diffusers import WanPipeline
model_id = os.getenv("VIDEO_GEN_LOCAL_MODEL", "Wan-AI/Wan2.1-T2V-14B-Diffusers")
pipe = WanPipeline.from_pretrained(model_id, torch_dtype=torch.bfloat16).to("cuda")
video = pipe(
prompt=first_shot, # 复用上面的分镜描述
num_frames=49, height=720, width=1280,
num_inference_steps=30,
).frames[0]
# 导出 mp4 用 imageio / opencv,此处省略选型纪律:显存够(24GB+)选 14b 出片质量好;不够就选 1.3b,质量降一档但能跑。Hunyuan、CogVideo 是同类替代,接口类似。本地兜底不参与 RPM 限制,慢但稳,是免费层断档后的最后一道防线。
六、五个踩坑
坑 1:把免费 API 当生产 免费额度一超就停,没有 fallback 当场断线。修法:每个模态都按第二节备好国产/本地 fallback,编排脚本检测到 429 或配额错误自动降级,别让管线单点依赖免费层。
坑 2:视频不轮询,拿不到结果
视频是异步任务,创建接口只返回 task_id,状态和结果要去查询接口取。不轮询直接用创建返回值,拿到的是个 id 不是视频。修法:像第四节那样循环 GET /videos/generations/{id},设最大等待轮数和失败分支。
坑 3:假设国产模型都能 drop-in
国产模型 API 形态不统一。DashScope 不是 OpenAI 兼容,参数名、返回结构都不同;即梦、Kling 各有各的签名。修法:非兼容的走原生 SDK,但外包一层统一接口(generate_image(prompt)->url),换模型只改实现,管线代码不动。
坑 4:本地模型硬上 14b 爆显存
14b 要 24GB+ 显存,硬上会 OOM 或极慢。修法:先查自己显卡显存,8-12GB 选 1.3b,16GB 选 5b,24GB+ 再上 14b。用 nvidia-smi 看实际占用,留余量给系统。
坑 5:多 key 轮换撞 ToS 为绕免费额度开多号并发刷视频配额,可能违反平台服务条款被封。修法:单号串行跑视频(视频本来就异步慢,并发没意义),多 key 只用于跨项目隔离用量,别在一个号上并发刷。
七、常见问题
Q1:Agnes 的免费额度到底够不够用? 够做原型和小批量生产,不够规模化。文本 20 RPM 能撑个人级日常调用,图片按 RPM 配额够出几十张,视频配额最少、最易耗尽。判断标准:跑通管线后看一周实际用量,超免费档 70% 就该把视频环节切本地或国产按量。额度随时变动,以平台为准。
Q2:不用 Agnes 能搭这套吗? 能。Agnes 的价值是一个 key 全模态 + OpenAI 兼容省接入成本。你也可以全用国产:DeepSeek 文本 + Qwen-Image 图片 + 即梦视频,按量计费但单价低。或全本地:Qwen 本地 + Flux + Wan2.1,零 API 成本但吃显卡。Agnes 只是「免费优先」层最省事的选择,不是必需。
Q3:本地模型出视频要多久? 14b 在 24GB 显卡上出 5 秒 720p 视频大约几分钟到十几分钟(取决于步数),比 API 慢但零成本。1.3b 快很多但质量低。如果时间敏感,优先用 API(免费或按量),本地只作兜底。
Q4:n8n 和 Python 脚本选哪个编排? 原型和单条管线用 Python 脚本最直接(本文代码即如此)。需要可视化、定时触发、多分支和人在回路审批,用 n8n。两者不冲突:n8n 可调用你封装好的 Python 接口,复杂逻辑在 Python 里,调度在 n8n 里。
Q5:这套和 OpenMontage 是什么关系? 互补。OpenMontage 是一套开源编排框架,PROVIDERS.md 里整理了国产/本地模型清单(本 SOP 第二节映射表即对齐它)。本 SOP 的流程可以手工用 Python 跑,也可以套进 OpenMontage 用它现成的 provider 适配层,省掉自己写统一接口的活。详见本批 OpenMontage 国内替代方案。
可复用编排模板
# 多模态工作流编排模板(伪代码)
PIPELINE:
1. text_gen(prompt) -> script # Agnes agnes-2.5-flash,免费优先
2. image_gen(script.first_shot) -> img # Agnes agnes-image-2.1-flash
3. video_gen(img, script) -> video # Agnes agnes-video-v2.0,配额耗尽切本地 Wan2.1
4. (可选) tts(script) -> audio # 豆包 Doubao Speech / Qwen TTS
5. (可选) asr(audio) -> subtitle # WhisperX 本地
FALLBACK_RULE:
每步失败或 429 -> 按映射表降级:免费 -> 国产按量 -> 本地
视频步优先切本地(成本敏感),文本/图片优先切国产按量(质量敏感)
COST_RULE:
缓存相同 prompt 的结果;视频异步串行不并发;监控各 endpoint 用量参考来源
- Agnes AI 官方文档(OpenAI 兼容接口、agnes-2.5-flash / image-2.1-flash / video-v2.0 模型与额度):https://agnes-ai.cn
- GitHub AgnesAI-Labs/AgnesAI-Models(模型清单与示例):https://github.com/AgnesAI-Labs/AgnesAI-Models
- OpenMontage docs / PROVIDERS.md(国产/本地模型清单):https://github.com/OpenMontage/OpenMontage
- 阿里云 DashScope 官方文档(通义 Qwen 图片/TTS/ASR):https://help.aliyun.com/zh/dashscope
- 火山引擎即梦 / 豆包 Speech 文档;快手 Kling 文档
- 本站《Agnes 免费 API 5 模型横评》:https://aiwebcool.com/zh/agnes-free-multimodal-api-review
- 本站《OpenMontage 国内替代方案》:https://aiwebcool.com/zh/openmontage-resource
- 本站《Hy3 免费窗口热点》:https://aiwebcool.com/zh/tencent-hy3-free-workbuddy-hotspot
- 本站《AI Agent 工具调用 SOP》:https://aiwebcool.com/zh/ai-agent-tool-calling-sop