Help:13-alpha deploy: Difference between revisions

From Svacer Wiki
m (удалена лишняя строка)
m (Дополнительные уточнения)
 
(2 intermediate revisions by one other user not shown)
Line 21: Line 21:
|-
|-
| <code>mcp</code> || Запуск Svacer с MCP-сервером  
| <code>mcp</code> || Запуск Svacer с MCP-сервером  
|-
| <code>"*"</code> || Запуск Svacer со всеми доступными профилями
|}
|}


Line 37: Line 39:
  docker compose -f docker-compose-with-ai-llm-mcp.yml --env-file ./llm-mcp.env ... --profile llm --profile mcp ... up -d
  docker compose -f docker-compose-with-ai-llm-mcp.yml --env-file ./llm-mcp.env ... --profile llm --profile mcp ... up -d


<!-- == <code>--profile no-ai</code> == -->
== <code>--profile ai</code> ==
<!-- Данный профиль не требует дополнительной конфигурации для запуска -->
Данный профиль не требует дополнительной конфигурации для запуска
 
== <code>--profile llm</code> ==
== <code>--profile llm</code> ==
Запуск Svacer с данным профилем даёт возможность подключить к ИИ-ассистенту внешний сервис моделей, поддерживающий OpenAI API. После успешного подключения ИИ-ассистент сможет использовать LLM для разметки и комментирования предупреждений. В списке разметки с помощью ИИ появятся модели доступные пользователю, чей ключ был передан при запуске.
Запуск Svacer с данным профилем даёт возможность подключить к ИИ-ассистенту внешний сервис моделей, поддерживающий OpenAI API. После успешного подключения ИИ-ассистент сможет использовать LLM для разметки и комментирования предупреждений. В списке разметки с помощью ИИ появятся модели доступные пользователю, чей ключ был передан при запуске.
Line 46: Line 49:
* установить в переменную окружения <code>LLM_TOKEN</code> значение ключа авторизации в сервис моделей;
* установить в переменную окружения <code>LLM_TOKEN</code> значение ключа авторизации в сервис моделей;
* при необходимости установить значения переменных <code>REG_TOKEN</code> или <code>REG_LOGIN</code> и <code>REG_PASSWORD</code> содержащих, соответственно, токен авторизации или логин и пароль администратора. Эти данные нужны для запуска компонентов поддержки LLM в ИИ-ассистенте. По умолчанию будут использоваться логин и пароль <code>admin:admin</code>;
* при необходимости установить значения переменных <code>REG_TOKEN</code> или <code>REG_LOGIN</code> и <code>REG_PASSWORD</code> содержащих, соответственно, токен авторизации или логин и пароль администратора. Эти данные нужны для запуска компонентов поддержки LLM в ИИ-ассистенте. По умолчанию будут использоваться логин и пароль <code>admin:admin</code>;
* при желании изменить отображаемое название сервиса в интерфейсе выбора моделей, можно установить значение переменной <code>REG_NAME</code>. По умолчанию: <code>llm</code>;
* при желании изменить отображаемое название сервиса в интерфейсе выбора моделей, можно установить значение переменной <code>REG_NAME</code>. По умолчанию <code>llm</code>;
* при необходимости ограничения списка доступных моделей, в переменную <code>MODEL_WHITELIST</code> нужно передать список названий моделей разделённых запятыми;
* при необходимости ограничения списка доступных моделей, в переменную <code>MODEL_WHITELIST</code> нужно передать список названий моделей разделённых запятыми;
* если производительность сервиса моделей позволяет параллельно обрабатывать несколько предупреждений, то можно установить значение переменной <code>MAX_PARALLEL_REQUESTS</code> в значение больше единицы;
* если производительность сервиса моделей позволяет параллельно обрабатывать несколько предупреждений, то можно установить значение переменной <code>MAX_PARALLEL_REQUESTS</code> в значение больше единицы;
Line 55: Line 58:
Описание переменных доступных для конфигурации запуска ИИ-ассистента с поддержкой внешнего сервиса моделей:
Описание переменных доступных для конфигурации запуска ИИ-ассистента с поддержкой внешнего сервиса моделей:
<pre>
<pre>
# URL of the OpenAI API-compatible LLM hosting service
# URL of the OpenAI API-compatible LLM model service
LLM_URL=
LLM_URL=


