Integrar IA por API: OpenAI, Anthropic y Google en tu aplicación (2026)

Por Ricardo Gutierrez · · 18 min lectura

En este artículo

  1. Por qué usar APIs de IA
  2. API keys y autenticación
  3. SDKs: Python y Node.js
  4. Streaming: respuestas en tiempo real
  5. Function calling y tools
  6. Rate limits y retry
  7. Precios por API en 2026
  8. Ejemplos de código
  9. Errores comunes
  10. Preguntas frecuentes
💡 Experiencia del equipo: He integrado APIs de OpenAI, Anthropic y Google en más de 15 aplicaciones de producción. La lección más cara que aprendí: no abstraer la API desde el principio me obligó a reescribir 3 aplicaciones cuando cambié de proveedor. Ahora siempre empiezo con una capa de abstracción, aunque parezca overengineering. No lo es.
Guía principal: Este artículo forma parte de la IA aplicada: guía completa.

Las APIs de IA son la forma más rápida de añadir inteligencia artificial a una aplicación. No necesitas GPUs, no necesitas entrenar modelos, no necesitas un equipo de ML. Envías una petición HTTP, recibes una respuesta inteligente. Es tan simple como una API de pagos o de email, con una diferencia: la respuesta no es determinista. Cada llamada puede producir un resultado diferente.

En 2026 hay tres proveedores principales: OpenAI (GPT-4o, o1, GPT-4o-mini), Anthropic (Claude Sonnet, Claude Haiku, Claude Opus) y Google (Gemini 2.5 Pro, Gemini 2.5 Flash). Cada uno tiene sus fortalezas, sus SDKs y sus modelos de pricing. Esta guía cubre todo lo que necesitas para integrar cualquiera de ellos en tu aplicación, con código real y decisiones de arquitectura.

Resumen rápido

Guía completa para integrar APIs de IA (OpenAI, Anthropic, Google) en tu aplicación: SDKs, streaming, function calling, rate limits, precios y ejemplos de código.

Por qué usar APIs de IA

Hay tres formas de añadir IA a una aplicación: modelos self-hosted (desplegar tu propio LLM), modelos fine-tuneados (personalizar un modelo existente) y APIs (llamar a un modelo hospedado por el proveedor). Para la mayoría de aplicaciones en 2026, las APIs son la opción correcta.

Ventajas de las APIs:

Cuándo NO usar APIs:

API keys y autenticación

Todas las APIs de IA usan API keys para autenticación. Una API key es un token secreto que identifica tu cuenta y autoriza las peticiones. Parece simple, pero la gestión de API keys es donde la mayoría de los problemas de seguridad empiezan.

Reglas fundamentales:

  1. Nunca en el código fuente. La API key va en variables de entorno o en un gestor de secretos (AWS Secrets Manager, Vault, Doppler). Nunca en un archivo .py o .js que se suba a git.
  2. Nunca en el frontend. Si pones la API key en JavaScript del navegador, cualquier usuario puede verla en las DevTools. Las llamadas a la API siempre van desde tu backend.
  3. Rotación periódica. Genera nuevas API keys cada 30-90 días. Si una key se filtra, el impacto se limita al período entre rotaciones.
  4. Keys por entorno. Una key para desarrollo, otra para staging, otra para producción. Así puedes revocar una sin afectar las demás.
  5. Límites de gasto. Todos los proveedores permiten configurar un límite de gasto mensual. Configúralo siempre. Un bug en un loop puede consumir miles de dólares en minutos.
# Correcto: API key desde variable de entorno
import os
api_key = os.environ["ANTHROPIC_API_KEY"]

# INCORRECTO: API key hardcoded
api_key = "sk-ant-api03-xxxx..."  # NUNCA hagas esto

Obtener API keys:

SDKs: Python y Node.js

Los tres proveedores tienen SDKs oficiales para Python y Node.js. Los SDKs simplifican la autenticación, el manejo de errores, el streaming y el tipado.

Instalación:

# Python
pip install anthropic openai google-generativeai

# Node.js
npm install @anthropic-ai/sdk openai @google/generative-ai

Llamada básica a cada API (Python):

# Anthropic (Claude)
import anthropic
client = anthropic.Anthropic()  # Lee ANTHROPIC_API_KEY del entorno
message = client.messages.create(
    model="claude-sonnet-4-20250514",
    max_tokens=1024,
    messages=[{"role": "user", "content": "Explica qué es una API en 3 frases"}]
)
print(message.content[0].text)

