API de OpenAI: chat.completions y streaming
Cliente de OpenAI, lista de mensajes, roles system/user/assistant y streaming con stream=True.
API de OpenAI: chat.completions y streaming es una lección gratuita de Learn AI with Python en CoddyKit. Esta es la lección 1 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Learn AI with Python, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Learn AI with Python incluye 4 lecciones en total.
Conozca el SDK de Python de OpenAI
El paquete de Python openai es la forma oficial de comunicarse con modelos de OpenAI como GPT-4o. Instálelo con pip install openai y obtendrá una única clase de cliente OpenAI que gestiona la autenticación, los reintentos y la creación de solicitudes.
Todas las llamadas que realice pasan por este cliente, por lo que crearlo una vez y reutilizarlo es el patrón estándar.
pip install openai
from openai import OpenAICrear el cliente
Instancie el cliente con OpenAI(). De forma predeterminada, lee su clave de la variable de entorno OPENAI_API_KEY, lo que mantiene los secretos fuera del código fuente.
También puede pasar la clave explícitamente, pero las variables de entorno son el enfoque recomendado para las aplicaciones en producción.
from openai import OpenAI
# Reads OPENAI_API_KEY from the environment
client = OpenAI()
# Or pass it explicitly (not recommended)
client = OpenAI(api_key="sk-...")La lista messages
Los modelos de chat funcionan a partir de una lista de mensajes. Cada mensaje es un diccionario con un role y un content. Los tres roles principales son system (instrucciones), user (la persona) y assistant (el modelo).
Esta lista contiene todo el contexto de la conversación que el modelo ve en cada llamada.
messages = [
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "What is the capital of France?"}
]Su primera respuesta
Llame a client.chat.completions.create() con un model y sus messages. El texto de la respuesta se encuentra en response.choices[0].message.content.
La API devuelve una lista de opciones, pero en el uso habitual debe leer la primera.
response = client.chat.completions.create(
model="gpt-4o",
messages=messages
)
print(response.choices[0].message.content)Controlar la salida con parámetros
Dos parámetros determinan la respuesta: temperature (0 = determinista; los valores más altos producen respuestas más creativas) y max_tokens (limita la longitud de la respuesta). Las temperaturas bajas son adecuadas para tareas basadas en hechos; las altas, para generar ideas.
response = client.chat.completions.create(
model="gpt-4o",
messages=messages,
temperature=0.2,
max_tokens=300
)¿Por qué transmitir las respuestas?
Sin streaming, debe esperar a que se genere toda la respuesta antes de ver cualquier contenido. Con streaming, los tokens llegan a medida que se generan, por lo que una interfaz puede mostrar el texto en tiempo real, como hace ChatGPT.
Se activa con stream=True, lo que cambia el valor devuelto de un único objeto a un iterador.
Activar el streaming
Pase stream=True a create(). En lugar de una respuesta completa, ahora obtiene un generador que produce fragmentos a medida que el modelo los genera.
stream = client.chat.completions.create(
model="gpt-4o",
messages=messages,
stream=True
)Iterar sobre los fragmentos
Recorra el stream con un bucle. Cada fragmento contiene una parte parcial del texto en chunk.choices[0].delta.content. Los fragmentos iniciales y finales pueden tener el valor None allí, así que debe comprobarlo antes de imprimir.
for chunk in stream:
delta = chunk.choices[0].delta.content
if delta is not None:
print(delta, end="", flush=True)Entender delta y message
En una respuesta normal, debe leer message.content (la respuesta completa). En un stream, debe leer delta.content (solo la parte nueva). La palabra delta significa «el cambio» desde el último fragmento.
Al concatenar todos los deltas se reconstruye el mensaje completo.
full_text = ""
for chunk in stream:
piece = chunk.choices[0].delta.content or ""
full_text += piece
print("\nFinal:", full_text)Conversaciones de varios turnos
Para continuar una conversación, añada la respuesta del asistente a messages y después agregue el siguiente mensaje del usuario. El modelo no conserva estado, por lo que USTED debe mantener el historial.
messages.append({"role": "assistant", "content": response.choices[0].message.content})
messages.append({"role": "user", "content": "And its population?"})
follow_up = client.chat.completions.create(model="gpt-4o", messages=messages)Inspeccionar el uso de tokens
Las respuestas que no usan streaming incluyen un objeto usage con prompt_tokens, completion_tokens y total_tokens. Así puede controlar y presupuestar el coste de la API, ya que la facturación se realiza por token.
print(response.usage.prompt_tokens)
print(response.usage.completion_tokens)
print(response.usage.total_tokens)Comprobación rápida
Compruebe sus conocimientos sobre el streaming.
Resumen: Chat Completions y streaming
Ha aprendido a crear un cliente de OpenAI, construir una lista messages con roles de sistema, usuario y asistente, y llamar a chat.completions.create(). Las respuestas normales se leen desde choices[0].message.content.
Con stream=True, itera sobre los fragmentos y lee delta.content para obtener una salida en tiempo real, mantiene el historial añadiendo las respuestas y controla el coste mediante el objeto usage.
Preguntas frecuentes
¿La lección «API de OpenAI: chat.completions y streaming» es gratis?
Sí — el texto completo de «API de OpenAI: chat.completions y streaming» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Learn AI with Python, actualiza a CoddyKit PRO. El curso de Learn AI with Python incluye 4 lecciones en total.
¿Qué aprenderé en «API de OpenAI: chat.completions y streaming»?
Cliente de OpenAI, lista de mensajes, roles system/user/assistant y streaming con stream=True. Practicas Learn AI with Python con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar Learn AI with Python?
No se requiere experiencia previa. Learn AI with Python en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 1 de 4.
¿Cuánto tiempo toma la lección «API de OpenAI: chat.completions y streaming»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de Learn AI with Python?
Sí. Cada lección de Learn AI with Python incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- API de OpenAI: chat.completions y streaming
- API de Anthropic Claude en Python
- Llamadas a funciones y uso de herramientas con LLM
- Ingeniería de prompts para aplicaciones LLM en producción