Установка LLM-прокси

LLM-прокси — HTTP-сервис между Staffcop и языковой моделью. Принимает запросы от Staffcop, проверяет API-ключ, при необходимости ограничивает поток запросов, формирует промпт и передает его на LLM-сервер. Полученные от модели метаданные временно хранит и передает в Staffcop.

Требования

  • Ubuntu 22.04 / 24.04 (amd64);

  • пакеты: sudo, python3, locales, lsb-release, tzdata, curl;

  • deb-пакет: llm-proxy-*.deb.

Примечание

Управление сервисом работает только в системах с systemd.

Установка

  1. Скопируйте deb-пакет на целевой сервер.

  2. Установите зависимости:

sudo apt-get update && sudo apt-get install -y python3 locales lsb-release tzdata curl sudo
  1. Установите пакет:

sudo dpkg -i llm-proxy-*.deb
  1. Обработайте зависимости:

sudo apt-get install -f -y
  1. Настройте конфиг /etc/llm-proxy/config — см. Конфигурационный файл.

  2. Запустите сервис.

llm-proxy start

Конфигурационный файл

Конфигурация LLM-прокси хранится в файле /etc/llm-proxy/config. Изменения применяются после перезапуска сервиса командой sudo systemctl restart llm-proxy. Шаблон конфигурации — /etc/llm-proxy/config.template.

Переменная

Тип

По умолчанию

Описание

HOST

str

"0.0.0.0"

Адрес привязки HTTP-сервера

PORT

int

8082

Порт HTTP-сервера

LOG_LEVEL

str

"INFO"

Уровень логирования (DEBUG, INFO, WARNING, ERROR, CRITICAL)

LOG_FORMAT

str

"json"

Формат логов (json или text)

USE_HTTPS

bool

False

Включить HTTPS

SSL_CERT_PATH

str

"/etc/ssl/certs/llm/cert/cert.pem"

Путь к SSL-сертификату

SSL_KEY_PATH

str

"/etc/ssl/certs/llm/key/key.pem"

Путь к закрытому ключу SSL

LLM_PROXY_API_KEY

str

""

API-ключ для авторизации запросов к прокси

ANALYSIS_MIN_MERGED_REMAINS_THRESHOLD

float

0.6

Порог минимальной доли сохраненных значений после объединения чанков.
Значения от 0.0 до 1.0

Предупреждение

Не рекомендуется использовать ключ по умолчанию. Чтобы его сменить, выполните команду:

llm-proxy set-api-key

Управление сервисом

Командная строка

Примечание

Команды start, stop, restart и status работают только в системах с systemd.

Команда

Описание

llm-proxy start

Запустить сервис

llm-proxy stop

Остановить сервис

llm-proxy restart

Перезапустить сервис

llm-proxy status

Показать статус

llm-proxy run

Запустить в foreground (без systemd, Docker, отладка)

llm-proxy init

Инициализация

llm-proxy set-api-key

Установить API-ключ

Опасно

При перезапуске LLM-прокси данные в обработке будут утеряны.

Systemd

sudo systemctl start llm-proxy
sudo systemctl stop llm-proxy
sudo systemctl restart llm-proxy
sudo systemctl enable llm-proxy   # автозапуск при загрузке

Файлы и пути

Путь

Описание

/etc/llm-proxy/config

Конфигурационный файл

/etc/llm-proxy/config.template

Шаблон конфигурации

/var/log/llm-proxy/

Логи сервиса

/var/run/llm-proxy/

PID-файл

/var/lib/llm-proxy/

Данные

/usr/share/llm-proxy/

Файлы программы

/usr/share/llm-proxy/env/

Python virtualenv

/usr/bin/llm-proxy

Командная строка (symlink)

Логирование

Логи хранятся в /var/log/llm-proxy/:

  • process.log — обработка батчей;

  • server.log — запуск и остановка сервиса;

  • uvicorn.log — вывод веб-сервера uvicorn: HTTP-запросы, ошибки уровня веб-сервера.

Logrotate ежедневно создает новый файл лога, хранит пять последних копий. Дополнительно создает новый файл, если текущий превысил 200 МБ.

Каждая строка лога помечена trace_id — идентификатором запроса. Он берется из заголовка X-Trace-Id, который присылает Staffcop. По этому идентификатору можно найти все строки одного запроса.

В строках об упавших заданиях (process.task) и о начале, отмене и конце батча есть дополнительные поля:

  • task_id — идентификатор батча;

  • description — кто прислал задание (например, политика). У строк самого батча вместо description стоит прочерк.

Логи можно смотреть двумя способами. Первый — через журнал systemd:

journalctl -u llm-proxy -f

Второй — напрямую через файлы логов:

tail -f /var/log/llm-proxy/*.log

Устранение проблем

Сервис не запускается. Проверить синтаксис конфига:

python3 -c "exec(open('/etc/llm-proxy/config').read())"

Команды start/stop/restart требуют systemd. Для запуска без systemd используйте llm-proxy run.

Порт занят. Изменить PORT в конфиге.

HTTPS не работает. Проверить пути к сертификатам и права доступа.

Что дальше

После установки и настройки LLM-прокси подключите его к Staffcop и включите LLM-политики — см. раздел Подключение Staffcop к LLM-серверу.

Последнее обновление: 12.11.26