# OpenAI (GPT-4o)
from openai import OpenAI
client = OpenAI()  # Lee OPENAI_API_KEY del entorno
response = client.chat.completions.create(
    model="gpt-4o",
    messages=[{"role": "user", "content": "Explica qué es una API en 3 frases"}]
)
print(response.choices[0].message.content)

# Google (Gemini)
import google.generativeai as genai
genai.configure()  # Lee GOOGLE_API_KEY del entorno
model = genai.GenerativeModel("gemini-2.5-pro")
response = model.generate_content("Explica qué es una API en 3 frases")
print(response.text)

Los tres SDKs siguen un patrón similar: crear un cliente, llamar al método de generación, y leer el resultado. Las diferencias están en los nombres de los métodos y la estructura de la respuesta, pero el concepto es idéntico.

Streaming: respuestas en tiempo real

Sin streaming, tu usuario espera 3-10 segundos viendo una pantalla en blanco antes de recibir la respuesta completa. Con streaming, los tokens aparecen uno a uno en tiempo real, como si la IA estuviera "escribiendo". La experiencia de usuario mejora drásticamente.

Streaming en Python (Anthropic):

with client.messages.stream(
    model="claude-sonnet-4-20250514",
    max_tokens=1024,
    messages=[{"role": "user", "content": "Escribe un resumen ejecutivo"}]
) as stream:
    for text in stream.text_stream:
        print(text, end="", flush=True)  # Imprime token a token

Streaming en Node.js (OpenAI):

const stream = await openai.chat.completions.create({
  model: "gpt-4o",
  messages: [{ role: "user", content: "Escribe un resumen ejecutivo" }],
  stream: true,
});
for await (const chunk of stream) {
  const content = chunk.choices[0]?.delta?.content || "";
  process.stdout.write(content);  // Imprime token a token
}

Para enviar streaming al frontend, usa Server-Sent Events (SSE) o WebSockets. SSE es más simple y suficiente para el 90% de los casos. Tu backend recibe los tokens del LLM y los reenvía al frontend vía SSE. El frontend los renderiza en tiempo real.

💡 Consejo práctico: Implementa streaming desde el día 1, no como mejora posterior. Refactorizar una integración sin streaming a una con streaming toca todas las capas (API, backend, frontend). Es mucho más fácil hacerlo bien desde el principio. Además, el streaming te permite mostrar errores parciales: si la API se corta a mitad de respuesta, el usuario al menos ve lo que se generó.

Function calling y tools

Function calling (o tool use) permite que el LLM "llame" a funciones de tu aplicación. No es que el LLM ejecute código directamente. Lo que hace es: analiza el prompt, decide que necesita llamar a una función, genera los parámetros en JSON, y tu aplicación ejecuta la función y devuelve el resultado al LLM.

Es el mecanismo fundamental para construir agentes de IA y cualquier integración que vaya más allá de generar texto.

Ejemplo: tool use con Anthropic (Python):

tools = [{
    "name": "get_weather",
    "description": "Obtiene el clima actual de una ciudad",
    "input_schema": {
        "type": "object",
        "properties": {
            "city": {"type": "string", "description": "Nombre de la ciudad"},
            "units": {"type": "string", "enum": ["celsius", "fahrenheit"]}
        },
        "required": ["city"]
    }
}]

response = client.messages.create(
    model="claude-sonnet-4-20250514",
    max_tokens=1024,
    tools=tools,
    messages=[{"role": "user", "content": "¿Qué tiempo hace en Madrid?"}]
)

# Claude responde con un tool_use block:
# {"type": "tool_use", "name": "get_weather", "input": {"city": "Madrid", "units": "celsius"}}
# Tu app ejecuta get_weather("Madrid", "celsius") y devuelve el resultado

Structured output (JSON mode). Cuando no necesitas tools sino que el LLM devuelva JSON estructurado, usa structured output. OpenAI tiene response_format con JSON schema. Anthropic usa tool use con un solo tool que actúa como schema del output. Google tiene response_mime_type para JSON. Es extremadamente útil para extraer datos, clasificar contenido o generar configuraciones.

Flujo de function calling 1. Tu app Envia prompt + tools 2. LLM Decide: tool_use 3. Tu app Ejecuta función 4. LLM Genera respuesta prompt + tool defs tool_use JSON tool_result texto final "¿Tiempo en Madrid?" → LLM decide get_weather(Madrid) → Tu API llama OpenWeatherMap → Devuelve {temp: 28, desc: "soleado"} → LLM: "En Madrid hace 28°C y está soleado"

Rate limits y retry

Todas las APIs tienen límites de velocidad (rate limits). Si envías demasiadas peticiones por minuto, recibes un error 429 (Too Many Requests). Gestionar esto correctamente es la diferencia entre una app de producción y una demo.