# LLM hosting service authorization token
# LLM model service authorization token
LLM_TOKEN=
LLM_TOKEN=


# Svacer admin authorization token, which will be used to perform LLM service registration requests in the AI assistant.
# Svacer admin authorization token for the operation of AI-assistant components
# Or with REG_LOGIN and REG_PASSWORD, if token is not set
# Or with REG_LOGIN and REG_PASSWORD, if token is not set
# REG_TOKEN=
# REG_TOKEN=


# Svacer admin login and password
# Svacer admin login and password for the operation of AI-assistant components
# REG_LOGIN=admin
# REG_LOGIN=admin
# REG_PASSWORD=admin
# REG_PASSWORD=admin


# ID of the service in the AI assistant
# ID of the service in the AI-assistant
# REG_ID=llm
# REG_ID=llm


# The name of the service displayed in the AI assistant
# The name of the service displayed in the AI-assistant
# REG_NAME=llm
# REG_NAME=llm


# Service description
# Service description
# REG_DESCRIPTION="LLM hosting service"
# REG_DESCRIPTION="LLM model service"


# Comma-separated list of available models. If not specified, all models available to the LLM hosting service user will be available.
# Comma-separated list of available models. If not specified, all models available to the LLM model service user will be available.
# MODEL_WHITELIST=
# MODEL_WHITELIST=


# Maximum number of simultaneous requests to process warning with LLM
# Maximum number of simultaneous requests to the LLM model service
# MAX_PARALLEL_REQUESTS=1
# MAX_PARALLEL_REQUESTS=1


Line 92: Line 95:


При запуске Svacer с профилем <code>llm</code> необходимо:
При запуске Svacer с профилем <code>llm</code> необходимо:
* установить в переменную окружения <code>MCP_PORT</code> номер сетевого порта на котором будет доступен MCP-сервер. По умолчанию будет назначен порт <code>8002</code>
* установить в переменную окружения <code>MCP_PORT</code> номер сетевого порта на котором будет доступен MCP-сервер. По умолчанию будет назначен порт <code>8002</code>;
* установить в переменную окружения <code>SVACER_MPC_TOKEN</code> строку с токеном авторизации, который необходимо будет указать в клиенте MCP-сервера;
* установить в переменную окружения <code>SVACER_MPC_TOKEN</code> строку с токеном авторизации, который необходимо будет указать в клиенте MCP-сервера;
* при необходимости доступа к MCP-серверу по адресу отличному от <code>localhost</code> (<code>127.0.0.1</code>) или при использовании DNS необходимо:
* при необходимости доступа к MCP-серверу по адресу отличному от <code>localhost</code> (<code>127.0.0.1</code>) или при использовании DNS необходимо:
** указать необходимый адрес/dns-имя в переменной <code>MCP_ALLOWED_HOSTS</code> в виде <code>172.17.0.1:*</code>/<code>some.domain:*</code>
** указать необходимый адрес/dns-имя в переменной <code>MCP_ALLOWED_HOSTS</code> в виде <code>172.17.0.1:*</code>/<code>some.domain:*</code>;
** указать необходимый адрес/dns-имя в переменной <code><nowiki>MCP_ALLOWED_ORIGINS</nowiki></code> в виде <code><nowiki>http://172.17.0.1:*</nowiki></code>/<code><nowiki>http://some.domain:*</nowiki></code>
** указать необходимый адрес/dns-имя в переменной <code><nowiki>MCP_ALLOWED_ORIGINS</nowiki></code> в виде <code><nowiki>http://172.17.0.1:*</nowiki></code>/<code><nowiki>http://some.domain:*</nowiki></code>;
* при необходимости можно настроить логин и пароль пользователя, от имени которого MCP-сервер будет выполнять запросы к Svacer. По умолчанию: <code>admin:admin</code>
* при необходимости можно настроить логин и пароль пользователя, от имени которого MCP-сервер будет выполнять запросы к Svacer. По умолчанию <code>admin:admin</code>.
 
