使用 Agnes AI 模型(agnes-image-2.0-flash、agnes-image-2.1-flash、agnes-video-v2.0)生成图像和视频。当用户希望从文本生成图像、编辑图像、从文本或图像生成视频,或提及“生图”、“生视频”、“image generation”、“video generation”、“Agnes AI”、“agnes-ai.com”时触发。
Agnes AI Skill : Generate 图像和视频通过Agnes AI平台API(https://apihub.agnes-ai.com/v1). 是一项面向实际任务的技能,主要用于QQQ快速参考.Model.Type.Model ID. 6Text-to-Image(高密度)。它将相关步骤、工具调用和结果整理方式集中到统一流程中,帮助使用者更快完成目标并减少重复操作。
若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;
涉及批量任务时,还应保存进度,避免中断后重复操作。该技能适合用于一次性任务,也可以接入自动化工作流,与其他技能或上层代理配合完成更完整的业务链路;在组合使用时,应明确每一步的输入输出关系,并避免不同步骤之间出现参数冲突。
通过 Agnes AI 平台 API(https://apihub.agnes-ai.com/v1)生成图像与视频。所有模型均可免费使用。
| 模型 | 类型 | 模型 ID |
|---|---|---|
| 文本生成图像(高密度) | 图像 | agnes-image-2.1-flash |
| 图像编辑 / 图像到图像(Img2Img) | 图像 | agnes-image-2.0-flash |
| 文本生成视频 / 图像生成视频 | 视频 | agnes-video-v2.0 |
config.json 文件,设置 "api_key": "your-api-key"AGNES_API_KEY=sk-....env 文件中添加 AGNES_API_KEY=sk-...https://apihub.agnes-ai.com/v1Authorization: Bearer YOUR_API_KEY仅使用文本生成图像时,请调用 agnes-image-2.1-flash 模型。
接口地址: POST /v1/images/generations
请求体:
{
"model": "agnes-image-2.1-flash",
"prompt": "一只可爱的小猫在绿茵足球场上踢足球,阳光明媚,动感瞬间,高清摄影风格",
"size": "1024x1024",
"seed": null
}
响应体:
{
"created": 1774432125,
"data": [
{ "url": "https://..." }
],
"usage": { "generated_images": 1 }
}
对已有图像进行编辑或执行多图合成时,请使用 agnes-image-2.0-flash 模型。
接口地址: POST /v1/images/generations
请求体:
{
"model": "agnes-image-2.0-flash",
"prompt": "保留小猫踢足球的动作和足球不变,把场景改成傍晚的专业足球场",
"size": "1024x768",
"tags": ["img2img"],
"extra_body": {
"image": ["https://example.com/source-image.jpg"],
"response_format": "url"
}
}
关键参数说明:
tags: ["img2img"] — 图像到图像模式必需extra_body.image — 图像 URL 数组(支持单张或多张参考图像)seed — 设置固定值以获得可复现结果支持的尺寸: 1024x768、1024x1024、768x1024
视频生成使用 agnes-video-v2.0 模型,且为异步操作:需先创建任务,再轮询获取结果。
支持的模式: 文本生成视频(Text-to-Video)、图像生成视频(Image-to-Video)、关键帧动画(Keyframe Animation)
接口地址: POST /v1/videos
请求体:
{
"model": "agnes-video-v2.0",
"prompt": "一只可爱的小猫在傍晚的专业足球场上踢球",
"image": "https://example.com/source-image.jpg",
"num_frames": 121,
"frame_rate": 24,
"height": 768,
"width": 1152
}
硬性约束: num_frames 必须满足 8n+1 形式,最大值为 441(例如:81、121、161、241、441)。
时长计算公式: seconds = num_frames / frame_rate → 121 帧 @ 24fps ≈ 5 秒
响应体(任务已创建):
{
"id": "task_xxx",
"task_id": "task_xxx",
"object": "video",
"model": "agnes-video-v2.0",
"status": "queued",
"progress": 0,
"created_at": 1780457477,
"seconds": "5.0",
"size": "1152x768"
}
重要提示: 请保存
task_id(或id,二者值相同),用于后续轮询结果。
接口地址: GET /v1/videos/{task_id}
状态生命周期:queued → in_progress → completed / failed
响应体(已完成时):
{
"id": "task_xxx",
"task_id": "task_xxx",
"status": "completed",
"progress": 100,
"seconds": "5.0",
"size": "1152x768",
"error": null,
"remixed_from_video_id": "https://storage.../video_xxx.mp4"
}
重要提示: 视频下载地址位于
remixed_from_video_id字段中 —— 而非video_url或url。这是 API 文档中已知的不一致问题。
| 参数 | 类型 | 是否必需 | 说明 |
|---|---|---|---|
model |
字符串 | 是 | 固定值:agnes-video-v2.0 |
prompt |
字符串 | 是 | 视频描述(文本生成视频)或编辑指令(图像生成视频) |
image |
字符串 | 条件必需 | 图像生成视频模式所需的源图像 URL |
num_frames |
整数 | 是 | 必须满足 8n+1,最大值为 441;常用值:81(约 3 秒)、121(约 5 秒)、241(约 10 秒)、441(约 18 秒) |
frame_rate |
整数 | 否 | 取值范围 1–60,默认为 24 |
height |
整数 | 否 | 视频高度,默认为 768 |
width |
整数 | 否 | 视频宽度,默认为 1152 |
import urllib.request, json, time
BASE_URL = "https://apihub.agnes-ai.com/v1"
headers = {
"Authorization": f"Bearer {API_KEY}",
"Content-Type": "application/json",
}
# 步骤 1:创建任务
payload = {
"model": "agnes-video-v2.0",
"prompt": prompt,
"num_frames": 121,
"frame_rate": 24,
"height": 768,
"width": 1152,
}
if image_url:
payload["image"] = image_url
req = urllib.request.Request(
f"{BASE_URL}/videos",
data=json.dumps(payload).encode("utf-8"),
headers=headers,
method="POST"
)
resp = urllib.request.urlopen(req, timeout=120)
task = json.loads(resp.read().decode("utf-8"))
task_id = task["task_id"] # 同样可通过 task["id"] 获取
print(f"任务已创建:{task_id} | 时长:{task['seconds']}s")
# 步骤 2:轮询直至完成(5 秒视频生成耗时约 2–3 分钟)
while True:
time.sleep(30)
poll_req = urllib.request.Request(
f"{BASE_URL}/videos/{task_id}",
headers=headers,
method="GET"
)
result = json.loads(urllib.request.urlopen(poll_req, timeout=60).read().decode("utf-8"))
status = result["status"]
progress = result.get("progress", 0)
print(f" 状态:{status} | 进度:{progress}%")
if status == "completed":
# ⚠️ 下载地址在 remixed_from_video_id 中,而非 video_url 或 url
video_url = result.get("remixed_from_video_id") or result.get("video_url") or result.get("url")
print(f"完成!视频地址:{video_url}")
break
elif status == "failed":
raise Exception(f"视频生成失败:{result.get('error')}")
该 API 完全兼容 OpenAI SDK:
from openai import OpenAI
client = OpenAI(
api_key=API_KEY,
base_url="https://apihub.agnes-ai.com/v1"
)
# 图像生成
img = client.images.generate(
model="agnes-image-2.1-flash",
prompt="A futuristic city",
size="1024x1024",
)
print(img.data[0].url)
# 视频生成
task = client.post(
"/videos",
body={
"model": "agnes-video-v2.0",
"prompt": "A cat playing soccer",
"image": img.data[0].url,
"num_frames": 121,
},
cast_to=object,
)
task_id = task["id"]
# 轮询:client.get(f"/videos/{task_id}", cast_to=object)
| 需求 | 推荐模型 |
|---|---|
| 基于文本生成图像(通用场景) | agnes-image-2.1-flash |
| 基于文本生成图像(简单/快速) | agnes-image-2.1-flash |
| 编辑已有图像 | agnes-image-2.0-flash |
| 多图合成 | agnes-image-2.0-flash |
| 复现结果(指定 seed) | agnes-image-2.0-flash |
| 基于文本生成视频 | agnes-video-v2.0 |
| 基于图像生成视频 | agnes-video-v2.0(需提供 image 参数) |
| 关键帧动画 | agnes-video-v2.0 |
status == "completed",然后返回视频 URL相关专题
热门下载
相关下载
精品课程
共6课时 | 54.7万人学习
共89课时 | 133.7万人学习
共49课时 | 82.4万人学习