5: Creación de Proyecto IA Básico - 2

https://docs.google.com/presentation/d/e/2PACX-1vTp7th1cpaX4Y9WuQoArgFaw_gJvHxCdS1MEYHR7SBxw3YfGV_y_VNG2KyO2qFhGKxIqqP9mP5d4v06/pub?start=false&loop=false&delayms=3000

🎯 Tema: Construyendo la Interfaz Web para Nuestro Chatbot con Flask

📚 Introducción: ¿Por Qué Necesitamos una Interfaz Web?

Analogía: Imagina que tu programa de IA es como un cerebro muy inteligente, pero sin ojos, boca u oídos. La interfaz web es como darle a ese cerebro:

  • 👂 Oídos: Para escuchar las preguntas del usuario

  • 👄 Boca: Para responder de manera clara

  • 👀 Ojos: Para mostrar la conversación completa


🏗️ Parte 1: Estructura Básica de HTML

Esquema Visual de un Documento HTML:

text
<!DOCTYPE html>          → Declara que es HTML5
<html>                  → Contenedor principal
  <head>               → Información para el navegador
    <meta charset>     → Configuración de caracteres
    <title>           → Título en la pestaña
  </head>
  <body>              → Contenido visible
    <!-- Todo lo que ve el usuario va aquí -->
  </body>
</html>

Ejemplo Paso a Paso:

html
<!DOCTYPE html>
<html lang="es">
<head>
    <meta charset="UTF-8">
    <title>Chat con IA - Ollama</title>
</head>
<body>
    <!-- TODO: Aquí va nuestro contenido -->
</body>
</html>

Explicación sencilla:

  • lang="es": Le dice al navegador "hablo español"

  • charset="UTF-8": Usa todos los caracteres del español (ñ, á, é, í, ó, ú)

  • El título aparece en la pestaña del navegador


🎨 Parte 2: Creando el Formulario

Analogía del Formulario:

Es como un buzón de correos:

  • Input text: La hoja donde escribes tu carta (pregunta)

  • Botón Submit: El sello que envía la carta al cartero (servidor)

Código Explicado:

html
<h2>Chat Con IA (Ollama + Flask)</h2>
<form method="POST">
    <input type="text" 
           name="user_input" 
           placeholder="Escribe tu pregunta" 
           style="width: 80%;">
    <button type="submit">Enviar</button>
</form>

¿Qué hace cada parte?

  1. <h2>: Un título visible en la página

  2. method="POST": Dice "envía los datos de manera segura"

  3. name="user_input": Es como ponerle una etiqueta a tu pregunta

  4. placeholder: Texto gris que desaparece cuando escribes

  5. style="width: 80%": Ocupa el 80% del ancho disponible


💬 Parte 3: Mostrando la Conversación

Esquema del Área de Texto:

text
┌────────────────────────────────────────────┐
│ Tú: Hola, ¿cómo estás?                     │
│ IA: ¡Hola! Estoy bien, ¿y tú?              │
│ Tú: ¿Qué puedes hacer?                     │
│ IA: Puedo responder preguntas, ayudar...   │
│                                            │
│                                            │
│                                            │
└────────────────────────────────────────────┘

Código con Explicación:

html
<textarea rows="20" cols="100" readonly style="margin-top: 20px">
{% for sender, message in conversation %}
{{ sender }}: {{ message }}
{% endfor %}
</textarea>

Desglose:

  • rows="20": 20 líneas de altura

  • cols="100": 100 caracteres de ancho

  • readonly: Solo lectura (no se puede escribir directamente)

  • margin-top: 20px: 20 píxeles de espacio arriba


🔄 Parte 4: El Ciclo de Conversación (For Loop)

Analogía:

Imagina que conversation es un álbum de fotos:

  • Cada foto tiene: Quién la tomó (sender) + La foto misma (message)

  • El for loop es como pasar página por página mostrando cada foto

Ejemplo Visual:

