欢迎光临
我们一直在努力

Agnes AI API 视频排队20分钟变80秒秘籍

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */
#content_views .toc,
/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */
#content_views.markdown_views > p:empty:has(+ .toc),
#content_views.markdown_views > .toc + p:empty,
/* 富文本旧版目录标记 */
#content_views.htmledit_views #main-toc,
#content_views.htmledit_views #hr-toc,
#content_views.htmledit_views p[id*=\”-toc\”] {
display: none !important;
}
/* 目录去掉后,紧跟的首个标题不再多出一块上边距 */
#content_views.markdown_views > .toc + h1,
#content_views.markdown_views > .toc + h2,
#content_views.markdown_views > .toc + h3,
#content_views.markdown_views > .toc + h4,
#content_views.markdown_views > .toc + p:empty + h1,
#content_views.markdown_views > .toc + p:empty + h2,
#content_views.markdown_views > .toc + p:empty + h3,
#content_views.markdown_views > .toc + p:empty + h4 {
margin-top: 0 !important;
}

Agnes AI API 踩坑续篇:视频排队 20 分钟 vs 80 秒,顺手封装了文本大模型

本文是 《Agnes AI 全模态 API 免费实测报告》 的续篇,记录视频 API 调试中踩到的两个关键坑,以及如何把 agnes-2.0-flash 文本模型封装进技能并开源到 GitHub。


一、问题:视频生成永久排队

上篇发完后,我继续深度测试视频生成 API。用官方文档示例提交任务,然后用 task_id 轮询:

# ❌ 官方文档示例方式(会导致异常排队)
GET https://apihub.agnes–ai.com/v1/videos/{task_id}

结果视频状态一直是 queued,硬等了 20 多分钟还没开始生成,也没有任何错误提示。


二、根因:官方推荐用 video_id 查询,别用 task_id

在社区里翻到官方一句话提示:

「记住让你的 skills 用 video_id 查询,不要用 task_id 查询,以避免过长的视频排队!如果视频排队超过 5 分钟,大概率是接口搞错了」

原来问题在这里!

提交视频任务后,响应里会返回一个 video_id 字段(和 task_id 不同),必须用 video_id 去查询,排队时间才会正常。

# ✅ 正确方式(官方推荐)
GET https://apihub.agnes–ai.com/agnesapi?video_id=<VIDEO_ID>

实测对比

查询方式排队+生成总耗时结果
task_id + /v1/videos/{task_id} 20+ 分钟 异常排队
video_id + /agnesapi?video_id=… ~80 秒 正常

换成正确方式后,同样参数的视频 80 秒就生成完成,差距近 20 倍。

修正后的完整代码

import requests, time, os
from openai import OpenAI

API_KEY = "sk-你的Key" # 从 https://platform.agnes-ai.com 获取
BASE = "https://apihub.agnes-ai.com/v1"
VIDEO_API = "https://apihub.agnes-ai.com/agnesapi"

headers = {"Authorization": f"Bearer {API_KEY}"}

# 1. 提交视频生成任务
resp = requests.post(f"{BASE}/videos", json={
"model": "agnes-video-v2.0",
"prompt": "A cute Shiba Inu walking on the beach, cinematic shot",
"width": 1152,
"height": 768,
"num_frames": 121,
"frame_rate": 24,
}, headers={**headers, "Content-Type": "application/json"})

data = resp.json()
video_id = data.get("video_id", "") # ⭐ 关键:保存这个!
task_id = data.get("task_id", "")
print(f"提交成功 | task_id={task_id} | video_id={video_id}")

# 2. 用 video_id 轮询(不要用 task_id!)
start = time.time()
while True:
r = requests.get(f"{VIDEO_API}?video_id={video_id}", headers=headers)
result = r.json()
status = result.get("status", "unknown")
progress = result.get("progress", 0)
elapsed = int(time.time() – start)
print(f"[{elapsed}s] 状态: {status} 进度: {progress}%")

if status == "completed":
video_url = result.get("video_url") or result.get("remixed_from_video_id")
print(f"✅ 生成完成!视频地址: {video_url}")
break
elif status == "failed":
print(f"❌ 生成失败: {result.get('error')}")
break

time.sleep(10)


三、第二个坑:num_frames 参数