Estrategia de retry con exponential backoff:

import time
import anthropic

client = anthropic.Anthropic()

def call_with_retry(messages, max_retries=3):
    for attempt in range(max_retries):
        try:
            return client.messages.create(
                model="claude-sonnet-4-20250514",
                max_tokens=1024,
                messages=messages
            )
        except anthropic.RateLimitError:
            wait = 2 ** attempt  # 1s, 2s, 4s
            time.sleep(wait)
        except anthropic.APIStatusError as e:
            if e.status_code >= 500:  # Error del servidor, reintentar
                time.sleep(2 ** attempt)
            else:
                raise  # Error del cliente (400, 401), no reintentar
    raise Exception("Max retries exceeded")

Los SDKs de Anthropic y OpenAI incluyen retry automático por defecto. Pero para producción, implementa tu propia lógica para tener control total: timeouts personalizados, logging de reintentos, alertas cuando se superan los límites.

Rate limits típicos (tier 1):

Los límites suben automáticamente con el uso (tiers). OpenAI y Anthropic tienen 5 tiers. Cuanto más gastas, más límite tienes. Para aplicaciones de alto volumen, solicita un aumento de límites directamente al proveedor.

Precios por API en 2026

El pricing de las APIs de IA se basa en tokens (unidades de texto procesadas). Los precios se dividen en tokens de input (lo que envías) y tokens de output (lo que recibes). El output siempre es más caro porque requiere más computación.

Precios API de IA por 1M tokens (USD, mayo 2026) Modelo Input Output Contexto Nivel Anthropic Claude Opus 4 $15.00 $75.00 200K Premium Claude Sonnet 4 $3.00 $15.00 200K Recomendado Claude Haiku 3.5 $0.80 $4.00 200K Budget OpenAI GPT-4o $2.50 $10.00 128K Recomendado GPT-4o-mini $0.15 $0.60 128K Budget Google Gemini 2.5 Pro: $1.25/$5.00 (1M ctx) · Gemini 2.5 Flash: $0.15/$0.60 (1M ctx)

Prompt caching. Anthropic y Google ofrecen prompt caching: si envías el mismo system prompt o contexto en múltiples llamadas, el proveedor lo cachea y cobra solo una fracción. Anthropic cobra el 10% del precio de input para tokens cacheados. Esto es enorme para aplicaciones donde el system prompt es largo y constante (chatbots, agentes con contexto fijo). Puede reducir costes un 50-90% en esos escenarios. Para una comparativa detallada de modelos, consulta nuestro artículo sobre ChatGPT vs Claude vs Gemini.

Ejemplos de código

Tres ejemplos prácticos que cubren los patrones más comunes en aplicaciones reales.

1. Chat completion con historial (Anthropic):

import anthropic

client = anthropic.Anthropic()
conversation = []

def chat(user_message):
    conversation.append({"role": "user", "content": user_message})
    response = client.messages.create(
        model="claude-sonnet-4-20250514",
        max_tokens=2048,
        system="Eres un asistente de soporte técnico. Responde en español, sé conciso.",
        messages=conversation
    )
    assistant_message = response.content[0].text
    conversation.append({"role": "assistant", "content": assistant_message})
    return assistant_message

# Uso
print(chat("No puedo conectarme al WiFi"))
print(chat("Ya reinicié el router"))  # Mantiene el contexto

2. Structured output (extracción de datos):

# Extraer datos estructurados de texto libre
response = client.messages.create(
    model="claude-sonnet-4-20250514",
    max_tokens=1024,
    tools=[{
        "name": "extract_invoice",
        "description": "Extrae datos de una factura",
        "input_schema": {
            "type": "object",
            "properties": {
                "vendor": {"type": "string"},
                "amount": {"type": "number"},
                "currency": {"type": "string"},
                "date": {"type": "string", "format": "date"},
                "items": {"type": "array", "items": {"type": "string"}}
            },
            "required": ["vendor", "amount", "currency", "date"]
        }
    }],
    tool_choice={"type": "tool", "name": "extract_invoice"},
    messages=[{"role": "user", "content": "Factura de Acme Corp, 15 mayo 2026, 1.500 EUR. Conceptos: consultoría IA, setup automación, formación equipo."}]
)
# Devuelve: {"vendor": "Acme Corp", "amount": 1500, "currency": "EUR", ...}

3. Vision (análisis de imagen):

# Analizar una imagen con Claude
import base64

with open("screenshot.png", "rb") as f:
    image_data = base64.standard_b64encode(f.read()).decode()

