Dernière activité 3 days ago

Script del Episodio 827 - atareao con Linux

atareao's Avatar atareao a révisé ce gist 3 days ago. Aller à la révision

1 file changed, 225 insertions

primera-consulta.sh(fichier créé)

@@ -0,0 +1,225 @@
1 + #!/bin/bash
2 + # =============================================================================
3 + # primera-consulta.sh — Tu primera consulta a un modelo local
4 + # =============================================================================
5 + #
6 + # Uso:
7 + # chmod +x primera-consulta.sh
8 + # ./primera-consulta.sh
9 + #
10 + # Descripción:
11 + # Script paso a paso que guía al oyente en su primera interacción con un
12 + # modelo de lenguaje local. Cubre los 4 pasos del Bloque 6 del episodio:
13 + #
14 + # Paso 1 — Verificar que Ollama está instalado y corriendo
15 + # Paso 2 — Descargar un modelo pequeño (qwen2.5:3b)
16 + # Paso 3 — Hacer una consulta desde terminal con ollama run
17 + # Paso 4 — Abrir Open WebUI en http://localhost:3000
18 + #
19 + # Es el script estrella del episodio. El momento en que el oyente descubre
20 + # que su máquina puede responder con inteligencia genuina, sin internet.
21 + #
22 + # Requisitos:
23 + # - Ollama instalado (ver 02-instalacion/setup-ollama.sh)
24 + # - Conexión a internet (solo para el Paso 2, descarga del modelo)
25 + # - ~3 GB de espacio libre para el modelo
26 + #
27 + # =============================================================================
28 +
29 + set -euo pipefail
30 +
31 + # Colores para el output
32 + VERDE='\033[0;32m'
33 + AMARILLO='\033[1;33m'
34 + AZUL='\033[0;34m'
35 + ROJO='\033[0;31m'
36 + RESET='\033[0m'
37 +
38 + echo -e "${AZUL}╔══════════════════════════════════════════════════════╗${RESET}"
39 + echo -e "${AZUL}║ 🚀 Tu primera consulta a un modelo local ║${RESET}"
40 + echo -e "${AZUL}║ Episodio 827 — Recursos IA: el botiquín del ║${RESET}"
41 + echo -e "${AZUL}║ explorador ║${RESET}"
42 + echo -e "${AZUL}╚══════════════════════════════════════════════════════╝${RESET}"
43 + echo ""
44 +
45 + # =============================================================================
46 + # PASO 1 — Verificar que Ollama está instalado y corriendo
47 + # =============================================================================
48 + echo -e "${AZUL}────────────────────────────────────────────────────────${RESET}"
49 + echo -e "${AZUL} Paso 1 de 4: Verificar Ollama${RESET}"
50 + echo -e "${AZUL}────────────────────────────────────────────────────────${RESET}"
51 + echo ""
52 +
53 + # 1a. Comprobar que el binario de Ollama existe
54 + echo -n " Comprobando instalación de Ollama... "
55 + if command -v ollama &>/dev/null; then
56 + echo -e "${VERDE}✓${RESET}"
57 + echo " Versión: $(ollama --version 2>/dev/null || echo 'desconocida')"
58 + else
59 + echo -e "${ROJO}✗${RESET}"
60 + echo ""
61 + echo " ERROR: Ollama no está instalado."
62 + echo ""
63 + echo " Para instalar Ollama, ejecuta:"
64 + echo " curl -fsSL https://ollama.com/install.sh | sh"
65 + echo ""
66 + echo " O usa el script guiado:"
67 + echo " ../02-instalacion/setup-ollama.sh"
68 + echo ""
69 + exit 1
70 + fi
71 + echo ""
72 +
73 + # 1b. Comprobar que el servicio está corriendo (vía API)
74 + echo -n " Comprobando que el servicio está activo... "
75 + if curl -s http://localhost:11434/api/tags &>/dev/null; then
76 + echo -e "${VERDE}✓${RESET}"
77 + echo " API REST respondiendo en http://localhost:11434"
78 + else
79 + echo -e "${AMARILLO}⚠${RESET}"
80 + echo ""
81 + echo " El binario está instalado pero el servicio no responde."
82 + echo ""
83 + echo " Arranca el servicio con:"
84 + echo " sudo systemctl start ollama"
85 + echo ""
86 + echo " O manualmente:"
87 + echo " ollama serve &"
88 + echo ""
89 + echo " Luego vuelve a ejecutar este script."
90 + echo ""
91 + exit 1
92 + fi
93 + echo ""
94 +
95 + # 1c. Mostrar modelos ya descargados (si los hay)
96 + MODELOS_EXISTENTES=$(ollama list 2>/dev/null | tail -n +2 | wc -l)
97 + if [ "$MODELOS_EXISTENTES" -gt 0 ]; then
98 + echo " Modelos disponibles actualmente:"
99 + ollama list 2>/dev/null | tail -n +2 | while read -r line; do
100 + echo " • $line"
101 + done
102 + else
103 + echo " No hay modelos descargados todavía."
104 + fi
105 + echo ""
106 +
107 + # =============================================================================
108 + # PASO 2 — Descargar un modelo pequeño
109 + # =============================================================================
110 + echo -e "${AZUL}────────────────────────────────────────────────────────${RESET}"
111 + echo -e "${AZUL} Paso 2 de 4: Descargar un modelo pequeño${RESET}"
112 + echo -e "${AZUL}────────────────────────────────────────────────────────${RESET}"
113 + echo ""
114 +
115 + # Usamos qwen2.5:3b como modelo recomendado para empezar
116 + # Es pequeño (~2 GB), rápido, y sorprendentemente capaz
117 + MODELO="qwen2.5:3b"
118 +
119 + echo " Modelo recomendado: ${AMARILLO}${MODELO}${RESET}"
120 + echo " Tamaño aproximado: ~2 GB"
121 + echo " Ideal para: hardware con 8-16 GB de RAM"
122 + echo ""
123 +
124 + # Comprobar si ya está descargado
125 + if ollama list 2>/dev/null | grep -q "^${MODELO}\s"; then
126 + echo -e " ${VERDE}✓${RESET} El modelo ya está descargado."
127 + else
128 + echo " Descargando modelo... (esto puede tardar según tu conexión)"
129 + echo " ☕ Momento café."
130 + echo ""
131 +
132 + # El comando estrella: ollama pull
133 + ollama pull "$MODELO"
134 +
135 + echo ""
136 + echo -e " ${VERDE}✓${RESET} Modelo descargado correctamente."
137 + fi
138 + echo ""
139 +
140 + # =============================================================================
141 + # PASO 3 — Hacer una consulta desde terminal
142 + # =============================================================================
143 + echo -e "${AZUL}────────────────────────────────────────────────────────${RESET}"
144 + echo -e "${AZUL} Paso 3 de 4: Preguntar desde la terminal${RESET}"
145 + echo -e "${AZUL}────────────────────────────────────────────────────────${RESET}"
146 + echo ""
147 +
148 + # Prompt diseñado para ser didáctico y mostrar la capacidad del modelo
149 + PROMPT="Explícame qué es un modelo de lenguaje cuantizado como si tuviera 12 años"
150 +
151 + echo -e " ${AMARILLO}Pregunta:${RESET}"
152 + echo " \"$PROMPT\""
153 + echo ""
154 + echo -e " ${AZUL}Respuesta:${RESET}"
155 + echo ""
156 +
157 + # El momento mágico del episodio: ollama run
158 + ollama run "$MODELO" "$PROMPT"
159 +
160 + echo ""
161 + echo -e " ${VERDE}✓${RESET} Consulta completada."
162 + echo ""
163 +
164 + # =============================================================================
165 + # PASO 4 — Mensaje para abrir Open WebUI
166 + # =============================================================================
167 + echo -e "${AZUL}────────────────────────────────────────────────────────${RESET}"
168 + echo -e "${AZUL} Paso 4 de 4: Interfaz web (Open WebUI)${RESET}"
169 + echo -e "${AZUL}────────────────────────────────────────────────────────${RESET}"
170 + echo ""
171 +
172 + echo " Tu modelo local ya funciona desde terminal."
173 + echo ""
174 + echo " Para usar la interfaz gráfica:"
175 + echo ""
176 +
177 + # Comprobar si Open WebUI está corriendo
178 + if curl -s http://localhost:3000 &>/dev/null; then
179 + echo -e " ${VERDE}✓${RESET} Open WebUI detectado en http://localhost:3000"
180 + echo ""
181 + echo " Abre tu navegador y visita:"
182 + echo -e " ${AZUL}→ http://localhost:3000${RESET}"
183 + echo ""
184 + echo " Crea tu cuenta (el primer usuario es administrador)."
185 + echo " Selecciona el modelo '${MODELO}' y empieza a chatear."
186 + else
187 + echo " Open WebUI no está corriendo aún."
188 + echo ""
189 + echo " Para levantarlo, ejecuta:"
190 + echo " ../02-instalacion/setup-openwebui.sh"
191 + echo ""
192 + echo " O directamente con Docker:"
193 + echo " docker run -d -p 3000:8080 \\"
194 + echo " -v open-webui:/app/backend/data \\"
195 + echo " --name open-webui --restart always \\"
196 + echo " ghcr.io/open-webui/open-webui:main"
197 + echo ""
198 + echo " Luego abre:"
199 + echo -e " ${AZUL}→ http://localhost:3000${RESET}"
200 + fi
201 +
202 + echo ""
203 + echo " 💡 Prueba a subir un PDF y pedir un resumen."
204 + echo " 💡 Pídele que te explique un concepto."
205 + echo " 💡 Juega. Experimenta. Rompe cosas."
206 + echo ""
207 +
208 + # =============================================================================
209 + # CIERRE
210 + # =============================================================================
211 + echo -e "${VERDE}╔══════════════════════════════════════════════════════╗${RESET}"
212 + echo -e "${VERDE}║ ✅ Laboratorio listo ║${RESET}"
213 + echo -e "${VERDE}║ ║${RESET}"
214 + echo -e "${VERDE}║ Tu máquina acaba de responder con inteligencia ║${RESET}"
215 + echo -e "${VERDE}║ genuina, sin pasar por ningún servidor externo, ║${RESET}"
216 + echo -e "${VERDE}║ sin enviar tus datos a nadie. ║${RESET}"
217 + echo -e "${VERDE}║ ║${RESET}"
218 + echo -e "${VERDE}║ Esa sensación no se olvida. 🎉 ║${RESET}"
219 + echo -e "${VERDE}╚══════════════════════════════════════════════════════╝${RESET}"
220 + echo ""
221 + echo " Próximo episodio (829): Skills imprescindibles para tu agente IA"
222 + echo " Vamos a enseñar al modelo a usar herramientas."
223 + echo ""
224 + echo " Nos oímos el jueves. Sed felices. Y seguid trasteando."
225 + echo ""
Plus récent Plus ancien