num_frames(视频总帧数)有两个隐藏约束:

  • 必须 ≥ 81(最小值,我一开始填了 41 直接永久排队)
  • 必须满足 8n+1 格式
  • 合法值只有这 10 个:

    VALID_FRAMES = {81, 121, 161, 201, 241, 281, 321, 361, 401, 441}

    num_framesframe_rate=24视频时长
    81 ~3.4 秒 最短
    121 ~5.0 秒 推荐
    241 ~10.0 秒 适中
    441 ~18.4 秒 最长

    建议在代码里加一层校验,避免提交非法值:

    VALID_FRAMES = {81, 121, 161, 201, 241, 281, 321, 361, 401, 441}
    if args.frames not in VALID_FRAMES:
    print(f"错误: num_frames={args.frames} 非法!仅支持: {sorted(VALID_FRAMES)}")
    sys.exit(1)


    四、顺手把文本大模型也封装了

    视频 API 调通之后,发现 Agnes 还有文本对话模型 agnes-2.0-flash,支持流式输出和 Thinking 模式,于是也一并封装进来了。

    调用示例

    from openai import OpenAI

    client = OpenAI(
    api_key="sk-你的Key",
    base_url="https://apihub.agnes-ai.com/v1"
    )

    # 普通对话
    response = client.chat.completions.create(
    model="agnes-2.0-flash",
    messages=[{"role": "user", "content": "用 Python 写一个贪吃蛇游戏"}],
    )
    print(response.choices[0].message.content)

    # 流式输出(逐字显示)
    for chunk in client.chat.completions.create(
    model="agnes-2.0-flash",
    messages=[{"role": "user", "content": "介绍一下自己"}],
    stream=True
    ):
    if chunk.choices and chunk.choices[0].delta.content:
    print(chunk.choices[0].delta.content, end="")


    五、做成SKILL技能,开源到 GitHub

    为了方便非技术用户使用,我把整套 API 封装成了一个 ** 技能**,已开源到 GitHub。

    GitHub 仓库

    👉 https://github.com/cnskycn/agnes-api-skill

    技能功能

    agnes_api.py
    ├── setup # 引导式配置 API Key(首次使用必选,非技术用户友好)
    ├── image # 文生图 / 图生图
    ├── video # 文生视频 / 图生视频 / 关键帧动画(已修复排队问题)
    └── chat # 文本对话(agnes-2.0-flash,新增)

    非技术用户也能用:setup 引导配置

    考虑到很多用户不知道如何获取和配置 API Key,新增了 setup 子命令:

    python agnes_api.py setup

    运行后会:

  • 显示注册步骤(附截图说明)
  • 引导粘贴 API Key
  • 自动保存到 ~/.agnes/config.json
  • 测试 Key 是否有效
  • 以后运行任何命令都不再需要输入 Key。

    快速开始

    # 1. 配置 API Key(只需一次)
    python agnes_api.py setup

    # 2. 生成图片
    python agnes_api.py image –prompt "一只柴犬在樱花树下" –size 1024×1024 –save result.jpg

    # 3. 生成视频
    python agnes_api.py video –prompt "A cat walking on the beach" –frames 121 –save result.mp4

    # 4. 文本对话
    python agnes_api.py chat –prompt "你好,介绍一下你自己" –stream


    六、两篇文章覆盖内容对照

    主题上篇本篇
    注册与基础配置 ✅ —
    文生图测试 ✅ —
    文生视频基础 ✅ —
    视频音频能力 ✅ —
    video_id vs task_id 排队问题 — ✅ 核心
    num_frames 合法值 — ✅ 新增
    文本大模型封装 — ✅ 新增
    setup 引导配置 — ✅ 新增
    GitHub 开源 — ✅ 新增

    七、相关链接

    • 上篇 CSDN:Agnes AI 全模态 API 免费实测报告(文生图 + 文生视频)
    • Agnes AI 官网:https://agnes-ai.com
    • API 文档:https://agnes-ai.com/doc
    • 平台注册:https://platform.agnes-ai.com
    • 技能 GitHub 仓库:https://github.com/cnskycn/agnes-api-skill
    • WorkBuddy:https://www.workbuddy.ai

    如果本文对你有帮助,欢迎点赞收藏 ⭐

    赞(0)
    未经允许不得转载:171主机测评 » Agnes AI API 视频排队20分钟变80秒秘籍
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址