Tutorial: Cómo usar un LLM localmente con Mistral y Ollama (sin internet)

🔹 ¿Por qué usar un LLM local?
Antes de entrar en materia, vale la pena entender las ventajas:
- Sin conexión: puedes usarlo en entornos aislados o sin internet.
- Coste cero: no hay facturación por tokens como en los servicios en la nube.
- Flexibilidad: puedes personalizarlo y automatizar tareas fácilmente.
- Descarga Ollama desde 👉 [https://ollama.com/download](https://ollama.com/download)
🔹 Paso 1: Instalar Ollama
- Instálalo en tu sistema operativo (Windows, macOS o Linux).
- Verifica la instalación en el terminal (o el terminal integrado de VS Code):
- Tamaño de los documentos: si el archivo es muy grande, considera resumir por partes (el límite de contexto de Mistral es de 32K tokens).
[CODE:python] ollama --version [/CODE]
Si aparece un número de versión, Ollama está listo para usarse. ✅
[EMBED:image:https://res.cloudinary.com/deorujuue/image/upload/v1758562016/1_gfedzl.png]
🔹 Paso 2: Descargar Mistral
Para traer el modelo Mistral 7B a tu máquina:
[CODE:python] ollama pull mistral [/CODE]
Esto descargará el modelo y lo dejará disponible de manera local.
[EMBED:image:https://res.cloudinary.com/deorujuue/image/upload/v1758562297/2_tdabnu.png]
Para comprobar qué modelos tienes:
[CODE:python] ollama list [/CODE]
🔹 Paso 3: Verificar modelos instalados
Y si quieres más detalles:
[CODE:python] ollama show mistral [/CODE]
👉 Esto nos dice que usamos Mistral 7B Instruct, cuantizado (Q4_K_M).
🔹 Paso 4: Primer contacto con Mistral
Ejecuta el modelo directamente:
[CODE:python] ollama run mistral [/CODE]
Ahora escribe una pregunta, por ejemplo: Hola, puedo lograr a ser rico con IA? Obtendrás una respuesta directamente en el terminal. 🎉
[EMBED:image:https://res.cloudinary.com/deorujuue/image/upload/v1758562783/4_2_dkxki2.png]
🔹 Paso 5: Usar Mistral con Python para analizar un archivo TXT
Lo bueno de Python es que podemos automatizar análisis de documentos locales. 📄 Imagina que tienes un archivo en tu escritorio llamado documento.txt. Instala la librería necesaria:
[CODE:python] pip install requests [/CODE]
Código completo para el archivo TXT:
[CODE:python] import requests import json
Ruta del archivo TXT en el Escritorio
ruta_documento = r"C:\Users\XXX\Desktop\documento.txt"print("=== Chatbot Local con Mistral (TXT) ===\n")
Leer el documento
print(f"Leyendo el documento desde: {ruta_documento}") with open(ruta_documento, "r", encoding="utf-8") as f: contenido = f.read()Crear el prompt
prompt = f"Analiza el siguiente documento y haz un resumen en 5 puntos:\n\n{contenido}"print("\nEnviando el contenido a Mistral...\n")
Llamada al modelo
respuesta = requests.post( "http://localhost:11434/api/generate", json={ "model": "mistral", "prompt": prompt }, stream=True, )Mostrar respuesta progresivamente
print("=== Respuesta de Mistral ===\n") texto_final = "" for linea in respuesta.iter_lines(): if linea: datos = json.loads(linea.decode("utf-8")) if "response" in datos: fragmento = datos["response"] print(fragmento, end="", flush=True) texto_final += fragmentoprint("\n\n=== Fin del análisis TXT ===") [/CODE]
👉 Este script leerá tu documento, lo enviará a Mistral y mostrará un resumen en 5 puntos.
[EMBED:image:https://res.cloudinary.com/deorujuue/image/upload/v1758563055/Documento_txt_ntsosr.png]
🔹 Paso 6: Analizar un archivo PDF sin OCR
Si tu documento es un PDF con texto embebido (no escaneado), puedes hacer lo mismo con la librería PyPDF2.
[CODE:python] pip install PyPDF2 [/CODE]
Código completo para el archivo PDF:
[CODE:python] import requests import json import PyPDF2
Ruta del archivo PDF en el Escritorio
ruta_pdf = r"C:\Users\10057606\XXX\documento.pdf"print("=== Chatbot Local con Mistral (PDF) ===\n")
Leer el PDF
print(f"Leyendo el PDF desde: {ruta_pdf}") contenido = "" with open(ruta_pdf, "rb") as archivo: lector = PyPDF2.PdfReader(archivo) for pagina in lector.pages: texto = pagina.extract_text() if texto: contenido += texto + "\n"
Crear el prompt
prompt = f"Analiza el siguiente documento PDF y haz un resumen en 5 puntos:\n\n{contenido}"print("\nEnviando el contenido a Mistral...\n")
Llamada al modelo
respuesta = requests.post( "http://localhost:11434/api/generate", json={ "model": "mistral", "prompt": prompt}, stream=True, )
Mostrar respuesta progresivamente
print("=== Respuesta de Mistral ===\n") texto_final = "" for linea in respuesta.iter_lines(): if linea: datos = json.loads(linea.decode("utf-8")) if "response" in datos: fragmento = datos["response"] print(fragmento, end="", flush=True) texto_final += fragmentoprint("\n\n=== Fin del análisis del PDF ===") [/CODE]
👉 Este código leerá todas las páginas del PDF y pedirá a Mistral que lo resuma.
[EMBED:image:https://res.cloudinary.com/deorujuue/image/upload/v1758560721/Documento_pdf_s0lrsu.png]
🔹 Buenas prácticas y precauciones
- Codificación: usa siempre encoding="utf-8" para evitar problemas con acentos o caracteres especiales.
- Cuantización: los modelos cuantizados (Q4_K_M) consumen menos memoria pero pueden perder un poco de precisión.
- Uso responsable: recuerda que aunque sea local, un LLM puede generar errores o inventar datos (alucinaciones).
🔹 Conclusión
En este tutorial has aprendido a:
✔ Instalar Ollama y descargar Mistral. ✔ Verificar qué modelo tienes y qué versión usas. ✔ Ejecutar Mistral en el terminal (ollama run mistral). ✔ Crear scripts en Python para analizar TXT y PDF locales. ✔ Aplicar buenas prácticas para trabajar con LLMs en tu ordenador.
Ahora ya tienes un asistente IA local, privado y gratuito funcionando en tu máquina. 🚀