¿Qué es una API compatible con OpenAI?

Muchos proveedores de LLM y servidores de inferencia autoalojados —OpenAI, Azure OpenAI, Groq, OpenRouter, Together AI, Mistral, DeepSeek, vLLM, el servidor de llama.cpp, LM Studio y el modo compatible con OpenAI de Ollama— exponen la misma interfaz REST popularizada por OpenAI: solicitudes JSON a endpoints como /v1/chat/completions, autenticadas con un token Bearer en el encabezado Authorization. Esto permite cambiar de proveedor sin reescribir el código de integración.

Escribir manualmente un comando cURL correcto para estos endpoints implica configurar exactamente la URL, los encabezados y el cuerpo JSON, especialmente al ajustar parámetros de muestreo como la temperatura y las penalizaciones, o al alternar entre solicitudes de chat, completions heredadas y embeddings.

Descripción de la herramienta

Esta herramienta genera comandos cURL listos para usar para cualquier API compatible con OpenAI. Configura la URL base, el endpoint, el modelo y los parámetros, y obtén al instante un comando cURL con el formato correcto, listo para pegar en tu terminal o en tus scripts.

Ejemplos

Completions de chat:

curl -X POST "https://api.openai.com/v1/chat/completions" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -d '{
  "model": "gpt-4o-mini",
  "messages": [
    { "role": "system", "content": "Eres un asistente útil para programación." },
    { "role": "user", "content": "Escribe una función de Python para invertir un string" }
  ],
  "temperature": 0.3,
  "stream": false
}'

Servidor autoalojado (vLLM, llama.cpp, LM Studio, ...):

curl -X POST "http://localhost:8000/v1/chat/completions" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -d '{
  "model": "llama-3-8b-instruct",
  "messages": [
    { "role": "user", "content": "Resume la trama de Hamlet en dos frases" }
  ],
  "stream": true
}'

Embeddings:

curl -X POST "https://api.openai.com/v1/embeddings" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -d '{
  "model": "text-embedding-3-small",
  "input": "El veloz zorro marrón salta sobre el perro perezoso"
}'

Funciones

  • Admite los tres endpoints compatibles con OpenAI más comunes: /chat/completions, /completions y /embeddings
  • Funciona con cualquier URL base compatible, por lo que se adapta por igual a OpenAI, Azure, Groq, OpenRouter, Together AI y servidores autoalojados
  • Parámetros de muestreo configurables: temperatura, top-p, penalización por frecuencia, penalización por presencia, número máximo de tokens, número de completions, secuencias de detención y seed
  • Formato de respuesta opcional como objeto JSON para completions de chat
  • No se envía nada a ninguna parte: el comando cURL se crea completamente en tu navegador y ninguna API key sale de tu equipo

Explicación de las opciones

Opción Descripción Valor predeterminado Rango
URL base La raíz de la API, sin la ruta del endpoint. https://api.openai.com/v1 Cualquier URL
Endpoint El endpoint de la API al que se dirigirá la solicitud. /chat/completions chat, completions, embeddings
Temperatura Controla la aleatoriedad de la salida. Los valores más bajos producen texto más enfocado y los más altos aumentan la creatividad. 1 0-2
Top P Umbral de muestreo de núcleo. El modelo considera los tokens cuya probabilidad acumulada alcanza este valor. 1 0-1
Penalización por frecuencia Penaliza los tokens según la frecuencia con la que ya aparecieron, reduciendo la repetición literal. 0 -2-2
Penalización por presencia Penaliza los tokens que ya hayan aparecido, fomentando que el modelo introduzca temas nuevos. 0 -2-2
Máximo de tokens Número máximo de tokens que se generarán en la respuesta. Déjalo vacío para omitirlo y usar el valor predeterminado del proveedor. - Cualquier entero
Completions (n) Número de opciones de chat/completion que se generarán para la entrada. 1 Cualquier entero
Seed Seed fija para obtener una salida reproducible en la medida de lo posible. Déjala vacía para obtener resultados aleatorios. - Cualquier entero
Secuencias de detención Lista de secuencias separadas por comas en las que la API deja de generar más tokens. - Cualquier texto
Formato de respuesta Selecciona objeto JSON para obligar al modelo a devolver una salida JSON válida (solo en el endpoint de chat). Ninguno Ninguno / objeto JSON
Stream Cuando está activado, la respuesta se transmite como eventos enviados por el servidor. Desactívalo para recibir la respuesta completa de una sola vez. Desactivado Activado / Desactivado