#!/bin/bash # ============================================================================= # primera-consulta.sh — Tu primera consulta a un modelo local # ============================================================================= # # Uso: # chmod +x primera-consulta.sh # ./primera-consulta.sh # # Descripción: # Script paso a paso que guía al oyente en su primera interacción con un # modelo de lenguaje local. Cubre los 4 pasos del Bloque 6 del episodio: # # Paso 1 — Verificar que Ollama está instalado y corriendo # Paso 2 — Descargar un modelo pequeño (qwen2.5:3b) # Paso 3 — Hacer una consulta desde terminal con ollama run # Paso 4 — Abrir Open WebUI en http://localhost:3000 # # Es el script estrella del episodio. El momento en que el oyente descubre # que su máquina puede responder con inteligencia genuina, sin internet. # # Requisitos: # - Ollama instalado (ver 02-instalacion/setup-ollama.sh) # - Conexión a internet (solo para el Paso 2, descarga del modelo) # - ~3 GB de espacio libre para el modelo # # ============================================================================= set -euo pipefail # Colores para el output VERDE='\033[0;32m' AMARILLO='\033[1;33m' AZUL='\033[0;34m' ROJO='\033[0;31m' RESET='\033[0m' echo -e "${AZUL}╔══════════════════════════════════════════════════════╗${RESET}" echo -e "${AZUL}║ 🚀 Tu primera consulta a un modelo local ║${RESET}" echo -e "${AZUL}║ Episodio 827 — Recursos IA: el botiquín del ║${RESET}" echo -e "${AZUL}║ explorador ║${RESET}" echo -e "${AZUL}╚══════════════════════════════════════════════════════╝${RESET}" echo "" # ============================================================================= # PASO 1 — Verificar que Ollama está instalado y corriendo # ============================================================================= echo -e "${AZUL}────────────────────────────────────────────────────────${RESET}" echo -e "${AZUL} Paso 1 de 4: Verificar Ollama${RESET}" echo -e "${AZUL}────────────────────────────────────────────────────────${RESET}" echo "" # 1a. Comprobar que el binario de Ollama existe echo -n " Comprobando instalación de Ollama... " if command -v ollama &>/dev/null; then echo -e "${VERDE}✓${RESET}" echo " Versión: $(ollama --version 2>/dev/null || echo 'desconocida')" else echo -e "${ROJO}✗${RESET}" echo "" echo " ERROR: Ollama no está instalado." echo "" echo " Para instalar Ollama, ejecuta:" echo " curl -fsSL https://ollama.com/install.sh | sh" echo "" echo " O usa el script guiado:" echo " ../02-instalacion/setup-ollama.sh" echo "" exit 1 fi echo "" # 1b. Comprobar que el servicio está corriendo (vía API) echo -n " Comprobando que el servicio está activo... " if curl -s http://localhost:11434/api/tags &>/dev/null; then echo -e "${VERDE}✓${RESET}" echo " API REST respondiendo en http://localhost:11434" else echo -e "${AMARILLO}⚠${RESET}" echo "" echo " El binario está instalado pero el servicio no responde." echo "" echo " Arranca el servicio con:" echo " sudo systemctl start ollama" echo "" echo " O manualmente:" echo " ollama serve &" echo "" echo " Luego vuelve a ejecutar este script." echo "" exit 1 fi echo "" # 1c. Mostrar modelos ya descargados (si los hay) MODELOS_EXISTENTES=$(ollama list 2>/dev/null | tail -n +2 | wc -l) if [ "$MODELOS_EXISTENTES" -gt 0 ]; then echo " Modelos disponibles actualmente:" ollama list 2>/dev/null | tail -n +2 | while read -r line; do echo " • $line" done else echo " No hay modelos descargados todavía." fi echo "" # ============================================================================= # PASO 2 — Descargar un modelo pequeño # ============================================================================= echo -e "${AZUL}────────────────────────────────────────────────────────${RESET}" echo -e "${AZUL} Paso 2 de 4: Descargar un modelo pequeño${RESET}" echo -e "${AZUL}────────────────────────────────────────────────────────${RESET}" echo "" # Usamos qwen2.5:3b como modelo recomendado para empezar # Es pequeño (~2 GB), rápido, y sorprendentemente capaz MODELO="qwen2.5:3b" echo " Modelo recomendado: ${AMARILLO}${MODELO}${RESET}" echo " Tamaño aproximado: ~2 GB" echo " Ideal para: hardware con 8-16 GB de RAM" echo "" # Comprobar si ya está descargado if ollama list 2>/dev/null | grep -q "^${MODELO}\s"; then echo -e " ${VERDE}✓${RESET} El modelo ya está descargado." else echo " Descargando modelo... (esto puede tardar según tu conexión)" echo " ☕ Momento café." echo "" # El comando estrella: ollama pull ollama pull "$MODELO" echo "" echo -e " ${VERDE}✓${RESET} Modelo descargado correctamente." fi echo "" # ============================================================================= # PASO 3 — Hacer una consulta desde terminal # ============================================================================= echo -e "${AZUL}────────────────────────────────────────────────────────${RESET}" echo -e "${AZUL} Paso 3 de 4: Preguntar desde la terminal${RESET}" echo -e "${AZUL}────────────────────────────────────────────────────────${RESET}" echo "" # Prompt diseñado para ser didáctico y mostrar la capacidad del modelo PROMPT="Explícame qué es un modelo de lenguaje cuantizado como si tuviera 12 años" echo -e " ${AMARILLO}Pregunta:${RESET}" echo " \"$PROMPT\"" echo "" echo -e " ${AZUL}Respuesta:${RESET}" echo "" # El momento mágico del episodio: ollama run ollama run "$MODELO" "$PROMPT" echo "" echo -e " ${VERDE}✓${RESET} Consulta completada." echo "" # ============================================================================= # PASO 4 — Mensaje para abrir Open WebUI # ============================================================================= echo -e "${AZUL}────────────────────────────────────────────────────────${RESET}" echo -e "${AZUL} Paso 4 de 4: Interfaz web (Open WebUI)${RESET}" echo -e "${AZUL}────────────────────────────────────────────────────────${RESET}" echo "" echo " Tu modelo local ya funciona desde terminal." echo "" echo " Para usar la interfaz gráfica:" echo "" # Comprobar si Open WebUI está corriendo if curl -s http://localhost:3000 &>/dev/null; then echo -e " ${VERDE}✓${RESET} Open WebUI detectado en http://localhost:3000" echo "" echo " Abre tu navegador y visita:" echo -e " ${AZUL}→ http://localhost:3000${RESET}" echo "" echo " Crea tu cuenta (el primer usuario es administrador)." echo " Selecciona el modelo '${MODELO}' y empieza a chatear." else echo " Open WebUI no está corriendo aún." echo "" echo " Para levantarlo, ejecuta:" echo " ../02-instalacion/setup-openwebui.sh" echo "" echo " O directamente con Docker:" echo " docker run -d -p 3000:8080 \\" echo " -v open-webui:/app/backend/data \\" echo " --name open-webui --restart always \\" echo " ghcr.io/open-webui/open-webui:main" echo "" echo " Luego abre:" echo -e " ${AZUL}→ http://localhost:3000${RESET}" fi echo "" echo " 💡 Prueba a subir un PDF y pedir un resumen." echo " 💡 Pídele que te explique un concepto." echo " 💡 Juega. Experimenta. Rompe cosas." echo "" # ============================================================================= # CIERRE # ============================================================================= echo -e "${VERDE}╔══════════════════════════════════════════════════════╗${RESET}" echo -e "${VERDE}║ ✅ Laboratorio listo ║${RESET}" echo -e "${VERDE}║ ║${RESET}" echo -e "${VERDE}║ Tu máquina acaba de responder con inteligencia ║${RESET}" echo -e "${VERDE}║ genuina, sin pasar por ningún servidor externo, ║${RESET}" echo -e "${VERDE}║ sin enviar tus datos a nadie. ║${RESET}" echo -e "${VERDE}║ ║${RESET}" echo -e "${VERDE}║ Esa sensación no se olvida. 🎉 ║${RESET}" echo -e "${VERDE}╚══════════════════════════════════════════════════════╝${RESET}" echo "" echo " Próximo episodio (829): Skills imprescindibles para tu agente IA" echo " Vamos a enseñar al modelo a usar herramientas." echo "" echo " Nos oímos el jueves. Sed felices. Y seguid trasteando." echo ""