Tecnología que te entiende
Chatbot con Python y la API de OpenAI desde cero
IA

Chatbot con Python y la API de OpenAI desde cero

28 Apr 2026 3 min de lectura 975 vistas

Integrar la API de OpenAI en Python es sorprendentemente sencillo. En esta guía construimos un chatbot funcional desde cero — con historial de conversación, manejo de errores y buenas prácticas para no quemar tu presupuesto de API.

Configuración inicial

# Instalar la biblioteca oficial
pip install openai python-dotenv

# Estructura del proyecto
chatbot/
├── .env          ← credenciales (NUNCA en git)
├── .gitignore
└── chatbot.py
# .env
OPENAI_API_KEY=sk-proj-tu-clave-aqui

# .gitignore
.env
__pycache__/

El cliente: versión mínima

from openai import OpenAI
from dotenv import load_dotenv
import os

load_dotenv()  # carga el .env

client = OpenAI(api_key=os.getenv("OPENAI_API_KEY"))

# Una sola pregunta
response = client.chat.completions.create(
    model="gpt-4o-mini",  # más barato que gpt-4o, excelente para pruebas
    messages=[
        {
            "role": "system",
            "content": "Eres un asistente experto en redes de computadoras."
        },
        {
            "role": "user",
            "content": "¿Qué es el protocolo TCP?"
        }
    ],
    max_tokens=500,
    temperature=0.7  # 0 = determinista, 1 = creativo
)

print(response.choices[0].message.content)
print(f"\nTokens usados: {response.usage.total_tokens}")

Chatbot con historial de conversación

Para que el modelo "recuerde" la conversación, debes enviar todo el historial en cada petición:

from openai import OpenAI
from dotenv import load_dotenv
import os

load_dotenv()
client = OpenAI(api_key=os.getenv("OPENAI_API_KEY"))

def chatbot():
    """Chatbot interactivo con historial de conversación."""

    system_prompt = """Eres un asistente educativo de tecnología llamado Sol.
    Explicas conceptos de redes, ciberseguridad y programación de forma clara y concisa.
    Siempre das ejemplos prácticos. Respondes en español."""

    # El historial acumula todos los mensajes
    historial = [{"role": "system", "content": system_prompt}]

    print("🤖 Sol - Asistente de TICs")
    print("Escribe 'salir' para terminar\n")

    while True:
        pregunta = input("Tú: ").strip()

        if pregunta.lower() in ['salir', 'exit', 'quit']:
            print("Sol: ¡Hasta pronto!")
            break

        if not pregunta:
            continue

        # Agregar la pregunta del usuario al historial
        historial.append({"role": "user", "content": pregunta})

        try:
            response = client.chat.completions.create(
                model="gpt-4o-mini",
                messages=historial,
                max_tokens=600,
                temperature=0.7
            )

            respuesta = response.choices[0].message.content

            # Agregar la respuesta del asistente al historial
            historial.append({"role": "assistant", "content": respuesta})

            print(f"\nSol: {respuesta}\n")

        except Exception as e:
            print(f"Error: {e}")
            historial.pop()  # remover la pregunta si falló

if __name__ == "__main__":
    chatbot()

Controlar costos

# Limitar el historial para no acumular tokens infinitamente
MAX_HISTORIAL = 20  # últimos 20 mensajes

def recortar_historial(historial, max_mensajes=MAX_HISTORIAL):
    """Mantiene el system prompt + los últimos N mensajes."""
    system = historial[0]  # el system prompt siempre se conserva
    mensajes = historial[1:]
    if len(mensajes) > max_mensajes:
        mensajes = mensajes[-max_mensajes:]
    return [system] + mensajes

Modelos y costos aproximados (2025)

Modelo Input Output Cuándo usar
gpt-4o-mini $0.15/1M tokens $0.60/1M tokens Chatbots, clasificación, tareas simples
gpt-4o $2.50/1M tokens $10/1M tokens Análisis complejo, código, visión
⚠️ Protege tu API key: Una API key filtrada puede costarte cientos de dólares en horas. Nunca la pongas en el código fuente. Siempre usa variables de entorno o un gestor de secretos. Activa límites de gasto en platform.openai.com.
"La API de OpenAI democratizó la IA — con 10 líneas de Python tienes acceso al mismo modelo que usa ChatGPT."