5: Creación de Proyecto IA Básico - 2
🎯 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:
<!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:
<!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:
<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?
<h2>: Un título visible en la páginamethod="POST": Dice "envía los datos de manera segura"name="user_input": Es como ponerle una etiqueta a tu preguntaplaceholder: Texto gris que desaparece cuando escribesstyle="width: 80%": Ocupa el 80% del ancho disponible
💬 Parte 3: Mostrando la Conversación
Esquema del Área de Texto:
┌────────────────────────────────────────────┐ │ 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:
<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 alturacols="100": 100 caracteres de anchoreadonly: 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
forloop es como pasar página por página mostrando cada foto
Ejemplo Visual:
# 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?"),
]{# 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:
Guarda el archivo como
index.htmlen la carpetatemplates/Archivo Python principal:
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)Estructura de carpetas:
mi_chatbot/
├── app.py
└── templates/
└── index.htmlEjecuta:
python app.pyAbre en el navegador:
http://localhost:5000
🎯 Diagrama de Flujo Completo:
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:
Copiar y pegar está bien: Al principio, no te preocupes por memorizar todo
Prueba cambios pequeños: Cambia colores, textos, tamaños para ver qué pasa
Usa "Vista de desarrollador" en el navegador (F12) para debuggear
Recarga siempre después de cambiar el código
Los errores son amigos: Cada error te enseña algo nuevo
📂 Código Final Completado:
index.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):
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
Publicar un comentario