Skip to main content

Integrar el modelo de generación de video

Llame a un modelo de generación de video de Token Plan desde una herramienta de agente, envíe una tarea asíncrona y descargue el video cuando finalice la generación.

Modelos compatibles

ModeloEntradaDescripción
happyhorse-1.1-t2vTextoTexto a video
happyhorse-1.1-i2vImagen del primer fotograma, textoImagen a video
happyhorse-1.1-r2vImágenes de referencia, textoReferencia a video
wan3.0-videoTexto, imágenes o materiales de referenciaGeneración de video todo en uno
Para conocer más modelos, consulte modelos compatibles con Token Plan.

Requisitos previos

  • Una suscripción a Token Plan y una clave de API que comience con sk-sp-. Para obtener más información, consulte Descripción general de la integración.
  • Python 3.9 o posterior.
  • Su herramienta de codificación de IA admite Slash Commands. Para conocer las rutas de configuración de otras herramientas, consulte Otras herramientas.

Interfaz

Envíe una tarea: POST https://token-plan.ap-southeast-1.maas.aliyuncs.com/api/v1/services/aigc/video-generation/video-synthesis Consulte una tarea: GET https://token-plan.ap-southeast-1.maas.aliyuncs.com/api/v1/tasks/{task_id} Use Authorization: Bearer $ANTHROPIC_AUTH_TOKEN en el encabezado de la solicitud. Agregue X-DashScope-Async: enable al enviar una tarea.

Paso 1: Crear un Slash Command

Configure la clave API de Token Plan como la variable de entorno $ANTHROPIC_AUTH_TOKEN. Cree .claude/commands/text-to-video.md en la raíz del proyecto y agregue el siguiente contenido:
Call the Token Plan video generation API, submit a text-to-video task, wait for completion, and download the video.

Video description: $ARGUMENTS

## Steps

1. Extract the prompt (video description), model (default: happyhorse-1.1-t2v), resolution (default: 720P), ratio (default: 16:9), and duration (default: 5) from the description. If the description specifies a model, use that model.
2. Install dependencies: pip install requests
3. Use the Bash tool to run the following Python script. The script reads TOKEN_PLAN_API_KEY first, then ANTHROPIC_AUTH_TOKEN. Do not display the key or write it to files or logs.

```python
import json
import os
import sys
import time
from pathlib import Path

import requests

prompt = " ".join(sys.argv[1:])
key = os.environ.get("TOKEN_PLAN_API_KEY") or os.environ.get("ANTHROPIC_AUTH_TOKEN")
if not key:
    raise SystemExit("Token Plan API Key not found.")

base_url = "https://token-plan.ap-southeast-1.maas.aliyuncs.com"
headers = {"Authorization": f"Bearer {key}", "Content-Type": "application/json"}

response = requests.post(
    f"{base_url}/api/v1/services/aigc/video-generation/video-synthesis",
    headers={**headers, "X-DashScope-Async": "enable"},
    json={
        "model": "happyhorse-1.1-t2v",
        "input": {"prompt": prompt},
        "parameters": {"resolution": "720P", "ratio": "16:9", "duration": 5},
    },
    timeout=60,
)
if not response.ok:
    raise SystemExit(f"{response.status_code}: {response.text}")
task_id = response.json()["output"]["task_id"]
print(f"Task submitted: {task_id}")

while True:
    time.sleep(10)
    result = requests.get(f"{base_url}/api/v1/tasks/{task_id}", headers=headers, timeout=60)
    if not result.ok:
        raise SystemExit(f"{result.status_code}: {result.text}")
    data = result.json()
    status = data["output"]["task_status"]
    if status == "SUCCEEDED":
        video_url = data["output"]["video_url"]
        output = f"generated_{time.strftime('%Y%m%d_%H%M%S')}.mp4"
        video = requests.get(video_url, timeout=120)
        video.raise_for_status()
        Path(output).write_bytes(video.content)
        print(output)
        break
    if status in {"FAILED", "CANCELED", "UNKNOWN"}:
        raise SystemExit(json.dumps(data, ensure_ascii=False, indent=2))
    print(f"Task status: {status}")
```

4. Output the path of the downloaded video file.

Paso 2: Generar un video

En Claude Code, ingrese /text-to-video a white cat sitting on a balcony in the sun. Para ajustar la duración, la resolución o la relación de aspecto, especifíquelo en el comando, por ejemplo /text-to-video generate a 10-second, 1080P, 9:16 city night scene.

Parámetros de solicitud

ParámetroObligatorioDescripción
modelSíID del modelo de generación de video.
input.promptSíDescripción del video.
parameters.resolutionNoResolución. Admite 480P, 720P y 1080P. Valor predeterminado: 1080P.
parameters.ratioNoRelación de aspecto. Admite 16:9, 9:16, 1:1 y otros. Valor predeterminado: 16:9.
parameters.durationNoDuración en segundos, de 3 a 15. Valor predeterminado: 5.
Para conocer más parámetros, consulte la API de HappyHorse de texto a video.

Respuesta

  • El envío de una tarea devuelve output.task_id y output.task_status.
  • Consulte periódicamente GET /api/v1/tasks/{task_id}. Cuando el estado sea SUCCEEDED, la respuesta contiene output.video_url.
  • Los estados de la tarea incluyen PENDING, RUNNING, SUCCEEDED, FAILED, CANCELED y UNKNOWN.
  • Las URL de video caducan. Descargue el video a la brevedad.

Límites

  • La generación de video es asíncrona. Envíe la tarea y consulte el resultado. Un task_id es válido durante 24 horas.
  • Los tipos de entrada, resoluciones, duraciones y relaciones de aspecto compatibles difieren según el modelo. Consulte la documentación de cada modelo.
  • La generación de video consume más que la generación de imágenes y la síntesis de voz. El consumo real de Credits se muestra en Usage en la consola.

Otras herramientas

Para consultar los mecanismos de extensión y las rutas de configuración de otras herramientas, vea Descripción general de la integración. Guarde el Slash Command anterior en la ruta correspondiente.