In this article
OpenRouter en Python: usa cualquier LLM con una sola clave de API
Crear aplicaciones de IA suele implicar administrar varias claves de API, aprender distintos patrones de servicio y lidiar con diversos métodos de autenticación. ¿Y si pudieras acceder a decenas de LLM de primer nivel con una sola clave de API? Esa es la propuesta de OpenRouter y, en este artículo, te mostraré la forma más sencilla de usarlo en Python. En los próximos artículos también mostraremos cómo OpenRouter puede complementarse con LangChain y cómo usar OpenRouter con LangChain para llamar herramientas. El código fuente de este artículo está disponible aquí.

¿Qué es OpenRouter?
OpenRouter funciona como una puerta de enlace unificada a los principales modelos de lenguaje del mundo, tanto comerciales como de código abierto. Te permite acceder a modelos de OpenAI, Anthropic, Google, Meta, Mistral y otros proveedores mediante una API única y estandarizada.
En lugar de crear cuentas separadas para cada proveedor y administrar varios SDK, OpenRouter ofrece una interfaz que te permite acceder a cualquier modelo de lenguaje grande de cualquier proveedor con una sola línea de código. Esto puede simplificar considerablemente tu flujo de trabajo de desarrollo si creas aplicaciones que usarán varios LLM o si simplemente quieres probar distintos modelos para ver cuál se adapta mejor a tu caso de uso.
¿Por qué usar OpenRouter?
Ya mencionamos algunas ventajas: una sola API para acceder a decenas de modelos, como GPT-4, Claude, Gemini, Llama y muchos más. Además, ofrece:
Enrutamiento al mejor modelo: Hay varias opciones para dirigir las solicitudes a distintos modelos según su contenido. Por ejemplo, si especificas "model" como "openrouter/auto", se usará AutoRouter para decidir qué modelo es el más adecuado para procesar tu solicitud específica.
Confiabilidad y redundancia: OpenRouter ofrece capacidades de conmutación por error, lo que permite que tu aplicación recurra a otros proveedores cuando uno deja de funcionar.
API compatible con OpenAI: Si ya usas el SDK de OpenAI, puedes cambiarte a OpenRouter con cambios mínimos en el código.
Implementación básica de OpenRouter
Esta es la forma más sencilla de usar OpenRouter en Python. El código de openrouter_simple.py ofrece un ejemplo mínimo para que empieces rápidamente. Aquí tienes el script completo:
"""
Minimal example for using OpenRouter with the OpenAI client directly.
This is the simplest way to get started with OpenRouter.
"""
import os
import pathlib
from dotenv import load_dotenv
from openai import OpenAI
# Get the current directory and load .env file
current_dir = pathlib.Path(__file__).parent.absolute()
env_path = current_dir / '.env'
load_dotenv(dotenv_path=env_path)
# Get API key from environment
api_key = os.environ.get("OPENROUTER_API_KEY")
# Check if API key is available
if not api_key:
raise ValueError("OpenRouter API key not found. Please set OPENROUTER_API_KEY in your .env file.")
# Create a client for OpenRouter
client = OpenAI(
base_url="https://openrouter.ai/api/v1",
api_key=api_key,
default_headers={"HTTP-Referer": "http://localhost:5000"} # Required by OpenRouter
)
# Send a message to the model
response = client.chat.completions.create(
model="openai/gpt-3.5-turbo", # You can change this to any supported model
messages=[
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "Hello, who are you?"}
]
)
# Display the response
print(response.choices[0].message.content)Este script incluye todo lo que necesitas para empezar a usar OpenRouter. Puedes pensar en el proceso en cuatro etapas:
1. Configuración del entorno
El script comienza cargando tu clave de API desde un archivo .env, lo que mantiene tus credenciales seguras:
# Get the current directory and load .env file
current_dir = pathlib.Path(__file__).parent.absolute()
env_path = current_dir / '.env'
load_dotenv(dotenv_path=env_path)
# Get API key from environment
api_key = os.environ.get("OPENROUTER_API_KEY")
# Check if API key is available
if not api_key:
raise ValueError("OpenRouter API key not found. Please set OPENROUTER_API_KEY in your .env file.")Deberás crear un archivo .env con tu clave de API de OpenRouter:
OPENROUTER_API_KEY=your_openrouter_api_keyPuedes obtener una clave de API al registrarte en openrouter.ai.
2. Configuración del cliente de OpenAI
La magia ocurre en estas pocas líneas:
# Create a client for OpenRouter
client = OpenAI(
base_url="https://openrouter.ai/api/v1",
api_key=api_key,
default_headers={"HTTP-Referer": "http://localhost:5000"} # Required by OpenRouter
)Observa que usamos el cliente estándar de OpenAI, pero lo dirigimos al punto de conexión de la API de OpenRouter. Esto funciona porque OpenRouter mantiene la compatibilidad total con el formato de la API de OpenAI.
OpenRouter requiere el encabezado HTTP-Referer para identificar el origen de la solicitud. En un entorno de producción, debes configurarlo con la URL de tu aplicación.
3. Selección del modelo y solicitud
Al hacer una solicitud, especificas qué modelo usar:
# Send a message to the model
response = client.chat.completions.create(
model="openai/gpt-3.5-turbo", # You can change this to any supported model
messages=[
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "Hello, who are you?"}
]
)El identificador del modelo sigue el formato provider/model-name. Algunos ejemplos:
openai/gpt-4o-2024-11-20- GPT-4o (Omni) de OpenAI con una fecha de corte de conocimiento específicaanthropic/claude-sonnet-4- Claude 4 Sonnet de Anthropicgoogle/gemini-2.5-pro-preview- Gemini Pro 2.5 de Google (versión preliminar)meta-llama/llama-4-maverick- Llama 4 17B Instruct de Meta
En ocasiones, OpenRouter te da acceso a modelos que normalmente no tendrías. Un ejemplo fue el acceso anticipado a modelos prémium como GPT-4 32K. Puedes consultar la lista completa de modelos disponibles en openrouter.ai/models.
4. Procesamiento de la respuesta
Por último, extraemos y mostramos la respuesta:
1# Display the response
2print(response.choices[0].message.content)La estructura de la respuesta sigue el mismo formato que la API de OpenAI, por lo que es fácil integrarla con el código existente.
Funciones y opciones de OpenRouter
Aunque el ejemplo básico anterior te permite empezar rápidamente, OpenRouter ofrece muchas funciones adicionales:
Control del enrutamiento de modelos
OpenRouter ofrece opciones completas para controlar a qué proveedor subyacente se dirige tu solicitud. Puedes especificarlas con el formato JSON de OpenRouter (consulta extra_body):
# Provider preference ordering
response = client.chat.completions.create(
model="meta-llama/llama-3.1-8b-instruct",
messages=[{"role": "user", "content": "Hello!"}],
extra_body={"provider": {"order": ["together", "fireworks", "perplexity"]}}
)
# Quantization preferences (only for open-source models)
response = client.chat.completions.create(
model="meta-llama/llama-3.1-8b-instruct", # Must use open-source model
messages=[{"role": "user", "content": "Hello!"}],
extra_body={"provider": {"quantizations": ["fp8"]}}
)
# Fallback control
response = client.chat.completions.create(
model="meta-llama/llama-3.1-8b-instruct",
messages=[{"role": "user", "content": "Hello!"}],
extra_body={"provider": {"allow_fallbacks": True}}
)
# Data collection control
response = client.chat.completions.create(
model="openai/gpt-3.5-turbo",
messages=[{"role": "user", "content": "Hello!"}],
extra_body={"provider": {"data_collection": "deny"}}
)Este ejemplo especifica que solo quieres proveedores que admitan la cuantización fp8 para ese modelo.
Streaming de respuestas
OpenRouter admite respuestas en streaming, una función útil para aplicaciones de chat:
stream = client.chat.completions.create(
model="anthropic/claude-3-sonnet",
messages=[
{"role": "user", "content": "Tell me about renewable energy benefits"}
],
stream=True
)
for chunk in stream:
if chunk.choices[0].delta.content:
print(chunk.choices[0].delta.content, end="", flush=True)Modelos de visión y lenguaje
OpenRouter admite modelos multimodales que pueden procesar imágenes:
import base64
# Method 1: Using local image files
def encode_image_to_base64(image_path):
with open(image_path, "rb") as image_file:
return base64.b64encode(image_file.read()).decode('utf-8')
base64_image = encode_image_to_base64("your_image.png")
response = client.chat.completions.create(
model="openai/gpt-4o", # GPT-4o works reliably for vision
messages=[
{
"role": "user",
"content": [
{"type": "text", "text": "What's in this image?"},
{"type": "image_url", "image_url": {"url": f"data:image/png;base64,{base64_image}"}}
]
}
]
)
# Method 2: Using image URLs
response = client.chat.completions.create(
model="openai/gpt-4o",
messages=[
{
"role": "user",
"content": [
{"type": "text", "text": "What's in this image?"},
{"type": "image_url", "image_url": {"url": "https://example.com/image.jpg"}}
]
}
]
)Precios y administración de costos
OpenRouter funciona con un sistema de créditos en el que distintos modelos consumen diferentes cantidades de créditos por solicitud. Hay créditos gratuitos para hacer pruebas, pero tendrás que comprar créditos adicionales para usarlo en producción.
Puedes monitorear tu uso desde el panel de OpenRouter y establecer límites de crédito para las claves de API a fin de controlar los gastos.
Inicio rápido
Para usar el código de este artículo:
Regístrate para obtener una cuenta de OpenRouter en openrouter.ai
Crea una clave de API en openrouter.ai/settings/keys
Configura un entorno de Python con los paquetes necesarios:
pip install openai python-dotenv
Crea un archivo .env con tu clave de API:
OPENROUTER_API_KEY=your_openrouter_api_keyEjecuta el script de ejemplo:
python openrouter_simple.pyPara concluir
OpenRouter llena un vacío en el ecosistema de IA al funcionar como un mercado unificado de modelos de lenguaje. La ventaja de la implementación que te mostré es su sencillez: con solo unas pocas líneas de código, puedes cambiar entre decenas de modelos líderes sin modificar la estructura de tu aplicación.
Para quienes desarrollan aplicaciones de IA, esto significa que pueden:
Probar distintos modelos sin comprometerse con un solo proveedor
Usar el mejor modelo para cada tarea específica
Implementar alternativas para mejorar la confiabilidad
Optimizar los costos al elegir el modelo más rentable para cada caso de uso
El script openrouter_simple.py incluido te proporciona la base. A partir de ahí, puedes crear aplicaciones sólidas que aprovechen todo el potencial de los modelos de lenguaje modernos sin la complejidad de administrar varias API.
Protege tus implementaciones de IA con Snyk
Al crear aplicaciones con OpenRouter y otras herramientas de IA, la seguridad se vuelve una prioridad fundamental. Snyk ofrece soluciones diseñadas específicamente para el ecosistema de IA emergente.
Snyk AI Security Platform
La AI Security Platform de Snyk es una solución que aborda los desafíos de seguridad particulares del desarrollo impulsado por IA. Esta plataforma ayuda a los desarrolladores a crear aplicaciones de IA seguras sin perder el ritmo que esta tecnología permite.
La AI Security Platform está diseñada para ayudar a las organizaciones a acelerar la innovación impulsada por IA, mitigar los riesgos empresariales y proteger la IA generativa y agéntica. Esto es especialmente importante, ya que los estudios sugieren que casi la mitad del código generado por IA contiene vulnerabilidades de seguridad.
La AI Security Platform de Snyk permite a los equipos desarrollar con rapidez y mantener la seguridad en un entorno impulsado por IA, al reducir el esfuerzo humano y mejorar la eficiencia de las políticas de seguridad y la gobernanza. Se basa en los completos motores de pruebas de Snyk, impulsados por DeepCode AI y respaldados por su base de datos de vulnerabilidades líder en el sector.
Snyk Secure Developer Program para proyectos de código abierto
Si trabajas en proyectos de código abierto que usan tecnologías de IA como OpenRouter, Snyk's Secure Developer Program ofrece recursos valiosos. Este programa, lanzado en febrero de 2025, está diseñado para reforzar la seguridad en el ecosistema de código abierto. Snyk Secure Developer Program ofrece a las comunidades de código abierto un tipo de apoyo sin precedentes que les ayuda a crear programas de seguridad de nivel empresarial para encontrar y corregir rápidamente las vulnerabilidades en el código.
El programa ofrece a los proyectos de código abierto que cumplen los requisitos:
Herramientas de seguridad de nivel empresarial: acceso completo y sin costo a la plataforma de seguridad prémium de Snyk
Asistencia de expertos: ayuda práctica del equipo de relaciones con desarrolladores de Snyk
Recursos para la comunidad: acceso a la comunidad de Discord de Snyk y a Connect para socios
Acceso a la API: capacidades de integración para automatizar las verificaciones de seguridad
Snyk ofrece estas herramientas líderes de seguridad para desarrolladores sin costo a los proyectos de código abierto que cumplen los requisitos. Para calificar, tu proyecto no debe estar respaldado por una entidad corporativa y debe tener al menos 10,000 estrellas en GitHub.
Al combinar la flexibilidad de OpenRouter con las herramientas de seguridad de Snyk, puedes crear aplicaciones de IA potentes y seguras. Este enfoque es especialmente valioso a medida que se acelera el desarrollo de IA y surgen nuevos desafíos de seguridad.
Obtén más información sobre estas ofertas y solicita ingresar a Secure Developer Program.
Solicita una demo en vivo de Snyk para proteger el código abierto
Habla con nuestros expertos en seguridad para descubrir cómo Snyk puede ayudarte a usar software de código abierto de forma segura