Integrar APIs de IA (OpenAI, Claude) en tu web: guía práctica
Lleva el poder de GPT-4o, Claude, Gemini a tu aplicación web. Desde arquitectura segura hasta ejemplos de código, gestión de costes y alternativas self-hosted en tu propio VPS.
¿Por qué integrar APIs de IA en tu web?
Las APIs de IA permiten agregar capacidades inteligentes sin entrenar modelos propios:
- ✓ Chatbots conversacionales: atender clientes 24/7
- ✓ Generación de contenido: artículos, descripciones, copys automáticos
- ✓ Análisis y resúmenes: procesar texto a escala
- ✓ Búsqueda semántica: entender intención, no solo palabras clave
- ✓ Traducción y localización: soportar múltiples idiomas
El secreto: no necesitas infraestructura de IA. Las APIs hacen el trabajo pesado. Tú solo integras.
Comparativa: 5 APIs principales
| Proveedor | Modelos clave | Entrada $/1M | Salida $/1M | Contexto |
|---|---|---|---|---|
| OpenAI | GPT-4o, GPT-4o-mini | $2.50 | $10.00 | 128K |
| Anthropic | Claude 3.5 Sonnet/Haiku | $0.80 | $2.40 | 200K |
| Gemini 1.5, Gemini Flash | $0.075 | $0.30 | 1M | |
| Meta | Llama 3.1 (70B, 405B) | $0.30 | $1.50 | 131K |
| Together AI | Todos los anteriores (API unificada) | Variable | Variable | Según modelo |
*Precios en USD, actualizados mayo 2026. 1M tokens ≈ 750K palabras.
Las 3 mejores opciones por caso de uso
OpenAI GPT-4o: máxima calidad + multimodal
El modelo más versátil. Entiende texto e imágenes. Excelente en razonamiento, escritura creativa, análisis profundo.
Ideal si: Necesitas lo mejor del mercado, presupuesto flexible. Casos: chatbots premium, generación de contenido, análisis documento.
Claude 3.5 Haiku: mejor relación precio-rendimiento
$0.80/1M tokens entrada. Modelo ágil para tareas directas. Contexto 200K (5 veces más que GPT-4o base).
Ideal si: Presupuesto limitado, volumen alto de requests. Casos: chatbots básicos, resúmenes, análisis rápido.
Google Gemini Flash: más barato, contexto enorme
$0.075/1M entrada. La API más económica. Contexto de 1M tokens (procesa libros enteros).
Ideal si: Necesitas procesar mucho texto barato. Casos: análisis de documentos grandes, búsqueda semántica.
Arquitectura: client-side vs server-side vs edge
❌ Client-Side (NUNCA hagas esto)
Llamar directamente desde el navegador a OpenAI/Anthropic:
{/* INSEGURO: tu API key queda en el HTML */}
const response = await fetch('https://api.openai.com/v1/chat/completions', {
headers: {
'Authorization': 'Bearer sk-...' // ¡EXPUESTA!
}
}); ⚠️ Riesgo: Cualquiera lee el source code y obtiene tu API key. Costes desbocados si alguien la roba.
✅ Server-Side (RECOMENDADO)
El navegador envía datos a tu servidor. Tu servidor llama a la API de IA con la clave segura.
// Cliente (navegador): sin API key
const response = await fetch('/api/chat', {
method: 'POST',
body: JSON.stringify({ message: 'Hola' })
});
// Servidor (Node.js): con API key segura en .env
import { Anthropic } from '@anthropic-ai/sdk';
const client = new Anthropic({
apiKey: process.env.ANTHROPIC_API_KEY
});
const message = await client.messages.create({
model: 'claude-3-5-haiku-20241022',
max_tokens: 1024,
messages: [{ role: 'user', content: userInput }]
}); ✓ API key protegida en servidor. Control de rate limiting y costes.
⚡ Edge Functions (ALTERNATIVA)
Código ejecutado en servidores edge (Cloudflare Workers, Vercel Edge). Más rápido que servidor centralizado.
// Cloudflare Worker
export default {
async fetch(request, env) {
const { message } = await request.json();
const response = await fetch('https://api.anthropic.com/v1/messages', {
method: 'POST',
headers: {
'x-api-key': env.ANTHROPIC_API_KEY,
'content-type': 'application/json'
},
body: JSON.stringify({
model: 'claude-3-5-haiku-20241022',
max_tokens: 1024,
messages: [{ role: 'user', content: message }]
})
});
return response;
}
}; Opciones de backend para alojar tu intermediaria
Cloudflare Workers (RECOMENDADO)
Serverless a nivel global. Respuesta en <1ms desde Europa. Incluye 10M requests/mes gratis.
Plan: Gratis o $5/mes. Límite: 10-50ms por Worker.
Vercel Edge Functions
Similar a Cloudflare. Integración perfecta con Next.js. $0.15 por 1M requests en plan Pro.
Plan: Gratis (limitado) o Pro ($20/mes).
VPS Node.js (máximo control)
Tu servidor propio. Usa Webempresa, Raiola o Profesional Hosting.
Plan: €12-25/mes. Ventaja: instala cualquier dependencia.
Netlify Functions
Serverless en plataforma Netlify. Menos popular que Vercel/Cloudflare.
Plan: Gratis (limitado) o Pro ($19/mes).
Ejemplo completo: Cloudflare Worker + Claude
1. Deploy Worker en Cloudflare
// wrangler.toml
name = "ia-chat-api"
type = "javascript"
account_id = "tu-account-id"
workers_dev = true
[env.production]
route = "api.example.com/*"
[[env.production.vars]]
ANTHROPIC_API_KEY = "sk-..." 2. Código del Worker (src/index.js)
export default {
async fetch(request, env, ctx) {
// CORS
if (request.method === 'OPTIONS') {
return new Response(null, {
headers: {
'Access-Control-Allow-Origin': '*',
'Access-Control-Allow-Methods': 'POST',
},
});
}
const { message } = await request.json();
// Rate limiting: max 10 requests/min por IP
const ip = request.headers.get('cf-connecting-ip');
const key = `rate:${ip}`;
const count = await env.KV.get(key) || 0;
if (count > 10) {
return new Response('Rate limit exceeded', { status: 429 });
}
await env.KV.put(key, count + 1, { expirationTtl: 60 });
// Llamada a Claude
const response = await fetch('https://api.anthropic.com/v1/messages', {
method: 'POST',
headers: {
'x-api-key': env.ANTHROPIC_API_KEY,
'anthropic-version': '2023-06-01',
'content-type': 'application/json',
},
body: JSON.stringify({
model: 'claude-3-5-haiku-20241022',
max_tokens: 1024,
messages: [{ role: 'user', content: message }],
}),
});
const data = await response.json();
const reply = data.content[0].text;
return new Response(JSON.stringify({ reply }), {
headers: {
'Content-Type': 'application/json',
'Access-Control-Allow-Origin': '*',
},
});
},
}; 3. Llamada desde el navegador
// Tu sitio web
document.getElementById('send').addEventListener('click', async () => {
const message = document.getElementById('input').value;
const response = await fetch('https://api.example.com/chat', {
method: 'POST',
body: JSON.stringify({ message })
});
const { reply } = await response.json();
document.getElementById('output').textContent = reply;
}); Gestión de costes: token counting, caching, streaming
Token Counting: Estima costes ANTES de enviar. 1 token ≈ 4 caracteres. Claude ofrece count_tokens API gratis.
Prompt Caching: Si usas el mismo contexto (FAQ, documentación) en múltiples requests, guárdalo en caché. Claude ofrece 90% descuento en tokens caché. Ejemplo: FAQs sobre tu producto en cada request de soporte.
Streaming: No ahorra costes (pagas igual por tokens). Pero mejora UX: el usuario ve respuestas parciales mientras se generan. Usa SSE (Server-Sent Events).
Rate Limiting: Evita uso accidental. Implementa límites en tu Worker/servidor: máx 10 requests/min por IP, máx 1000 tokens/request.
Ejemplo de coste real: 1,000 usuarios/mes, 5 queries cada uno, promedio 200 tokens por query (entrada+salida). Con Claude Haiku: 1,000 × 5 × 200 × $1.20/1M = ~€0.60/mes.
Streaming: respuestas en tiempo real con SSE
¿Qué es SSE (Server-Sent Events)?
El servidor envía fragmentos de respuesta a medida que están listos. El navegador los muestra incrementalmente, sin esperar la respuesta completa.
Ejemplo con Streaming
// Servidor (Node.js con Express)
app.post('/chat-stream', async (req, res) => {
res.setHeader('Content-Type', 'text/event-stream');
res.setHeader('Cache-Control', 'no-cache');
const stream = await client.messages.stream({
model: 'claude-3-5-haiku-20241022',
max_tokens: 1024,
messages: [{ role: 'user', content: req.body.message }],
});
for await (const event of stream) {
if (event.type === 'content_block_delta') {
const text = event.delta.text || '';
res.write(`data: ${JSON.stringify({ text })}\n\n`);
}
}
res.end();
});
// Cliente (navegador)
const sse = new EventSource('/chat-stream');
sse.onmessage = (event) => {
const { text } = JSON.parse(event.data);
document.getElementById('output').textContent += text;
}; Alternativas self-hosted: Ollama, LM Studio, vLLM
Ollama: Ejecuta modelos como Llama 2, Mistral localmente. Interfaz web incluida. Perfecto para pruebas y deploy en VPS propio.
LM Studio: Desktop app (Windows/Mac) para experimentar con modelos. No es para producción.
vLLM: Framework de rendimiento optimizado. Requiere GPU. Para setups serios con LLMs custom.
Desplegar Ollama en tu VPS
curl https://ollama.ai/install.sh | sh
ollama serve
# En otra terminal:
ollama pull llama2-7b
ollama run llama2-7b "¿Quién eres?"
# API REST (compatibilidad OpenAI):
curl http://localhost:11434/api/chat -d '{
"model": "llama2-7b",
"messages": [{"role":"user","content":"Hola"}]
}' Trade-offs: Costo cero de API, pero requiere CPU/GPU potente (€30-60/mes mínimo), latencia más alta, calidad inferior a Claude/GPT-4o.
Casos de uso prácticos
1. Chatbot de soporte: Claude + KnowledgeBase
Carga FAQ de tu sitio como contexto (prompt caching). Claude responde consultas sobre tu producto sin entrenar nada. Costo: ~$20/1000 tickets.
2. Generador SEO: OpenAI + Scrapy
Extrae temas de competidores, genera 50 títulos SEO automáticos. Revísalos, publica. Costo: ~$5 por 50 títulos.
3. Resumen de documentos: Gemini (contexto 1M)
Sube un PDF de 100 páginas. Gemini lo resume en 10 líneas. Más barato que Claude. Costo: ~$0.08 por documento.
4. Análisis de sentimiento: Haiku ultra-rápido
Analiza comentarios de usuarios. Clasifica en positivo/negativo/neutral. Bajo costo, baja latencia. Costo: ~$0.20 por 1000 comentarios.
5. Búsqueda semántica: Embeddings + Supabase
Convierte búsquedas de texto en vectores. Encuentra resultados por significado, no solo keywords. Costo: ~$0.02 por embedding.
Preguntas frecuentes
¿Cuál es la API de IA más barata? +
Google Gemini Flash: $0.075/1M tokens entrada. Pero si necesitas mejor calidad con bajo costo, Claude 3.5 Haiku es insuperable: $0.80/1M con contexto 200K.
¿Debo procesar las llamadas a IA en el cliente o servidor? +
Siempre servidor (o Edge Functions). Si llamas desde el navegador, tu API key queda expuesta en el source code. Usa Cloudflare Workers o Vercel Edge Functions como intermediarias.
¿Qué es el token counting y por qué importa? +
Los tokens son fragmentos de texto. Una palabra ≈ 1.3 tokens. Las APIs cobran por tokens usados, no por palabras. Estima los costes con librerías como tiktoken antes de enviar requests grandes.
¿Puedo usar streaming para ahorrar costes? +
No reduce costes (pagas igual por tokens). Pero mejora UX: el usuario ve la respuesta parcial mientras se genera. Implementa con SSE (Server-Sent Events).
¿Qué alternativa self-hosted existe? +
Ollama (modelos locales gratis como Llama 2) en tu VPS. Sin costes de API. Trade-off: menor calidad que OpenAI/Claude, requiere más RAM/CPU.
Artículos relacionados
¿Todavía no sabes qué API de IA integrar en tu proyecto?
Usa nuestra herramienta de recomendación. Responde un cuestionario sobre tu caso de uso (chatbot, análisis, generación) y recibe una recomendación personalizada: qué API, qué modelo, qué hosting.
Ir a la herramienta →