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.