response = client.messages.create(
    model="claude-sonnet-4-20250514",
    max_tokens=1024,
    messages=[{
        "role": "user",
        "content": [
            {"type": "image", "source": {"type": "base64", "media_type": "image/png", "data": image_data}},
            {"type": "text", "text": "Describe qué muestra esta captura de pantalla y si hay algún error visible."}
        ]
    }]
)

Errores comunes

1. API key en el frontend. El error más grave y más común. Si tu API key está en JavaScript del navegador, cualquiera puede robarla y usarla en tu cuenta. Las llamadas a la API siempre van desde el backend. El frontend llama a tu backend, tu backend llama a la API.

2. No gestionar errores de la API. Las APIs de IA fallan: timeouts, rate limits, errores 500, respuestas vacías. Si tu app no gestiona estos errores, se rompe en producción. Implementa retry con backoff, timeouts, y mensajes de error claros para el usuario.

3. No cachear respuestas. Si 100 usuarios hacen la misma pregunta, no necesitas 100 llamadas a la API. Cachea respuestas para consultas comunes. Redis o un simple diccionario en memoria para prototipos. El ahorro puede ser del 50-70% en aplicaciones con consultas repetitivas.

4. Hardcodear el modelo. Si tu código dice model="gpt-4o" en 50 sitios, cambiar de modelo es un dolor. Usa una variable de configuración o un enum. Mejor aún: una capa de abstracción que te permita cambiar de proveedor (OpenAI a Anthropic) sin tocar la lógica de negocio.

5. No poner límites de gasto. Un bug en un loop puede generar miles de llamadas a la API en minutos. A 0.03 USD por llamada, 10.000 llamadas son 300 USD. Configura siempre un límite de gasto mensual en la consola del proveedor. Y en tu código, pon un max_iterations en cualquier loop que llame a la API.

6. Prompts en el código. Los prompts evolucionan rápido. Si están hardcodeados en funciones Python, cada cambio de prompt es un cambio de código con deploy. Guarda los prompts en archivos separados (YAML, texto) o en una base de datos. Así el equipo de producto puede iterar prompts sin tocar código. Para saber cuándo elegir API vs modelos locales, consulta nuestra guía sobre agentes de IA.

Preguntas frecuentes

¿Cuál API de IA es mejor para mi proyecto?

Depende del caso de uso. Anthropic (Claude) destaca en razonamiento complejo, análisis de textos largos y tool use. OpenAI (GPT-4o) tiene el ecosistema más amplio y es buena opción general. Google (Gemini) ofrece la mejor relación precio/rendimiento en tareas multimodales y contextos largos (1M tokens). Para empezar, elige una API, constrúyela con una capa de abstracción, y así podrás cambiar de proveedor sin reescribir la aplicación.

¿Cuánto cuesta usar APIs de IA en producción?

El coste depende del modelo y el volumen. Un chat básico con Claude Haiku o GPT-4o-mini cuesta 0.001-0.005 USD por interacción. Con modelos potentes (Claude Sonnet, GPT-4o) sube a 0.02-0.10 USD por interacción completa. Para 10.000 usuarios con 5 interacciones/día, el rango va de 50 a 500 USD/mes dependiendo del modelo. El prompt caching puede reducir costes un 50-90% en consultas con system prompt repetitivo.

¿Es seguro enviar datos de usuarios a APIs de IA?

Los tres proveedores principales (OpenAI, Anthropic, Google) no usan datos de API para entrenar modelos por defecto. Pero lee los términos de servicio. Para datos sensibles o regulados (RGPD, HIPAA), verifica que el proveedor tenga certificaciones relevantes, firma un DPA (Data Processing Agreement), y considera usar la opción de procesamiento en la UE si está disponible. Para máxima seguridad, usa modelos self-hosted.

¿Puedo usar varias APIs de IA en la misma aplicación?

Sí, y es una buena práctica. Usa modelos baratos (Haiku, GPT-4o-mini) para tareas simples (clasificación, extracción) y modelos potentes (Sonnet, GPT-4o) para tareas complejas (análisis, generación). También puedes usar diferentes proveedores como fallback: si la API de Anthropic está caída, redirige a OpenAI. La clave es una capa de abstracción que unifique las interfaces de los proveedores.

Si quieres profundizar en estas técnicas con ejercicios prácticos y soporte, consulta los planes de IAcademy.

Domina las APIs de IA

Los 3 primeros módulos de IAcademy son gratis. Los módulos avanzados cubren APIs, agentes, integración y deployment.

Empieza gratis

Curso completo: 108 módulos de IA aplicada

11 especializaciones por departamento. Dashboard con progreso. Quizzes y skills desbloqueables. Desde 399 EUR.

Ver precios Acceder al portal