
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.
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 Mensuales | Sesiones/Usuario | Intercambios/Sesión | Costo Mensual de API |
|---|---|---|---|
| 200 | 4 | 5 | $9.60 |
| 1,000 | 4 | 5 | $48 |
| 5,000 | 4 | 5 | $240 |
| 20,000 | 4 | 5 | $960 |
| 100,000 | 4 | 5 | $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ón | Costo Mensual a 5K Usuarios | Costo 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
- Guía de Costos de AI para Vibecoders: Todas las Plataformas — El precipicio de costos de AI de cada plataforma principal
- Arquitectura de AI a Costo Fijo para Apps Indie — Diseñando para costos de AI sub-lineales
- Costos de AI de App Vibe-Coded Escalando — Cómo se ve el precipicio de costos a 10K usuarios
- Ejecutando Modelos de AI Localmente — Configuración de Ollama
- Un Modelo 7B Supera a la Llamada de API — Cuándo los modelos pequeños ajustados son suficientes
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

Bubble No-Code App + Local AI: Ship AI Features Without API Bills
Bubble's OpenAI plugin and API connector generate per-token costs at scale. Here's how to replace them with a fine-tuned local model using Ollama's OpenAI-compatible API.

MCP Servers + Local Models: Zero API Costs for Domain-Specific AI Tools
The combination of MCP servers and fine-tuned local models eliminates per-token costs for AI tools built on Claude, Cursor, and other MCP-compatible clients. Here's the cost math and the architecture.

Bolt.new Apps and the OpenAI Cost Cliff: What Happens at Scale
Bolt.new makes it easy to add AI features. Here's exactly what happens to your OpenAI bill as users grow — and how to replace it with a fine-tuned local model at flat cost.