python
# Así se ve conversation en Python:
conversation = [
    ("Tú", "¿Qué es Python?"),
    ("IA", "Python es un lenguaje de programación..."),
    ("Tú", "¿Y qué puedo hacer con él?"),
]
jinja2
{# Así lo procesa el for en HTML: #}
{% for sender, message in conversation %}
{{ sender }}: {{ message }}
{% endfor %}

{# Resultado: #}
Tú: ¿Qué es Python?
IA: Python es un lenguaje de programación...
Tú: ¿Y qué puedo hacer con él?

🚀 Parte 5: Ejecutando Nuestra Aplicación

Pasos para Probar:

  1. Guarda el archivo como index.html en la carpeta templates/

  2. Archivo Python principal:

python
from flask import Flask, render_template, request
import requests

app = Flask(__name__)
conversation = []  # Nuestro "álbum de conversaciones"

@app.route("/", methods=["GET", "POST"])
def index():
    if request.method == "POST":
        user_input = request.form["user_input"]
        conversation.append(("Tú", user_input))
        # Aquí luego agregaremos la respuesta de la IA
    
    return render_template("index.html", conversation=conversation)

if __name__ == "__main__":
    app.run(debug=True)
  1. Estructura de carpetas:

text
mi_chatbot/
├── app.py
└── templates/
    └── index.html
  1. Ejecuta:

bash
python app.py
  1. Abre en el navegador: http://localhost:5000


🎯 Diagrama de Flujo Completo:

text
Usuario escribe pregunta
         ↓
Formulario envía a Flask
         ↓
Flask recibe con request.form["user_input"]
         ↓
Agrega a conversation: ("Tú", pregunta)
         ↓
Renderiza HTML con conversation actualizada
         ↓
Navegador muestra pregunta en textarea

📝 Cuestionario de Repaso

Pregunta 1: ¿Para qué sirve charset="UTF-8" en HTML?

a) Para hacer la página más rápida
b) Para usar caracteres especiales como ñ, á, é
c) Para conectar con la base de datos
Respuesta correcta: b

Pregunta 2: ¿Qué hace el atributo readonly en un textarea?

a) Lo hace invisible
b) Evita que el usuario escriba directamente en él
c) Lo convierte en un campo obligatorio
Respuesta correcta: b

Pregunta 3: En el código {% for sender, message in conversation %}, ¿qué es conversation?

a) Una variable de Python con la lista de mensajes
b) Un comando especial de HTML
c) Una función de JavaScript
Respuesta correcta: a

Pregunta 4: ¿Por qué usamos method="POST" en el formulario?

a) Para enviar datos de manera segura al servidor
b) Para hacer la página más bonita
c) Para conectar con una API externa
Respuesta correcta: a

Pregunta 5: ¿Qué muestra {{ sender }}: {{ message }}?

a) Solo el nombre de quien envía
b) Solo el mensaje
c) Quién envía y qué dijo
Respuesta correcta: c


💡 Consejos Finales para Principiantes:

  1. Copiar y pegar está bien: Al principio, no te preocupes por memorizar todo

  2. Prueba cambios pequeños: Cambia colores, textos, tamaños para ver qué pasa

  3. Usa "Vista de desarrollador" en el navegador (F12) para debuggear

  4. Recarga siempre después de cambiar el código

  5. Los errores son amigos: Cada error te enseña algo nuevo


📂 Código Final Completado:

index.html:

html
<!DOCTYPE html>
<html lang="es">
<head>
    <meta charset="UTF-8">
    <title>Chat con IA - Ollama</title>
</head>
<body>
    <h2>Chat Con IA (Ollama + Flask)</h2>
    
    <form method="POST">
        <input type="text" 
               name="user_input" 
               placeholder="Escribe tu pregunta" 
               style="width: 80%;">
        <button type="submit">Enviar</button>
    </form>
    
    <textarea rows="20" cols="100" readonly style="margin-top: 20px">
{% for sender, message in conversation %}
{{ sender }}: {{ message }}
{% endfor %}
    </textarea>
</body>
</html>

app.py (versión básica):

python
from flask import Flask, render_template, request

app = Flask(__name__)
conversation = []

@app.route("/", methods=["GET", "POST"])
def index():
    if request.method == "POST":
        pregunta = request.form["user_input"]
        conversation.append(("Tú", pregunta))
        # En la próxima clase añadiremos la IA
    
    return render_template("index.html", conversation=conversation)

if __name__ == "__main__":
    app.run(debug=True)

✅ ¡Felicidades! Has creado la interfaz visual de tu chatbot. En la siguiente clase conectaremos la IA de verdad

Comentarios

Entradas más populares de este blog

1-Instalación y Primeros Pasos con Ollama

3- Creando tu Primer Entorno Virtual Python con Flask

2- Cómo Usar Ollama con Postman (APIs y Comunicación)