Contenido del curso

Roles y temperature en la Chat Completion API

Resumen

La Chat Completion API de OpenAI permite construir asistentes conversacionales personalizados usando tres roles: system, user y assistant. Aprenderás a estructurar mensajes, configurar un system prompt y ajustar parámetros como temperature y max tokens para controlar el tono y longitud de las respuestas.

¿Qué son los roles system, user y assistant en OpenAI?

Cuando hablas con ChatGPT, tú eres el user y el modelo es el assistant. Pero hay un tercer rol que normalmente no ves: el system, donde defines cómo debe comportarse el asistente.

Imagina que escribes "Hola" en ChatGPT y te responde algo genérico como "¿En qué te puedo ayudar?". Ahora compáralo con ADA de Platzi o con Plaxivision, el proyecto que construirás más adelante. Estos asistentes no responden genéricamente porque tienen un system prompt que les dice quiénes son y cómo deben actuar.

¿Qué es un system prompt? Es la instrucción inicial que define la personalidad, reglas y contexto del asistente antes de que empiece a conversar con el usuario. Por ejemplo: "Eres un asistente llamado Plaxivision, preséntate como tal".

La estructura básica suele empezar con el mensaje del system, seguida del intercambio entre user y assistant. No es obligatorio que el system vaya primero, pero es buena práctica. Y cualquiera de los dos, usuario o asistente, puede iniciar la conversación.

¿Cómo se configura el cliente de OpenAI en Python?

El flujo arranca en la terminal. Crea una carpeta llamada curso-openai-api, entra en ella y ábrela con tu editor favorito. Yo uso Cursor.

Para autenticarte necesitas una API key, que debes guardar en un archivo .env y nunca subir a producción. Luego configura el cliente así:

python import os from dotenv import load_dotenv from openai import OpenAI

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

Con esto ya tienes acceso a toda la gama de modelos disponibles desde el cliente [02:50].

¿Cómo crear una conversación con la Chat Completion API?

La función clave es client.chat.completions.create, que recibe dos atributos requeridos: el modelo y los mensajes.

Los mensajes son una lista donde cada elemento tiene un role y un content. Aquí un ejemplo con los tres roles:

python response = client.chat.completions.create( model="gpt-4o", messages=[ {"role": "system", "content": "Te llamas Plaxivision. Preséntate como tal."}, {"role": "user", "content": "Hola, ¿cómo estás?"} ] ) print(response.choices[0].message.content)

Al ejecutarlo en la terminal, la respuesta sale algo como: "Hola, soy Plaxivision, un asistente virtual listo para ayudarte. ¿En qué puedo asistirte hoy?". La personalidad del agente quedó condensada en un prompt simple [04:30].

¿Cómo se mantiene el contexto en una conversación larga?

Puedes ir agregando mensajes previos del assistant y nuevas preguntas del user dentro de la misma lista. Por ejemplo, después de la presentación inicial, añades la respuesta previa del asistente y luego una nueva pregunta del usuario como "¿Qué es Platzi?". El modelo entenderá toda la cadena y responderá manteniendo coherencia.

Así funcionan muchos sistemas de chat en producción: mantienen un historial de mensajes que sirve como contexto para producir respuestas acertadas.

¿Qué modelos y parámetros puedes usar en la API?

Puedes intercambiar fácilmente entre modelos como GPT-4o, GPT-4o mini, GPT-3.5 Turbo o el ya viejo GPT-4. Cambiar a mini suele dar respuestas más rápidas, aunque con matices distintos en calidad.

Dentro de create hay varios parámetros, pero dos son los más útiles al empezar:

  • max_tokens: ajusta la cantidad máxima de información que el modelo puede devolver. Valores típicos van de 100 a 1.200 tokens según el caso.
  • temperature: controla qué tan creativa o predecible es la respuesta. Va de 0 a 1, con 0.7 como valor por defecto recomendado.
  • model: define qué modelo de la familia GPT usarás.

¿Qué hace la temperatura en OpenAI? Define qué tan creativa es la respuesta. Valores bajos (0.1 a 0.2) generan respuestas deterministas y predecibles. Valores altos (0.8 a 0.9) producen respuestas más creativas y menos esperables.

¿Cuándo usar temperatura baja o alta?

La elección depende del caso de uso. Para asistentes que manejan matemáticas, cálculos o llamadas a funciones donde los errores son frecuentes, conviene una temperatura baja como 0.1 o 0.2 para que el modelo se apegue a las reglas establecidas.

Para generar historias, poesía o contenido creativo, sube la temperatura a 0.9 o incluso 1. Una buena práctica es experimentar: pídele al modelo el mismo poema con temperatura 0.2 y luego con temperatura 1, y compara los resultados.

Lo mismo aplica con max_tokens. Prueba con valores pequeños como 2, 3 o 4 y observa cómo se trunca la respuesta. Esa exploración te dará intuición sobre cómo se comporta el modelo bajo distintas configuraciones.

¿Ya probaste construir tu primer asistente con un system prompt personalizado? Cuéntame en los comentarios qué personalidad le diste y cómo respondió.