Este tutorial está diseñado para guiar a quienes desean aprender más acerca de OpenAI. Es ideal para un nivel medio.
OpenAI proporciona acceso vía API a algunos de los modelos de inteligencia artificial más avanzados del mundo, permitiendo a desarrolladores integrar capacidades de IA en sus aplicaciones y servicios sin necesidad de entrenar modelos desde cero. Esta guía de nivel intermedio profundiza en el uso de la API de OpenAI para tareas clave: generación de texto conversacional (Chat Completions API, modelos GPT como GPT-4, GPT-3.5-turbo), generación de imágenes (API de DALL-E), transcripción de audio (API de Whisper) y creación de representaciones vectoriales de texto (API de Embeddings). Cubre aspectos prácticos como la gestión segura de API Keys, la importancia de la 'prompt engineering' para obtener resultados deseados, el manejo del contexto en conversaciones, el control de parámetros de respuesta (temperatura, max_tokens), la comprensión de los límites de tasa y la estructura de precios basada en 'tokens'. Permite a los desarrolladores aprovechar el poder de la IA de OpenAI para construir chatbots, herramientas de generación y análisis de contenido, funcionalidades de procesamiento de audio y sistemas de búsqueda semántica.
El 'Hola, mundo' de OpenAI: un script básico en Python que utiliza la API de Chat Completions para obtener una respuesta de un modelo GPT.
# 1. Obtén tu API Key en https://platform.openai.com/account/api-keys
# 2. Instala la librería: pip install openai
# 3. Configura tu API Key de forma segura (recomendado via variable de entorno)
# En Linux/macOS: export OPENAI_API_KEY='TU_API_KEY'
# En Windows: set OPENAI_API_KEY='TU_API_KEY'
# 4. Ejecuta el siguiente script:
import os
import openai
openai.api_key = os.getenv("OPENAI_API_KEY")
if not openai.api_key:
print("Error: La variable de entorno OPENAI_API_KEY no esta configurada.")
else:
try:
response = openai.ChatCompletion.create(
model="gpt-3.5-turbo", # Puedes usar gpt-4, gpt-4o, etc.
messages=[
{"role": "user", "content": "Decime un chiste corto sobre programadores"}
]
)
print(response['choices'][0]['message']['content'])
except openai.error.OpenAIError as e:
print(f"Ocurrio un error de la API: {e}")
Resultado:
"¿Por qué los programadores confunden Halloween y Navidad? Porque OCT 31 == DEC 25."
(La respuesta exacta puede variar ya que es generada por IA)
Familiarizarse con estos comandos es esencial para interactuar eficientemente con OpenAI:
pip install openai
Visita https://platform.openai.com/account/api-keys. Aquí puedes generar nuevas claves, ver tus claves existentes (parcialmente), revocar claves y monitorizar su uso.
import os
import openai
# Cargar la API Key desde una variable de entorno llamada OPENAI_API_KEY
openai.api_key = os.getenv("OPENAI_API_KEY")
response = openai.ChatCompletion.create(
model="gpt-3.5-turbo", # O modelos mas avanzados como gpt-4, gpt-4o
messages=[
{"role": "system", "content": "Eres un experto en la historia romana."},
{"role": "user", "content": "Contame sobre Julio Cesar."}
]
)
# Lista para almacenar el historial de mensajes
messages_history = [
{"role": "system", "content": "Eres un agente de viajes."},
{"role": "user", "content": "Quiero planear un viaje a Italia."}
]
# Primera llamada
response1 = openai.ChatCompletion.create(model="gpt-3.5-turbo", messages=messages_history)
messages_history.append(response1['choices'][0]['message'])
# Segunda llamada, incluyendo el historial completo
messages_history.append({"role": "user", "content": "¿Que ciudades me recomiendas?"})
response2 = openai.ChatCompletion.create(model="gpt-3.5-turbo", messages=messages_history)
response = openai.ChatCompletion.create(
model="gpt-3.5-turbo",
messages=[{"role": "user", "content": "Escribe un poema corto sobre el mar."}],
temperature=0.7, # Controla la aleatoriedad (0.0-2.0)
max_tokens=100, # Limita la longitud de la respuesta
top_p=1.0, # Controla la diversidad (sampling method)
frequency_penalty=0.0, # Penaliza tokens basados en su frecuencia
presence_penalty=0.0 # Penaliza tokens basados en su presencia
)
response = openai.Image.create(
model="dall-e-2", # O "dall-e-3"
prompt="Un gato cyberpunk con gafas de neon sentado en un tejado",
n=1, # Numero de imagenes a generar (hasta 10 para dall-e-2, solo 1 para dall-e-3)
size="1024x1024" # Tamaño de la imagen (ej: "256x256", "512x512", "1024x1024")
)
# Asegurate de tener el archivo de audio localmente
audio_file = open("ruta/a/tu/archivo_audio.mp3", "rb")
transcript = openai.Audio.transcribe("whisper-1", audio_file)
print(transcript['text'])
response = openai.Embedding.create(
model="text-embedding-ada-002", # Modelo recomendado para embeddings
input="Este es un texto de ejemplo para convertir en vector."
)
embedding_vector = response['data'][0]['embedding']
print(f"Embedding generado (vector de {len(embedding_vector)} dimensiones).")
try:
# Intenta hacer una llamada a la API que podría fallar
response = openai.ChatCompletion.create(
model="gpt-4",
messages=[{"role": "user", "content": "Hola"}]
)
print(response['choices'][0]['message']['content'])
except openai.error.RateLimitError as e:
print(f"Error de limite de tasa: {e}")
except openai.error.AuthenticationError as e:
print(f"Error de autenticacion (API Key invalida?): {e}")
except openai.error.APIError as e:
print(f"Ocurrio un error general de la API: {e}")
except Exception as e:
print(f"Ocurrio un error inesperado: {e}")
import openai
# Asegurate de tener la API key configurada
models_list = openai.models.list()
print("Modelos disponibles:")
for model in models_list:
print(f"- {model.id}")
# Después de una llamada exitosa a la API de texto/chat/embeddings, la respuesta incluye un campo 'usage'
print(f"Tokens de entrada (prompt): {response['usage']['prompt_tokens']}")
print(f"Tokens de salida (completion): {response['usage']['completion_tokens']}")
print(f"Tokens totales en esta llamada: {response['usage']['total_tokens']}")
# Consulta la pagina de precios de OpenAI para calcular el costo en USD basado en los tokens y el modelo.
Comprender estos conceptos fundamentales te ayudará a dominar OpenAI de forma más organizada y eficiente:
API de OpenAI:
La interfaz programática que permite a los desarrolladores acceder y utilizar los modelos de inteligencia artificial de OpenAI (como GPT, DALL-E, Whisper, Embeddings) desde sus propias aplicaciones, servicios o scripts. Puedes interactuar con ella a través de peticiones HTTP directas o utilizando librerías cliente (SDKs) oficiales (Python, Node.js).
API Key:
Una cadena de texto única y secreta que funciona como tu credencial de autenticación para usar la API de OpenAI. Identifica tu cuenta, autentica tus peticiones y permite a OpenAI rastrear tu uso para la facturación y los límites de tasa. Proteger tu API Key es de suma importancia.
Modelos de IA (GPT, DALL-E, Whisper, Embeddings, etc.):
OpenAI ofrece acceso a diversos modelos, cada uno especializado en diferentes tareas: Modelos de Lenguaje (GPT-4, GPT-3.5-turbo, etc.) para chat, generación de texto, resúmenes, etc.; Modelos de Imágenes (DALL-E) para generar y editar imágenes; Modelos de Audio (Whisper) para transcripción y traducción; Modelos de Embeddings (text-embedding-ada-002) para convertir texto a vectores; Modelos de Moderación para identificar contenido inseguro.
Chat Completions API:
El endpoint principal para interactuar con los modelos de lenguaje más recientes de OpenAI (modelos de la familia `gpt-`). Está diseñado para conversaciones, permitiendo enviar una lista de mensajes con diferentes 'roles' (`system`, `user`, `assistant`) para guiar la respuesta del modelo y manejar el contexto de la conversación.
Prompt Engineering:
El arte y la habilidad de redactar instrucciones o preguntas ('prompts') para los modelos de IA de manera que se obtengan las respuestas o resultados deseados. Implica ser claro, conciso, proporcionar contexto relevante, especificar el formato de salida y, a menudo, iterar y experimentar para encontrar la mejor redacción.
Tokens y Ventana de Contexto:
'Tokens' es la unidad básica de texto utilizada por los modelos (una palabra en inglés es aprox. 1.3 tokens; en español, puede variar). La facturación y los límites de entrada/salida se basan en tokens. La 'Ventana de Contexto' es el número máximo de tokens (suma de los tokens de entrada y salida) que un modelo puede procesar en una sola llamada a la API. Es una limitación crucial a considerar.
Manejo del Contexto de Conversación:
Para que los modelos de chat mantengan el hilo de una conversación ('memoria'), DEBES enviarles el historial completo de mensajes (tus prompts y las respuestas previas del modelo) en cada nueva llamada a la API. Esto consume tokens y el historial se trunca si excede la ventana de contexto del modelo.
Parámetros de Generación de Respuesta:
Opciones que puedes controlar al llamar a la API (ej: `temperature`, `max_tokens`, `top_p`, `frequency_penalty`, `presence_penalty`) para ajustar cómo el modelo genera la respuesta. La `temperature` controla la aleatoriedad/creatividad (0.0 es determinístico, 2.0 es muy aleatorio). `max_tokens` limita la longitud de la respuesta.
API de Embeddings:
Un endpoint especializado que convierte texto en un vector numérico de alta dimensión (embedding). Los embeddings capturan el significado semántico del texto. Son útiles para encontrar textos similares, agrupar documentos, o preparar datos para modelos de machine learning tradicionales basados en la semántica.
API de DALL-E:
Permite generar imágenes nuevas y originales a partir de una descripción textual. También ofrece funcionalidades para editar imágenes existentes o crear variaciones de imágenes dadas. Puedes elegir entre diferentes modelos de DALL-E (DALL-E 2, DALL-E 3) con distintas capacidades y precios.
API de Whisper:
Permite procesar archivos de audio para transcribirlos a texto. Es útil para convertir grabaciones de voz, reuniones o cualquier audio a texto, facilitando su análisis o almacenamiento.
Límites de Tasa y Precios:
OpenAI impone límites en la cantidad de llamadas a la API por minuto y por día (límites de tasa), que varían según tu plan y el modelo utilizado. El costo se basa principalmente en el número de tokens de entrada y salida procesados (con tarifas diferentes para cada uno). Es crucial monitorizar tu uso en el dashboard de OpenAI.
Seguridad de la API Key y Mejores Prácticas:
Proteger tu API Key es fundamental para evitar un uso no autorizado y posibles cargos. Nunca la incluyas directamente en tu código fuente o la expongas públicamente. Utiliza variables de entorno para almacenarla y cargarla. Considera usar diferentes claves para diferentes aplicaciones y revocar claves si crees que se han visto comprometidas.
Manejo de Errores de la API:
Implementar manejo de errores en tu código (usando bloques `try...except` en Python) es esencial, ya que las llamadas a la API pueden fallar por varios motivos (límite de tasa, autenticación fallida, errores del modelo, prompt muy largo, etc.). Capturar y manejar estos errores permite que tu aplicación sea más robusta.
OpenAI Playground:
Una herramienta web proporcionada por OpenAI (platform.openai.com/playground) que te permite interactuar directamente con los modelos, experimentar con diferentes prompts, ajustar parámetros y ver las respuestas generadas en tiempo real sin necesidad de escribir código. Es excelente para prototipar y entender cómo funcionan los modelos.
Algunos ejemplos de aplicaciones prácticas donde se utiliza OpenAI:
Construir agentes conversacionales o chatbots con memoria y capacidades especializadas:
Utilizar la Chat Completions API, gestionando el historial de mensajes para dar contexto al modelo, para crear chatbots que puedan mantener conversaciones coherentes, responder preguntas específicas sobre un tema (guiado por el rol del sistema) o actuar como asistentes virtuales.
Automatizar la generación de diversos tipos de contenido escrito:
Emplear los modelos GPT para generar automáticamente emails, descripciones de productos para e-commerce, posts para redes sociales, borradores de artículos de blog, guiones, e incluso código, a partir de prompts estructurados, acelerando drásticamente los flujos de trabajo de creación de contenido.
Desarrollar aplicaciones que resuman documentos extensos o extraigan información clave:
Utilizar los modelos GPT para analizar textos largos (documentos, artículos, transcripciones) y generar resúmenes concisos, extraer entidades nombradas (personas, lugares, organizaciones), o identificar puntos clave basados en prompts específicos.
Implementar funcionalidades de clasificación de texto o moderación de contenido:
Emplear los modelos GPT para clasificar textos (ej: categorizar tickets de soporte, analizar el sentimiento de reseñas) o utilizar la API de Moderación para identificar y filtrar contenido que viola las políticas de uso (ej: contenido de odio, violencia, sexual).
Crear funcionalidades de generación o edición de imágenes a partir de texto en aplicaciones:
Integrar la API de DALL-E en aplicaciones para permitir a los usuarios generar imágenes originales a partir de descripciones textuales, crear variaciones de imágenes existentes, o utilizar funcionalidades de edición (inpainting, outpainting).
Integrar funcionalidad de transcripción de voz a texto en aplicaciones:
Utilizar la API de Whisper para convertir archivos de audio (grabaciones de voz, llamadas, videos) a texto, facilitando la creación de notas de reuniones automáticas, la indexación de contenido de audio/video, o la implementación de comandos por voz.
Construir sistemas de búsqueda semántica, recomendación de contenido o agrupación de textos utilizando Embeddings:
Generar embeddings para tus propios datos textuales (ej: documentos, productos, preguntas frecuentes) y luego utilizarlos con bases de datos vectoriales para encontrar textos que son semánticamente similares (búsqueda por significado, no solo por palabras clave), recomendar contenido relacionado a usuarios o agrupar documentos automáticamente.
Integrar capacidades de IA en flujos de trabajo existentes o aplicaciones empresariales:
Añadir inteligencia a procesos existentes (ej: procesar y categorizar automáticamente emails de clientes, analizar feedback, generar respuestas automáticas en un CRM) o mejorar funcionalidades de aplicaciones (ej: asistentes virtuales en software de productividad, herramientas de escritura asistida) utilizando las diversas APIs de OpenAI.
Crear herramientas educativas interactivas o tutoriales que utilizan generación de lenguaje natural:
Desarrollar aplicaciones que generen explicaciones personalizadas, ejemplos, cuestionarios o feedback utilizando los modelos GPT para mejorar la experiencia de aprendizaje en plataformas educativas.
Aquí tienes algunas recomendaciones para facilitar tus inicios en OpenAI:
Obtén Tu API Key y Protégela Rigurosamente (¡Variable de Entorno!):
Este es el paso más importante. Ve a platform.openai.com, crea una cuenta y genera una API Key. Trátala como una contraseña maestra. NUNCA la pongas directamente en tu código fuente, especialmente si es público (GitHub). La mejor práctica es guardarla en una variable de entorno (`OPENAI_API_KEY`) y cargarla en tu script (`os.getenv('OPENAI_API_KEY')`).
Instala la Librería Oficial de Python y Empieza con la API de Chat Completions:
Usa `pip install openai` para instalar la librería recomendada. Luego, enfócate en aprender a usar `openai.ChatCompletion.create`. Este es el endpoint principal para interactuar con los modelos GPT más recientes y potentes.
Empieza con un Prompt Simple de Usuario, Luego Añade el Rol 'System':
Tu primera llamada puede ser solo con `messages=[{"role": "user", "content": "Tu pregunta"}]`. Una vez que entiendas eso, experimenta añadiendo un mensaje inicial con el rol `system` (`{"role": "system", "content": "Define el comportamiento del modelo"}`) para guiar la personalidad o tarea del modelo.
Experimenta en el Playground de OpenAI Antes de Escribir Código:
¡El Playground (platform.openai.com/playground) es tu mejor amigo para prototipar! Prueba diferentes modelos, escribe prompts y ajusta parámetros (temperatura, max_tokens) en la interfaz web para ver qué funciona antes de implementar la llamada a la API en tu código. Te ahorrará tiempo y tokens.
Comprende el Concepto de 'Tokens' y Cómo Afectan el Costo y el Contexto:
La API se factura por tokens (entrada + salida). La 'Ventana de Contexto' es el límite de tokens que el modelo puede manejar. Entender esto es crucial para predecir costos y gestionar conversaciones largas.
Aprende a Manejar el Contexto de Conversación (Pasar el Historial de Mensajes):
Para construir chatbots con memoria, debes enviar TODA la conversación previa (tus mensajes y las respuestas del modelo) en cada nueva llamada a la API de Chat Completions. Esto aumenta el consumo de tokens por llamada a medida que la conversación crece.
Experimenta con Parámetros Clave como `temperature` y `max_tokens`:
Juega con `temperature` (más alto = más aleatorio/creativo) y `max_tokens` (limita la longitud de la respuesta) para controlar el tipo de salida que obtienes. Consulta la documentación para otros parámetros útiles.
Implementa Manejo de Errores Básicos (try...except):
Las llamadas a la API pueden fallar. Usa `try...except openai.error.OpenAIError as e:` en Python para capturar y manejar errores comunes como límite de tasa excedido, autenticación fallida, etc. Esto hace que tu aplicación sea más robusta.
Explora Otras APIs: DALL-E (Imágenes), Whisper (Audio), Embeddings:
Una vez que te sientas cómodo con la API de Chat Completions, mira los endpoints para generación de imágenes (DALL-E), transcripción de audio (Whisper) y creación de vectores (Embeddings). Cada una abre un mundo de posibilidades de integración de IA.
Revisa la Documentación Oficial de OpenAI Regularmente:
La documentación en platform.openai.com/docs es el recurso más completo y actualizado. Consulta la referencia de la API, las guías sobre modelos, pricing, límites de tasa y el Cookbook (ejemplos de código).
Si te interesa OpenAI, también podrías explorar estas herramientas:
Amplía tus conocimientos con estos enlaces y materiales: