APIs de LLM para desarrolladores: primeros pasos

AI2026-09-22TryQuickToolBox

Tienes una gran idea para una función impulsada por IA, pero cuando empiezas a leer la documentación de la API, te topas con una pared de jerga: tokens, temperatura, streaming, prompts de sistema. Parece que necesitas un segundo título solo para enviar un mensaje. La buena noticia es que el concepto central es simple: envías una lista de mensajes y el modelo devuelve una respuesta. Todo lo demás es ajuste. Este artículo te guía por los pasos prácticos para integrar una API de chat completion de LLM en tu aplicación, con código que puedes adaptar hoy mismo.

¿Qué es una API de chat completion?

En esencia, una API de chat completion toma un historial de conversación como entrada y devuelve el siguiente mensaje de la conversación. El historial es un array de objetos de mensaje, cada uno con un role y un content. Los roles típicos son system, user y assistant. El mensaje de sistema establece el comportamiento del asistente, el mensaje de usuario es lo que escribió la persona, y el mensaje de asistente es lo que el modelo respondió anteriormente. Al enviar todo el historial, le das contexto al modelo para generar una respuesta coherente.

La mayoría de los proveedores (OpenAI, Anthropic, Google y alternativas de código abierto) siguen un patrón similar, aunque el endpoint y el payload exactos pueden variar. Una vez que entiendes uno, puedes adaptarte a los demás rápidamente.

Paso a paso: tu primera llamada a la API

Veamos un ejemplo mínimo usando Python y el SDK de OpenAI. Puedes instalarlo con pip install openai. Configura tu clave de API como variable de entorno para mantenerla fuera de tu código.

import os
from openai import OpenAI

client = OpenAI(api_key=os.environ["OPENAI_API_KEY"])

response = client.chat.completions.create(
    model="gpt-4o-mini",
    messages=[
        {"role": "system", "content": "You are a helpful assistant."},
        {"role": "user", "content": "Explain what an API is in one sentence."}
    ]
)

print(response.choices[0].message.content)

Eso es todo. El objeto de respuesta contiene una lista de choices; normalmente tomas la primera. El contenido del mensaje es la respuesta del modelo. También puedes acceder a las estadísticas de uso para rastrear el consumo de tokens.

Parámetros clave que deberías ajustar

Además de los mensajes, unos pocos parámetros controlan la salida del modelo:

Respuestas en streaming para una mejor UX

Esperar una respuesta completa puede sentirse lento, especialmente para respuestas largas. El streaming te permite mostrar el texto a medida que llega. Así se maneja un stream en Python:

stream = client.chat.completions.create(
    model="gpt-4o-mini",
    messages=[{"role": "user", "content": "Tell me a story."}],
    stream=True
)

for chunk in stream:
    delta = chunk.choices[0].delta.content
    if delta:
        print(delta, end="", flush=True)

Cada chunk contiene un delta con una parte de la respuesta. Acumulas estas partes para construir el mensaje completo. En una aplicación web, puedes reenviar estos chunks al navegador usando Server-Sent Events (SSE) o WebSockets.

Manejo de errores y límites de tasa

Las APIs fallan. Las redes tienen hipos. Los límites de tasa se activan. Tu integración debería manejarlos con elegancia. Los errores comunes incluyen:

Siempre envuelve las llamadas a la API en bloques try/except y registra los fallos. Para producción, considera usar una librería como tenacity para los reintentos.

Gestión de costos y tokens

Los tokens son la moneda de las APIs de LLM. Tanto los tokens de entrada como los de salida cuentan para tu factura. Para mantener los costos predecibles:

Monitorea el uso a través del panel del proveedor o registrando los conteos de tokens de cada respuesta.

Consideraciones de seguridad y privacidad

Cuando envías datos de usuario a una API de LLM, estás confiando esos datos a un tercero. Revisa las políticas de retención de datos del proveedor. Evita enviar información sensible como contraseñas o identificadores personales. Si es imprescindible, considera modelos autoalojados o proveedores con fuertes garantías de privacidad. Además, nunca expongas tu clave de API en código del lado del cliente; siempre enruta las solicitudes a través de tu backend.

Preguntas frecuentes

¿Cuál es la diferencia entre un chat completion y un completion normal?

Los chat completions están diseñados para interfaces conversacionales. Aceptan una lista de mensajes con roles, permitiendo al modelo mantener contexto. Los completions normales toman una sola cadena de prompt y son menos adecuados para diálogos de varios turnos.

¿Cómo elijo el modelo adecuado?

Empieza con un modelo más pequeño y económico para prototipar. Si necesitas mejor razonamiento o contexto más largo, pasa a un modelo más grande. Prueba ambos en tu tarea específica para encontrar el mejor equilibrio costo-rendimiento.

¿Puedo usar varios proveedores de LLM en una sola app?

Sí. Muchos desarrolladores abstraen las llamadas a la API detrás de una interfaz y cambian de proveedor según costo, latencia o características. Librerías como LiteLLM o LangChain pueden ayudar a unificar distintas APIs.

Próximos pasos

Ahora que puedes hacer una llamada básica, experimenta con prompts de sistema para dirigir el comportamiento del modelo. Prueba el streaming para mejorar la experiencia del usuario. Y siempre vigila el uso de tokens. A medida que construyes, puede que necesites formatear respuestas JSON del modelo para procesarlas más. Para eso, un formateador JSON puede ayudarte a validar e imprimir la salida de forma legible rápidamente.