WESP: локальный LLM (llama-server + GGUF Qwen2.5-1.5B-Instruct) =============================================================== Запускайте скрипты из КОРНЯ репозитория (где лежат папки app/, data/, install/). 1) Каталоги (логи, кэш, models): Linux/macOS: sh install/assistant/create_layout.sh Windows: powershell -ExecutionPolicy Bypass -File install\assistant\create_layout.ps1 Если вы уже в папке install\, путь к скрипту другой: powershell -ExecutionPolicy Bypass -File assistant\download_model.ps1 По умолчанию корень: <репозиторий>/data/assistant Или: set WESP_ASSISTANT_DIR=... 2) Скачать веса (~1.3 GB для q5_k_m): pip install -U huggingface_hub sh install/assistant/download_model.sh или download_model.ps1 3) Запуск llama-server Linux/macOS: sh install/assistant/run_llama_server.sh Windows (авто, ~15 MiB с GitHub): powershell -ExecutionPolicy Bypass -File install\assistant\download_llama_server.ps1 Кладёт exe и все .dll из архива в <репо>\tools\ (run_llama_server.ps1 найдёт сам). Если llama-server сразу падает с кодом -1073741515 — не хватало DLL рядом с exe: powershell -ExecutionPolicy Bypass -File install\assistant\sync_llama_tools.ps1 «Всё сразу» (отдельное окно llama + WESP с LLM): powershell -ExecutionPolicy Bypass -File .\start_chat.ps1 Вручную: https://github.com/ggml-org/llama.cpp/releases — архив llama-*-bin-win-cpu-x64.zip, из него llama-server.exe в tools\ или в PATH, либо: $env:LLAMA_SERVER = "C:\полный\путь\llama-server.exe" Запуск из папки install: .\assistant\run_llama_server.ps1 Из корня репозитория: powershell -ExecutionPolicy Bypass -File install\assistant\run_llama_server.ps1 (Без .\ в начале PowerShell пытается загрузить «модуль» install — ошибка.) 4) Переменные для WESP (пример; API LLM в админке по умолчанию включён): set WESP_LLM_BASE_URL=http://127.0.0.1:8080 set WESP_LLM_MODEL=qwen2.5-1.5b-instruct-q5_k_m.gguf Выключить LLM: set WESP_ADMIN_LLM_ENABLED=0 или галка в админке → data/wesp_security_settings.json (admin_llm_enabled). Автозапуск llama-server вместе с python run.py / gunicorn (дочерний процесс, при выходе WESP завершается): по умолчанию ВКЛ; выключить: set WESP_LLM_AUTOSTART=0 или галка в админке (llm_autostart). Нужны: LLM включён в админке, файл .gguf в data/assistant/models/, llama-server в tools/ или LLAMA_SERVER=... Порт в run_* должен совпадать с WESP_LLM_BASE_URL. Имя модели в WESP_LLM_MODEL — как в API (часто имя файла .gguf). Чат в админке (экономия ресурсов llama-server): по умолчанию WESP_LLM_CHAT_MAX_TOKENS=512, WESP_LLM_CHAT_TIMEOUT_SEC=45 — см. config.py. Лимит «не чаще раз в N сек» для чата отдельный: WESP_ADMIN_LLM_CHAT_RATE_LIMIT_SEC (по умолчанию 0 — без паузы). Для сводки/ping: WESP_ADMIN_LLM_RATE_LIMIT_SEC (по умолчанию 12). Чат с данными БД в промпте (среда + PRAGMA по файлам SQLite, без строк таблиц ORM): галка в админке или WESP_LLM_CHAT_INCLUDE_DB_CONTEXT=1, ключ llm_chat_db_context в wesp_security_settings.json. Строки справочников — только «Снимок диагностики». 5) Slim-tools в чате (оркестратор LLM) По умолчанию ВКЛ на боевом config; в pytest выключено (WESP_LLM_TOOLS_ENABLED=0 в TestingConfig). Галка в админке «Инструменты в чате» / ключ llm_tools_enabled в wesp_security_settings.json / переменная WESP_LLM_TOOLS_ENABLED (env имеет приоритет над файлом). Модель может вызывать функции OpenAI-формата (нужна поддержка tool_calls в вашей сборке llama-server): slim_sql (только SELECT/WITH … SELECT, bind recipes|reports), slim_extract / slim_summary / slim_xsum / slim_sentiment / slim_emotions для server_log, client_log или raw_text. Режим SQL в UI/API: - preview — только EXPLAIN QUERY PLAN (без строк таблиц); - execute — чтение строк в SQLite через подключение mode=ro, лимит строк WESP_LLM_SQL_MAX_ROWS (по умолчанию 200). Лимиты и таймауты (см. также config.py): WESP_LLM_TOOL_MAX_ROUNDS, WESP_LLM_LOG_MAX_BYTES, WESP_LLM_LOG_TAIL_LINES. Платформы: прод обычно Ubuntu; разработка и тесты — Windows/macOS/Linux. Тесты не требуют живого llama-server. Если ваш llama-server отвечает 400 на поле tools в /v1/chat/completions — отключите инструменты: WESP_LLM_TOOLS_ENABLED=0 или галка в админке.