#!/usr/bin/env python3 """Pone el cerebro en Ollama sobre GPU y mata el razonamiento. Se ejecuta DENTRO del flatpak, con la app CERRADA (si no, al salir puede reescribir los ajustes con lo que tenia en memoria): flatpak run --command=python3 io.github.qwersyk.Newelle//master \ ~/COFRE/CODERS/JARVIS/config/set_backend.py Por que Ollama y no el llamacpp interno: el llama.cpp que empaqueta el flatpak es el prebuilt de CPU, sin CUDA, asi que el modelo corria entero en procesador. Ollama ya esta en GPU. Los dos son locales igual. Medido el 10 ago 2026 con qwen3.5:4b, misma pregunta: think=true 41.2 s 749 tokens (casi todos de monologo interno) think=false 2.5 s 44 tokens De paso deja sana la ruta de llamacpp por si se vuelve a ella: el mismo razonamiento se apaga alli con --reasoning-budget 0, y el contexto por defecto (0 = el del modelo) abria 262144 por slot, unos 10 GB de RAM. """ import json import sys from gi.repository import Gio SCHEMA = "io.github.qwersyk.Newelle" MODELO = "qwen3.5:4b" AJUSTES_OLLAMA = { "endpoint": "http://localhost:11434", "model": MODELO, "custom_model": False, "thinking": False, # lo que baja de 41 s a 2.5 s "native_tool_calling": True, "serve": False, # el servicio del sistema ya esta levantado } AJUSTES_LLAMACPP = { "custom_args": "--reasoning-budget 0", "ctx": 8192, } def main(): settings = Gio.Settings.new(SCHEMA) try: llm = json.loads(settings.get_string("llm-settings") or "{}") except json.JSONDecodeError: llm = {} # merge, no reemplazo: ahi viven los ajustes de todos los proveedores llm.setdefault("ollama", {}).update(AJUSTES_OLLAMA) llm.setdefault("llamacpp", {}).update(AJUSTES_LLAMACPP) settings.set_string("llm-settings", json.dumps(llm)) settings.set_string("language-model", "ollama") Gio.Settings.sync() # releer de gsettings, no fiarse de lo que acabamos de escribir guardado = json.loads(settings.get_string("llm-settings")) motor = settings.get_string("language-model") ollama = guardado.get("ollama", {}) print(f"language-model: {motor}") print(f"modelo: {ollama.get('model')}") print(f"thinking: {ollama.get('thinking')}") print(f"llamacpp: {guardado.get('llamacpp', {}).get('custom_args')} " f"ยท ctx {guardado.get('llamacpp', {}).get('ctx')}") ok = (motor == "ollama" and ollama.get("model") == MODELO and ollama.get("thinking") is False) print("verificado" if ok else "FALLO: no quedo como se pidio") return 0 if ok else 1 if __name__ == "__main__": sys.exit(main())