Back to blog
    Funciones de AI en Apps v0 a Costo Fijo — Sin Precios por Token
    v0vercelai-featurescost-reductionfine-tuningsegment:vibecoder

    Funciones de AI en Apps v0 a Costo Fijo — Sin Precios por Token

    v0 de Vercel facilita las funciones de AI con el SDK de AI de Vercel. Así es como reemplazar los costos de API en la nube por token con un modelo local ajustado a costo mensual fijo.

    EErtas Team·

    v0 de Vercel genera componentes React de calidad de producción a partir de lenguaje natural. Cuando agregas funciones de AI a esos componentes, el camino natural es el SDK de AI de Vercel — que, por defecto, enruta a OpenAI o Anthropic. Por token. Cada solicitud.

    Para prototipos y apps en etapa temprana, esto está bien. Para apps con usuarios reales, la curva de costos se convierte en un problema rápidamente, porque el SDK de AI de Vercel hace que las respuestas de AI en streaming sean fáciles de agregar en todas partes.

    Cómo las Apps v0 Típicamente Usan AI

    El SDK de AI de Vercel es el estándar para funciones de AI en apps generadas por v0. El patrón es limpio:

    // app/api/chat/route.ts — typical v0 AI feature
    import { openai } from "@ai-sdk/openai";
    import { streamText } from "ai";
    
    export async function POST(req: Request) {
      const { messages } = await req.json();
    
      const result = streamText({
        model: openai("gpt-4o-mini"),
        messages,
        system: "You are a helpful assistant for [your domain].",
      });
    
      return result.toDataStreamResponse();
    }
    

    Este es código excelente. Hace streaming de respuestas, maneja errores, funciona con los patrones de streaming de React. El componente frontend generado por v0 lo consume perfectamente.

    El problema es que cada llamada streamText o generateText es una solicitud de API en la nube. El SDK abstrae el costo, lo cual es conveniente para desarrollo e inconveniente cuando llega tu dashboard de facturación.

    Costos del SDK de AI de Vercel a Escala

    Las respuestas en streaming son ligeramente más caras que las respuestas de llamada única porque mantienen una conexión durante toda la duración de generación y frecuentemente generan salidas más largas (los usuarios dejan de leer cuando el streaming se detiene, así que el modelo tiende a generar más tokens).

    Asume una función típica de AI de v0: interacción estilo chat, 400 tokens de entrada + 600 tokens de salida por intercambio, usando gpt-4o-mini:

    Usuarios Activos MensualesSesiones/UsuarioIntercambios/SesiónCosto Mensual de API
    20045$9.60
    1,00045$48
    5,00045$240
    20,00045$960
    100,00045$4,800

    Estas son estimaciones de gpt-4o-mini. Mejora a gpt-4o-2024 y multiplica por ~14x.

    La Ventaja de Despliegue de v0

    Aquí hay algo específico de las apps v0/Vercel: se despliegan en la red edge de Vercel, con funciones serverless manejando las rutas de API. Esta arquitectura realmente ayuda con la migración al modelo local.

    Tu ruta de API puede llamar cualquier endpoint HTTP. En lugar de llamar a api.openai.com, llama a tu VPS de Ollama. La función serverless no le importa a dónde va la solicitud — hace una llamada HTTP y devuelve la respuesta al cliente.

    Esto significa que la migración está completamente contenida en el archivo de ruta de API. Tus componentes React no cambian. Tu comportamiento de streaming no cambia. Solo el proveedor del modelo cambia.

    Reemplazando el Backend del SDK de AI con un Modelo Local Ajustado

    El SDK de AI de Vercel tiene soporte nativo para APIs compatibles con OpenAI vía la función createOpenAI:

    // Before — using OpenAI directly:
    import { openai } from "@ai-sdk/openai";
    const model = openai("gpt-4o-mini");
    
    // After — using your fine-tuned Ollama model:
    import { createOpenAI } from "@ai-sdk/openai";
    
    const ollama = createOpenAI({
      baseURL: process.env.OLLAMA_BASE_URL, // http://your-vps:11434/v1
      apiKey: "not-required",
    });
    
    const model = ollama("your-fine-tuned-model-name");
    
    // The rest of your route code stays exactly the same:
    const result = streamText({
      model, // just this variable changes
      messages,
      system: "...",
    });
    

    Establece OLLAMA_BASE_URL como una variable de entorno de Vercel. Tu implementación de streaming funciona sin cambios — Ollama soporta streaming de Server-Sent Events en el mismo formato que OpenAI.

    Streaming: ¿Funciona Localmente?

    Sí. Ollama soporta streaming en el formato SSE de OpenAI. El SDK de AI de Vercel lo consume correctamente. Tu componente frontend de streaming no ve diferencia — mismo formato de evento, misma estructura de datos.

    Consideración de rendimiento: Ollama local en un VPS de CPU hace streaming a 15-25 tokens/segundo. La API en la nube hace streaming a más de 50-100 tokens/segundo. Para la mayoría de los casos de uso, 15-25 tokens/segundo es imperceptible para los usuarios (se siente como escritura rápida). Para generación de formato largo (más de 500 tokens de salida), la diferencia se vuelve notable.

    Si la latencia importa: un VPS con GPU ($60-120/mes) hace streaming a 40-80 tokens/segundo. Sigue siendo costo fijo, significativamente más rápido.

    Comparación de Costos

    SoluciónCosto Mensual a 5K UsuariosCosto Mensual a 20K Usuarios
    SDK AI Vercel + gpt-4o-mini$240$960
    SDK AI Vercel + gpt-4o$3,360$13,440
    Ertas ajustado + Ollama VPS CPU$40.50$40.50
    Ertas ajustado + Ollama VPS GPU$140-190$140-190

    El enfoque de modelo local ajustado es más barato a 5K usuarios contra gpt-4o-mini, y dramáticamente más barato contra gpt-4o. La opción VPS GPU proporciona rendimiento significativamente mejor mientras sigue siendo mucho más barata que la API en la nube a escala.

    Obteniendo Tus Datos de Entrenamiento de una App v0

    Si tu app v0 ha estado corriendo 2-4 semanas con usuarios reales, tus rutas de API están registrando solicitudes y respuestas. Extrae estos para construir tu dataset de entrenamiento:

    // Add to your API route to log training data:
    const result = streamText({ model, messages });
    
    // Log the full interaction for training data
    const fullResponse = await result.text;
    await db.trainingLogs.create({
      input: messages[messages.length - 1].content,
      output: fullResponse,
      timestamp: new Date(),
      accepted: true, // assume accepted until user signals otherwise
    });
    

    Después de 2-4 semanas, tendrás 500-2,000 interacciones registradas. Filtra por calidad (tiempo mínimo de sesión, sin reintento inmediato), exporta como JSONL y sube a Ertas.


    Ship AI that runs on your users' devices.

    Ertas early bird pricing starts at $14.50/mo — locked in for life. Plans for builders and agencies.

    Lectura Adicional

    Ship AI that runs on your users' devices.

    Early bird pricing starts at $14.50/mo — locked in for life. Plans for builders and agencies.

    Keep reading