Dar contexto preciso a un modelo de inteligencia artificial marca la diferencia entre una respuesta útil y una alucinación. Con chat completions de OpenAI, es posible definir roles, inyectar ejemplos de conversación y ajustar parámetros como la temperatura para obtener resultados mucho más controlados y relevantes.
¿Qué es chat completions y para qué sirve?
La funcionalidad de chat completions permite interactuar con modelos como GPT-3.5 Turbo y GPT-4 pasándoles una serie de mensajes estructurados con roles [0:08]. Esto abre la puerta a casos de uso como:
- Crear correos electrónicos nuevos.
- Generar estructuras de código.
- Construir agentes conversacionales.
La diferencia fundamental respecto a una simple llamada de texto es que ahora el modelo recibe un historial completo de la conversación, lo que le da mucho más contexto para responder de forma coherente.
¿Cómo funcionan los roles en chat completions?
La estructura básica se construye pasando una lista de mensajes donde cada uno tiene un rol y un contenido [1:24]. Existen tres roles principales:
- System: define el contexto general del asistente. La documentación recomienda que siempre sea el primer mensaje. Por ejemplo: "Eres un asistente que da información sobre deportes" [2:00].
- User: representa las preguntas o solicitudes del usuario, como "¿Quién ganó el Mundial de Fútbol?" [2:32].
- Assistant: contiene las respuestas esperadas, como "El Mundial de 2022 lo ganó Argentina" [3:04].
Esta combinación de roles le enseña al modelo el flujo esperado de la conversación. Al pasarle ejemplos previos de preguntas y respuestas, el modelo entiende cómo debe comportarse ante una nueva consulta.
¿Cómo se estructura el código?
La llamada se realiza con openai.ChatCompletion.create(), especificando el modelo y la lista de mensajes [1:10]. Para extraer únicamente el texto de la respuesta se usa la siguiente estructura:
python
response = openai.ChatCompletion.create(
model="gpt-3.5-turbo",
messages=[
{"role": "system", "content": "Eres un asistente que da información sobre deportes"},
{"role": "user", "content": "¿Quién ganó el Mundial de Fútbol?"},
{"role": "assistant", "content": "El Mundial de 2022 lo ganó Argentina"},
{"role": "user", "content": "¿Dónde se jugó?"}
]
)
print(response.choices[0].message.content)
El resultado fue: "El Mundial de fútbol de 2022 se jugó en Catar" [4:46].
¿Cómo afecta la temperatura a las respuestas del modelo?
La temperatura controla los grados de libertad que tiene el modelo al generar texto [5:06]. Es un parámetro que determina qué tan creativo o restrictivo será el resultado.
¿Qué pasa con temperatura baja?
Al establecer temperature=0.2, el modelo se vuelve más restrictivo y, paradójicamente, generó una respuesta más amplia y detallada sobre el Mundial de Catar [5:22]. Esto ocurre porque el modelo se enfoca en dar información precisa sin dispersarse.
¿Qué ocurre con temperatura alta?
Al subir la temperatura a 1, el modelo respondió que "El Mundial de fútbol de 2022 aún no se ha celebrado" [6:00], una respuesta completamente incorrecta. Esto es lo que se conoce como alucinaciones: cuando el modelo no encuentra una respuesta confiable, inventa una o devuelve información falsa [6:12]. A mayor libertad, mayor riesgo de este tipo de errores.
Otro factor relevante es el máximo de tokens, que controla la extensión de la respuesta y también impacta en los costos de uso de la API, tanto en el prompt enviado como en el resultado recibido [6:38].
¿Dónde encontrar más información sobre los parámetros?
La documentación oficial de OpenAI tiene una sección dedicada a API References dentro de chat, donde se detallan todos los parámetros disponibles para chat completions [6:50]. Ahí se puede profundizar en el formato de respuesta, manejo de tokens y configuraciones avanzadas.
El siguiente paso lógico después de dominar chat completions es aplicar fine tuning para personalizar un modelo según necesidades específicas [7:20]. ¿Ya probaste ajustar la temperatura en tus propios experimentos? Comparte tu experiencia en los comentarios.