Conexión de OpenAI API con variables de entorno en Python
Clase 25 de 25 • Curso de Python: Entornos virtuales, PEP8 y Manejo de Errores
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.