Cómo Usar el SDK de Python de WaveSpeedAI

Cómo Usar el SDK de Python de WaveSpeedAI

El SDK de Python de WaveSpeedAI proporciona una forma sencilla de integrar generación de imágenes y videos de IA en tus aplicaciones de Python. Esta guía cubre todo lo que necesitas para comenzar.

Requisitos Previos

Antes de empezar, asegúrate de tener:

Instalación

Instala el SDK usando pip:

pip install wavespeed

Configuración de Autenticación

El SDK necesita tu clave API para autenticar solicitudes. Tienes dos opciones:

Opción 1: Variable de Entorno (Recomendado)

Establece la variable de entorno WAVESPEED_API_KEY:

export WAVESPEED_API_KEY="tu-clave-api-aqui"

Luego usa el SDK directamente:

import wavespeed

output = wavespeed.run(
    "wavespeed-ai/z-image/turbo",
    {"prompt": "Gato"}
)

Opción 2: Pasar la Clave API Directamente

Importa la clase Client y pasa tu clave API al constructor:

from wavespeed import Client

client = Client(api_key="tu-clave-api-aqui")

Generando tu Primera Imagen

Aquí hay un ejemplo completo que genera una imagen usando Z-Image Turbo:

import wavespeed

output = wavespeed.run(
    "wavespeed-ai/z-image/turbo",
    {"prompt": "Un paisaje montañoso sereno al atardecer con luz dorada"}
)

print(output["outputs"][0])  # URL de la imagen generada

La función run() maneja el flujo de trabajo completo: enviar la solicitud, sondear la finalización y devolver el resultado.

Cargando Archivos

Para flujos de trabajo que requieren imágenes de entrada (como imagen a video), usa la función upload() para obtener una URL a la que WaveSpeedAI pueda acceder:

import wavespeed

# Carga un archivo de imagen local
image_url = wavespeed.upload("./mi-imagen.png")

# Usa la imagen cargada para generación de video
video = wavespeed.run(
    "wavespeed-ai/wan-2.1/image-to-video",
    {
        "image": image_url,
        "prompt": "La cámara se acerca lentamente mientras las nubes se mueven en el fondo"
    }
)

print(video["outputs"][0])  # URL del video generado

Opciones de Configuración

Opciones del Cliente

Configura el comportamiento de reintentos al inicializar el cliente:

from wavespeed import Client

client = Client(
    api_key="tu-clave-api",
    max_retries=3,            # Máximo de reintentos para solicitudes fallidas
    max_connection_retries=5, # Máximo de reintentos para errores de conexión
    retry_interval=1.0        # Segundos entre reintentos
)

Opciones de Ejecución

Configura llamadas individuales de run():

import wavespeed

output = wavespeed.run(
    "wavespeed-ai/z-image/turbo",
    {"prompt": "Un gato naranja lindo usando un pequeño sombrero"},
    timeout=60.0,           # Máximo de segundos a esperar por la finalización
    poll_interval=0.5,      # Segundos entre comprobaciones de estado
    enable_sync_mode=True   # Usa modo sincrónico si está disponible
)

Trabajando con Diferentes Modelos

Texto a Imagen

Genera imágenes a partir de descripciones de texto:

import wavespeed

output = wavespeed.run(
    "wavespeed-ai/z-image/turbo",
    {
        "prompt": "Un paisaje urbano futurista con autos voladores y luces de neón",
        "size": "1024x1024"
    }
)

Imagen a Video

Transforma imágenes estáticas en videos:

import wavespeed

image_url = wavespeed.upload("./paisaje.jpg")

video = wavespeed.run(
    "wavespeed-ai/wan-2.1/image-to-video",
    {
        "image": image_url,
        "prompt": "Un viento suave soplando a través de los árboles"
    }
)

Texto a Video

Genera videos directamente a partir de texto:

import wavespeed

video = wavespeed.run(
    "wavespeed-ai/wan-2.1/t2v-480p",
    {"prompt": "Un golden retriever corriendo a través de un campo de flores"}
)

Soporte Asincrónico

El SDK admite async/await para operaciones no bloqueantes:

import asyncio
import wavespeed

async def generate_image():
    output = await wavespeed.async_run(
        "wavespeed-ai/z-image/turbo",
        {"prompt": "Un astronauta montando un caballo en Marte"}
    )
    return output["outputs"][0]

# Ejecuta la función asincrónica
image_url = asyncio.run(generate_image())
print(image_url)

Manejo de Errores

Para aplicaciones de producción, configura reintentos y maneja errores elegantemente:

from wavespeed import Client

client = Client(
    max_retries=3,
    max_connection_retries=5,
    retry_interval=1.0
)

try:
    output = client.run(
        "wavespeed-ai/z-image/turbo",
        {"prompt": "Un hermoso atardecer sobre el océano"},
        timeout=120.0
    )
    print("Generado:", output["outputs"][0])
except Exception as e:
    print(f"La generación falló: {e}")

Recursos

Comienza a construir con WaveSpeedAI hoy y lleva generación de imágenes y videos potenciada por IA a tus aplicaciones de Python.