После запуска mcp-сервер будет доступен по адресу <code><nowiki>http://localhost:{MCP_PORT}/mcp</nowiki></code>
После запуска mcp-сервер будет доступен по адресу <code><nowiki>http://localhost:{MCP_PORT}/mcp</nowiki></code>


Line 106: Line 110:


# Svacer admin login and password
# Svacer admin login and password
SVACER_LOGIN=admin
# SVACER_LOGIN=admin
SVACER_PASSWORD=admin
# SVACER_PASSWORD=admin


# External port that will be mapped by docker to the internal port 8000
# External port that will be mapped by docker to the internal port 8000
MCP_PORT=8002
# MCP_PORT=8002
 
MCP_ALLOWED_HOSTS=172.17.0.1:*
MCP_ALLOWED_ORIGINS=http://172.17.0.1:*


# Svacer server (container) URL
# DNS rebinding protection for FastMCP
# SVACER_URL=http://svacer:8080
# MCP_ENABLE_DNS_REBINDING_PROTECTION=false
# MCP_ALLOWED_HOSTS=svacer-mcp:*
# MCP_ALLOWED_ORIGINS=http://svacer-mcp:*


# HTTP timeout for requests to Svacer, seconds
# HTTP timeout for requests to Svacer, seconds

Latest revision as of 13:11, 25 May 2026

Демонстрационная сборка

Установка демонстрационной версии Svacer с поддержкой описанных функций доступна только в докере с использованием docker compose

docker compose

Для установки демонстрационной версии подготовлен специальный файл docker-compose-with-ai-llm-mcp.yml

curl -LO https://svacer.ispras.ru/extra/docker-compose-with-ai-llm-mcp.yml

При запуске Svacer с использованием данного compose-файла доступны профили:

Профиль Описание
Без профиля Запуск Svacer без поддержки ИИ-ассистента и MCP
ai Запуск Svacer с поддержкой ИИ-ассистента со встроенной моделью
llm Запуск Svacer с поддержкой ИИ-ассистента и возможностью подключения к нему внешних LLM для разметки предупреждений
mcp Запуск Svacer с MCP-сервером
"*" Запуск Svacer со всеми доступными профилями

Для запуска с использованием одного или нескольких профилей используется команда

docker compose -f docker-compose-with-ai-llm-mcp.yml ... --profile llm --profile mcp ... up -d

При этом необходимо учитывать, что

  • при запуске Svacer без профилей или только с профилем mcp функциональность разметки предупреждений с помощью ИИ будет возвращать ошибку;
  • запуск с профилями llm и mcp требует настройки переменных окружения (см. ниже).

Для удобства настройки переменных окружения может использоваться env-файл llm-mcp.env, который после установки необходимых значений может быть передан команде запуска

docker compose -f docker-compose-with-ai-llm-mcp.yml --env-file ./llm-mcp.env ... --profile llm --profile mcp ... up -d

--profile ai

Данный профиль не требует дополнительной конфигурации для запуска

--profile llm

Запуск Svacer с данным профилем даёт возможность подключить к ИИ-ассистенту внешний сервис моделей, поддерживающий OpenAI API. После успешного подключения ИИ-ассистент сможет использовать LLM для разметки и комментирования предупреждений. В списке разметки с помощью ИИ появятся модели доступные пользователю, чей ключ был передан при запуске.

При запуске Svacer с профилем llm необходимо:

  • установить в переменную окружения LLM_URL значение url, по которому контейнер svacer-validation-server сможет подключиться к сервису моделей, совместимому с OpenAI API;
  • установить в переменную окружения LLM_TOKEN значение ключа авторизации в сервис моделей;
  • при необходимости установить значения переменных REG_TOKEN или REG_LOGIN и REG_PASSWORD содержащих, соответственно, токен авторизации или логин и пароль администратора. Эти данные нужны для запуска компонентов поддержки LLM в ИИ-ассистенте. По умолчанию будут использоваться логин и пароль admin:admin;
  • при желании изменить отображаемое название сервиса в интерфейсе выбора моделей, можно установить значение переменной REG_NAME. По умолчанию llm;
  • при необходимости ограничения списка доступных моделей, в переменную MODEL_WHITELIST нужно передать список названий моделей разделённых запятыми;
  • если производительность сервиса моделей позволяет параллельно обрабатывать несколько предупреждений, то можно установить значение переменной MAX_PARALLEL_REQUESTS в значение больше единицы;
  • если производительность модели не позволяет обрабатывать одно предупреждение в минуту, то результаты обработки не будут получены. Чтобы увеличить время ожидания новых результатов модели, можно установить значение переменной MODEL_VALIDATION_MAXATTEMPTS в значение кратное 12 (двенадцати). Например, значение 60 == 5 минут.

