Volver al blog
Guía·23 de mayo de 2026·6 min de lectura

Migrar de OpenAI a Kunavo en 10 minutos — Python, Node, LangChain, Vercel AI SDK

Cuatro modalidades de integración con OpenAI, el cambio de una línea que necesita cada una para empezar a ejecutarse mediante Kunavo y una prueba de humo que cuesta menos de un centavo.

Si tu aplicación ya se comunica con la API de OpenAI, cambiar a Kunavo tarda unos diez minutos, la mayor parte dedicada al registro. Esta guía recorre las cuatro formas de integración más habituales y el cambio de una línea que necesita cada una.

Paso 0 — Obtén una clave (2 minutos)

  1. Regístrate en kunavo.com/app/signup. Recarga desde $10, paga por uso y tu saldo nunca caduca.
  2. Visita /app/keys y crea una clave. Comienza por sk-kn-.
  3. Establece la variable de entorno: export KUNAVO_API_KEY=sk-kn-....

Paso 1 — Cambia tu SDK (1 minuto)

Python (paquete openai)

migrate.py
# Before — pointing at OpenAI directly
from openai import OpenAI
client = OpenAI(
    api_key=os.environ["OPENAI_API_KEY"],
)

# After — pointing at Kunavo. Everything else stays the same.
from openai import OpenAI
client = OpenAI(
    api_key=os.environ["KUNAVO_API_KEY"],
    base_url="https://api.kunavo.com/v1",
)

Node / TypeScript

migrate.mjs
// Before
import OpenAI from "openai";
const client = new OpenAI({ apiKey: process.env.OPENAI_API_KEY });

// After
import OpenAI from "openai";
const client = new OpenAI({
  apiKey: process.env.KUNAVO_API_KEY,
  baseURL: "https://api.kunavo.com/v1",
});

LangChain

LangChain utiliza internamente el mismo cliente de OpenAI, por lo que el cambio es idéntico. El ID del modelo ahora es un slug de Kunavo; consulta /models para ver la lista actualizada (prueba claude-sonnet-4-6, gpt-5-6-terra, claude-opus-4-7).

langchain_setup.py
from langchain_openai import ChatOpenAI

llm = ChatOpenAI(
    model="claude-sonnet-4-6",          # switched the model
    api_key=os.environ["KUNAVO_API_KEY"],
    base_url="https://api.kunavo.com/v1",
)

Vercel AI SDK

@ai-sdk/openai lee de forma predeterminada su URL base y su clave de API desde las variables de entorno. Configúralas y listo: todas las funciones auxiliares del framework (streamText, generateObject, reintentos y enrutamiento de herramientas) funcionan sin cambios.

vercel_ai.mjs
import { openai } from "@ai-sdk/openai";

// @ai-sdk/openai reads OPENAI_BASE_URL automatically
process.env.OPENAI_BASE_URL = "https://api.kunavo.com/v1";
process.env.OPENAI_API_KEY = process.env.KUNAVO_API_KEY;

const model = openai("claude-sonnet-4-6");
// then use streamText / generateText / streamObject as before

SDK de Anthropic (si ya usas Claude)

Kunavo expone la Messages API nativa de Anthropic en /v1/messages, además del formato de OpenAI, por lo que no tienes que cambiar de SDK.

anthropic_sdk.py
from anthropic import Anthropic

# Before — Anthropic SDK against api.anthropic.com
client = Anthropic(api_key=os.environ["ANTHROPIC_API_KEY"])

# After — same SDK, against Kunavo. Caching, thinking, tools all pass through.
client = Anthropic(
    api_key=os.environ["KUNAVO_API_KEY"],
    base_url="https://api.kunavo.com",   # SDK appends /v1/messages
)

Paso 2 — Haz una prueba rápida del saldo (1 minuto)

Antes de modificar el código de producción, ejecuta una prueba económica contra claude-haiku-4-5. Si devuelve correctamente el resultado, tu clave funciona, la facturación funciona y la capa de enrutamiento está operativa.

smoke_test.py
# Cheap, deterministic-ish smoke test for migration validation.
resp = client.chat.completions.create(
    model="claude-haiku-4-5",            # the cheapest Claude
    messages=[{"role": "user", "content": "ping"}],
    max_tokens=8,
    temperature=0,
)
assert resp.choices[0].message.content, "empty response"
print("ok — Kunavo wallet works, total cost ~$0.0001")

Paso 3 — Traslada el tráfico (5 minutos)

El patrón seguro: dos variables de entorno en tu aplicación — AI_BASE_URL y AI_API_KEY — seleccionadas por entorno. Producción permanece en OpenAI; staging cambia a Kunavo. Después de 24 horas, cambia producción.

Si quieres conocer el impacto en costes antes de hacer el cambio, el panel de Kunavo muestra el coste por llamada frente a la tarifa oficial del upstream; así puedes calcular fácilmente el ahorro mensual proyectado con tus indicaciones reales.

Qué permanece igual

  • Tu SDK y tu base de código.
  • Streaming, llamadas a funciones, uso de herramientas, visión, salidas estructuradas.
  • Los esquemas exactos de solicitudes y respuestas de OpenAI.
  • La estructura de los errores (error.message / error.type / error.code).

Qué cambia para mejor

  • Precios. Los precios y los descuentos disponibles varían según el modelo; consulta las tarifas actuales en /pricing.
  • Modalidad. El mismo SDK permite acceder a Claude (claude-opus-4-7), GPT (gpt-5-6-sol), GPT-Image-2, Nano Banana, Veo 3 y Suno; consulta /models.
  • Facturación. Monedero de Stripe, con precios en USD. Tarjetas en todos los lugares; Apple Pay, Google Pay y Link en todos ellos salvo India; además de métodos locales según el país (Alipay y WeChat Pay en China, Cash App Pay, Klarna y ACH en EE. UU., UPI en India, KakaoPay en Corea…) — la lista completa está en /docs/billing.
  • Conmutación por error. Conmutación en caliente entre varios proveedores, con redireccionamiento automático dentro de la misma solicitud cuando un proveedor ascendente presenta inestabilidad.

Notas sobre los casos problemáticos

  • Endpoints específicos de OpenAI que actualmente no cubrimos: /v1/responses (usa /v1/chat/completions), /v1/assistants (el estado queda de tu lado; somos una pasarela sin estado), /v1/realtime (previsto).
  • Algunas funciones específicas de Claude — cache_control, thinking extendido — funcionan mejor mediante el endpoint nativo /v1/messages, no con el formato de OpenAI.

¿Te has quedado atascado? contact@kunavo.com; una persona responderá en un día laborable. Si estás realizando una migración importante, nos reuniremos contigo en una llamada.