Conexión de OpenAI API con variables de entorno en Python

Clase 25 de 25Curso de Python Intermedio para Entornos virtuales y PEP8

Resumen

Conecta la API de OpenAI a un proyecto en Python para responder preguntas en lenguaje natural usando contexto de noticias. Aplica buenas prácticas como el uso de .env, variables de entorno y una prompt engineering mínima pero efectiva. Además, limita costos con selección de artículos y aprende a imprimir y verificar el contexto que envías a la IA.

¿Cómo proteger la API key con .env y variables de entorno?

Guardar llaves de la API en el código es un riesgo. La solución es .env y python-dotenv, cargando variables de entorno con seguridad y sin subirlas al repositorio.

  • Usa un archivo .env para llaves y contraseñas.
  • Instala python-dotenv con v: v add python-dotenv.
  • Carga variables con load_dotenv y os.environ.get.
  • Evita exponer la key en el código y en el control de versiones.

Código base:

# Instalación v add python-dotenv
# config.py from dotenv import load_dotenv import os load_dotenv() OPENAI_API_KEY = os.environ.get("OPENAI_API_KEY") # print(OPENAI_API_KEY) # Úsalo solo para probar; luego elimínalo.
# .env (ejemplo) OPENAI_API_KEY=tu_llave_secreta

Puntos clave:

  • variables de entorno con os.environ.get.
  • No subir API keys al repositorio.
  • Imprimir solo para probar y luego borrar el print.

¿Cómo instalar la librería de OpenAI y configurar el cliente?

OpenAI ofrece una librería oficial en PyPI. Se integra creando un client y usando un model como GPT-4 (requiere saldo para su uso).

  • Instala la librería desde PyPI.
  • Crea un archivo OpenAI.py para centralizar la configuración.
  • El client toma la key desde el entorno ya cargado.
  • Usa instructions y input para controlar la respuesta.
# Instalación de la librería oficial v add openai
# OpenAI.py from openai import OpenAI client = OpenAI() # Toma la API key desde el entorno def analyze_news_withIA(articles, query): # Implementación mostrada abajo: construir *prompt* con contexto y consultar la API. pass

Notas:

  • La librería incluye ejemplos claros de uso.
  • Si usas v como gestor, puedes prescindir de un archivo de requerimientos y mantener una única fuente de dependencias.
  • El endpoint de ejemplo utiliza instructions, input y selección de model.

¿Cómo construir el prompt con artículos y hacer la consulta?

La estrategia es pasar a la IA un contexto con títulos y descripciones de artículos, y luego una pregunta concreta. Para controlar costos, limita a los primeros diez artículos y recorta la descripción a cien caracteres.

  • Extrae título y descripción con una lista por comprensión.
  • Limita a 10 artículos para reducir costos en el LLM.
  • Recorta descripciones a 100 caracteres.
  • Redacta un prompt claro: “Responde de forma concisa en español”.
# Construcción de contexto y prompt def analyze_news_withIA(articles, query): context = "\n".join([ f"- Título: {a['title']}. Descripción: {a['description'][:100]}." for a in articles[:10] ]) prompt = ( "Basándote en estas noticias:\n" f"{context}\n" f"Pregunta: «{query}». Responde de forma concisa en español." ) # Ejemplo de uso del *client* con *model*, *instructions* e *input*. response = client.responses.create( model="gpt-4", instructions="eres un agente que lee en contexto y responde brevemente", input=prompt ) # Puede devolver un *stream* o quizás no haya respuesta; maneja ambos casos. return response or None

¿Cómo integrarlo en el flujo principal?

  • Importa la función en el archivo principal.
  • Pasa la lista de artículos y la query.
  • Imprime la respuesta.
from OpenAI import analyze_news_withIA articulos = [...] # Lista de artículos ya obtenidos. pregunta = "¿Qué piensas de Python?" respuesta = analyze_news_withIA(articulos, pregunta) print(respuesta)

¿Cómo verificar el contexto enviado?

  • Imprime el prompt para auditar qué recibe la IA.
  • Observa la salida. Ejemplo de respuesta: “Python es un lenguaje versátil y popular…”.
# Dentro de analyze_news_withIA, temporalmente: print(prompt) # Útil para depurar qué se está enviando a la IA.

Habilidades y conceptos que practicas: lenguaje natural, API de OpenAI, .env, python-dotenv, variables de entorno, os.environ.get, lista por comprensión, control de costos en LLM, prompt conciso, impresión y pruebas en terminal, integración en main, manejo de posibles None o stream, y mención del modelo GPT-4 que requiere saldo. Próximos pasos sugeridos: programación orientada a objetos y publicación en un repositorio de GitHub aplicando buenas prácticas.

¿Tienes dudas o quieres compartir tu implementación? Comenta qué pregunta harías a la IA con tus noticias y qué mejoras planeas añadir.