Значения данных переменных могут быть сохранены в .env файл и переданы при запуске с помощью аргумента docker compose --env-file ./.env ... up -d

Описание переменных доступных для конфигурации запуска ИИ-ассистента с поддержкой внешнего сервиса моделей:

# URL of the OpenAI API-compatible LLM model service
LLM_URL=

# LLM model service authorization token
LLM_TOKEN=

# Svacer admin authorization token for the operation of AI-assistant components 
# Or with REG_LOGIN and REG_PASSWORD, if token is not set
# REG_TOKEN=

# Svacer admin login and password for the operation of AI-assistant components
# REG_LOGIN=admin
# REG_PASSWORD=admin

# ID of the service in the AI-assistant
# REG_ID=llm

# The name of the service displayed in the AI-assistant
# REG_NAME=llm

# Service description
# REG_DESCRIPTION="LLM model service"

# Comma-separated list of available models. If not specified, all models available to the LLM model service user will be available.
# MODEL_WHITELIST=

# Maximum number of simultaneous requests to the LLM model service
# MAX_PARALLEL_REQUESTS=1

# Maximum number of 5s attempts to get single warning result from LLM
# MODEL_VALIDATION_MAXATTEMPTS=12

--profile mcp

При запуске с данным профилем стартует контейнер с MCP-сервером, подключённый к текущему экземпляру Svacer.

При запуске Svacer с профилем llm необходимо:

  • установить в переменную окружения MCP_PORT номер сетевого порта на котором будет доступен MCP-сервер. По умолчанию будет назначен порт 8002;
  • установить в переменную окружения SVACER_MPC_TOKEN строку с токеном авторизации, который необходимо будет указать в клиенте MCP-сервера;
  • при необходимости доступа к MCP-серверу по адресу отличному от localhost (127.0.0.1) или при использовании DNS необходимо:
    • указать необходимый адрес/dns-имя в переменной MCP_ALLOWED_HOSTS в виде 172.17.0.1:*/some.domain:*;
    • указать необходимый адрес/dns-имя в переменной MCP_ALLOWED_ORIGINS в виде http://172.17.0.1:*/http://some.domain:*;
  • при необходимости можно настроить логин и пароль пользователя, от имени которого MCP-сервер будет выполнять запросы к Svacer. По умолчанию admin:admin.

После запуска mcp-сервер будет доступен по адресу http://localhost:{MCP_PORT}/mcp

Описание других переменных доступных для конфигурации запуска ИИ-ассистента с поддержкой внешнего сервиса моделей:

# Bearer token for /mcp clients in HTTP mode. Generate: openssl rand -hex 32
SVACER_MCP_TOKEN=

# Svacer admin login and password
# SVACER_LOGIN=admin
# SVACER_PASSWORD=admin

# External port that will be mapped by docker to the internal port 8000
# MCP_PORT=8002

# DNS rebinding protection for FastMCP
# MCP_ENABLE_DNS_REBINDING_PROTECTION=false
# MCP_ALLOWED_HOSTS=svacer-mcp:*
# MCP_ALLOWED_ORIGINS=http://svacer-mcp:*

# HTTP timeout for requests to Svacer, seconds
# SVACER_TIMEOUT=30

# Public URL of this MCP server (used for WWW-Authenticate, RFC 9728).
# Defaults to http://localhost:<SVACER_HTTP_PORT>. Set when running behind a reverse proxy.
# SVACER_MCP_RESOURCE_URL=https://mcp.example.com

# Subset of tools to register (comma-separated). Unset = all 8 tools.
# Available: get_projects, get_snapshots, get_warnings, get_markers,
#            get_project_stats, get_project_groups, get_advanced_file_preview, get_diff
# SVACER_TOOLS=get_projects,get_snapshots,get_markers