DEPENDENCIAS:
instalar requests, abre una terminal y escribe: pip install requests
instalar C++2019 redistributable https://learn.microsoft.com/es-es/cpp/windows/latest-supported-vc-redist?view=msvc-170
Instalar Python3 https://www.python.org/ftp/python/3.14.0/python-3.14.0-amd64.exe
ENTORNO:
Vamos a prepararlo todo, empieza por descargar el compilador de llama (el que se encarga de traducir lo que dice el modelo de lenguaje)
https://github.com/ggml-org/llama.cpp/releases asegúrate de descargar el que sea compatible con tu dispositivo (mi caso windows x64)
una vez descargado descomprime el .zip, llama a la carpeta: llama.cpp
Ahora descarga el modelo de lenguaje que mas te guste de https://huggingface.co/QuantFactory y mete tu modelo.gguf en la carpeta \llama.cpp
Para finalizar crea un documento de texto dentro de la carpeta \llama.cpp , llámalo iniciar.py y pega dentro el siguiente código (asegúrate en la línea 8 que el nombre de tu modelo es igual)
Antes de nada decir que se inicia muy fácil, abre la carpeta llama.cpp en la terminal y ejecuta python3 iniciar.py
Bienvenido a tu terminal interactiva <3
instalar requests, abre una terminal y escribe: pip install requests
instalar C++2019 redistributable https://learn.microsoft.com/es-es/cpp/windows/latest-supported-vc-redist?view=msvc-170
Instalar Python3 https://www.python.org/ftp/python/3.14.0/python-3.14.0-amd64.exe
ENTORNO:
Vamos a prepararlo todo, empieza por descargar el compilador de llama (el que se encarga de traducir lo que dice el modelo de lenguaje)
https://github.com/ggml-org/llama.cpp/releases asegúrate de descargar el que sea compatible con tu dispositivo (mi caso windows x64)
una vez descargado descomprime el .zip, llama a la carpeta: llama.cpp
Ahora descarga el modelo de lenguaje que mas te guste de https://huggingface.co/QuantFactory y mete tu modelo.gguf en la carpeta \llama.cpp
Para finalizar crea un documento de texto dentro de la carpeta \llama.cpp , llámalo iniciar.py y pega dentro el siguiente código (asegúrate en la línea 8 que el nombre de tu modelo es igual)
Antes de nada decir que se inicia muy fácil, abre la carpeta llama.cpp en la terminal y ejecuta python3 iniciar.py
Bienvenido a tu terminal interactiva <3
Python:
#!/usr/***/env python3
import os
import subprocess
import requests
import time
import sys
import signal
import json
MODEL = "llama3.gguf" # nombre exacto de tu modelo
HOST = "127.0.0.1"
PORT = 8080
SERVER_CMD = [
"llama-server.exe",
"-m", MODEL,
"--port", str(PORT),
"--ctx-size", "4096"
]
def start_server():
print(f"🚀 Iniciando llama-server con modelo {MODEL}...")
proc = subprocess.Popen(
SERVER_CMD,
stdout=subprocess.DEVNULL,
stderr=subprocess.STDOUT,
creationflags=subprocess.CREATE_NEW_PROCESS_GROUP
)
return proc
def wait_for_server():
print("⏳ Esperando a que el servidor arranque...", end="", flush=True)
for _ in range(30):
try:
r = requests.get(f"http://{HOST}:{PORT}/health")
if r.ok:
print(" ✅ Listo.\n")
return True
except:
pass
print(".", end="", flush=True)
time.sleep(1)
print("\n❌ No se pudo conectar al servidor.")
return False
def query_model(prompt):
try:
response = requests.post(
f"http://{HOST}:{PORT}/completion",
json={
"prompt": prompt,
"n_predict": 256,
"temperature": 0.7
},
timeout=120
)
data = response.json()
text = data.get("content", data.get("text", ""))
print(text.strip())
except Exception as e:
print(f"⚠️ Error consultando el modelo: {e}")
def is_command_not_found(stderr_output: str):
"""Detecta si PowerShell devolvió un error por comando inexistente"""
return "CommandNotFoundException" in stderr_output or "no se reconoce como" in stderr_output
def main():
server = start_server()
try:
if not wait_for_server():
server.terminate()
sys.exit(1)
print("💬 Terminal integrada lista.")
print(" - Escribe texto para hablar con el modelo.")
print(" - Usa comandos del sistema (dir, cd, cls, etc.) para ejecutarlos.")
print(" - Escribe 'exit' para salir.\n")
while True:
prompt = f"PS {os.getcwd()}> "
user_input = input(prompt).strip()
if not user_input:
continue
if user_input.lower() in ("exit", "salir", "quit"):
print("👋 Cerrando...")
break
if user_input.startswith("cd "):
try:
os.chdir(user_input[3:].strip('" '))
except FileNotFoundError:
print("⚠️ Carpeta no encontrada.")
continue
elif user_input in ("cls", "clear"):
os.system("cls")
continue
result = subprocess.run(
["powershell", "-Command", user_input],
capture_output=True,
text=True
)
if result.returncode == 0 and result.stdout.strip():
print(result.stdout.strip())
continue
elif is_command_not_found(result.stderr):
query_model(user_input)
elif result.stderr.strip():
print(result.stderr.strip())
else:
query_model(user_input)
except KeyboardInterrupt:
print("\n🛑 Interrumpido por el usuario.")
finally:
print("🧹 Cerrando servidor...")
try:
server.send_signal(signal.CTRL_BREAK_EVENT)
except Exception:
pass
time.sleep(1)
if __name__ == "__main__":
main()