Перейти к содержанию

Переменные окружения

Полный перечень переменных окружения по сервисам — см. Конфигурация системы.

Общие переменные для всех сервисов

Переменная Описание
LOG_LEVEL Уровень логирования: DEBUG, INFO, WARN, ERROR
LOG_FORMAT Формат логов: json, text
ENVIRONMENT Окружение: development, production

LLM Gateway Adapter

Переменные окружения сервиса llm-gateway-adapter — адаптера между внешним LLM Gateway (LiteLLM, Portkey) и AppSec.AIGate. Назначение сервиса — см. Guardrail Adapter и Интеграция с LiteLLM.

Канонические переменные

Переменная По умолч. Описание
SERVICE_NAME llm-gateway-adapter Идентификатор сервиса (используется в логах и метриках)
SERVICE_VERSION из CI (COMMIT_HASH), иначе dev Версия сборки
ENVIRONMENT dev dev / staging / production
SERVICE_PORT 8000 Порт контейнера
LOG_LEVEL INFO DEBUG / INFO / WARNING / ERROR
LOG_FORMAT json json (прод) или text (локально)
OTEL_ENABLED false Включить OpenTelemetry distributed tracing
OTEL_EXPORTER_OTLP_ENDPOINT http://otel-collector.infra.svc.cluster.local:4317 OTLP gRPC-коллектор

Прикладные переменные (префикс ADAPTER_)

Переменная По умолч. Описание
ADAPTER_AIGATE_URL http://api-gateway:8080 Base URL api-gateway для форвардинга guardrail-проверки
ADAPTER_AIGATE_REQUEST_PATH /_aigate/v1/adapters/litellm Канонический scan-эндпоинт api-gateway (Feature 030). Для Portkey — /_aigate/v1/adapters/portkey. Профиль выбирается явно (ADAPTER_AIGATE_PROFILE_ID), фиктивный guardrail-провайдер не нужен.
ADAPTER_AIGATE_PROFILE_ID "" id профиля типа scan_only/dual (создаётся в Admin UI). Передаётся заголовком X-AIGate-Profile-ID. Заменяет прежнюю резолюцию профиля через dummy-провайдер. Пусто → заголовок не отправляется.
ADAPTER_AIGATE_TENANT_ID default Значение заголовка X-Tenant-ID, отправляемого в api-gateway. Устаревшая переменная: в текущей версии (single-tenant) шлюз принимает и игнорирует этот заголовок. Оставлена для обратной совместимости; можно не задавать.
ADAPTER_AIGATE_TEAM_HEADER X-LLM-Team Имя заголовка для передачи team в api-gateway (policy-маршрутизация)
ADAPTER_AIGATE_HTTP_TIMEOUT_CONNECT_SEC 0.5 httpx connect-timeout до api-gateway
ADAPTER_AIGATE_HTTP_TIMEOUT_READ_SEC 1.0 httpx read-timeout. На стендах с реальными ML-детекторами обычно поднимают до 5.0 — см. note ниже
ADAPTER_AIGATE_HTTP_TIMEOUT_WRITE_SEC 0.5 httpx write-timeout
ADAPTER_AIGATE_HTTP_TIMEOUT_POOL_SEC 0.5 httpx connection-pool acquire timeout

Удалённые переменные

В ранних версиях адаптера существовали переменные ADAPTER_HOST, ADAPTER_PORT, ADAPTER_LOG_LEVEL, ADAPTER_LOG_FORMAT, ADAPTER_AIGATE_TIMEOUT. Они заменены на канонические SPEC-имена либо (для ADAPTER_AIGATE_TIMEOUT) на четыре phase-specific переменных, перечисленных выше. Defaults сохраняют historic fail-fast budget (≤ 4.5 с worst-case с 2 attempts + 0.5 с backoff), вписываясь в LiteLLM guardrail window (5–10 с).

Когда тюнить timeouts на k8s с реальными ML-детекторами

На стендах с реальными ML-детекторами (Wildguard-Qwen3-4b + Qwen3Guard-Stream-4B) под нагрузкой суммарная задержка pipeline может превысить read-timeout по умолчанию (1.0 с) — адаптер ловит httpx.ReadTimeout → fail-secure BLOCK → клиент получает security check unavailable. Обычно достаточно поднять read до 5.0:

# Helm values: deploy/aigate/dev/llm-gateway-adapter.yaml
envVars:
  - name: ADAPTER_AIGATE_HTTP_TIMEOUT_READ_SEC
    value: "5.0"

Адаптер при старте логирует retry_budget_exceeds_litellm_default warning, если суммарный budget переваливает за 5 с — в этом случае увеличьте LiteLLM request_timeout соответственно либо снизьте per-phase timeouts. Pydantic validator (gt=0) отклоняет нулевые/отрицательные значения с понятной ошибкой при старте — pod не crash-loop'ит молча.

Python SDK (appsec-aigate)

Переменные окружения тонкого клиента Python SDK. Назначение и примеры — см. Интеграция через Python SDK.

Переменная По умолч. Описание
AIGATE_URL — (обязательна) Базовый URL api-gateway
AIGATE_TENANT_ID — (обязательна) Значение заголовка X-Tenant-ID, требуемое SDK. В текущей версии (single-tenant) шлюз принимает и игнорирует его; изоляции по нему нет, задавайте любое стабильное значение (например, default).
AIGATE_PROFILE_ID — (обязательна) Профиль по умолчанию (scan_only/dual)
AIGATE_TEAM Значение заголовка X-LLM-Team (policy-маршрутизация)
AIGATE_TEAM_HEADER_NAME X-LLM-Team Имя заголовка team
AIGATE_FAIL_MODE open open (пропустить + warning) или closed (бросить BackendUnavailableError)
AIGATE_PROFILE_CACHE_TTL_SEC 60 TTL кэша профиля
AIGATE_TIMEOUT_CONNECT_SEC 0.5 httpx connect-timeout
AIGATE_TIMEOUT_READ_SEC 5.0 httpx read-timeout
AIGATE_TIMEOUT_WRITE_SEC 0.5 httpx write-timeout
AIGATE_TIMEOUT_POOL_SEC 0.5 httpx pool-timeout
AIGATE_CIRCUIT_BREAKER_THRESHOLD 5 Число подряд неудач до размыкания цепи
AIGATE_CIRCUIT_BREAKER_RECOVERY_SEC 30 Период проверки восстановления
AIGATE_LOG_PROMPTS false Логировать тексты промптов/ответов (152-ФЗ — включать осознанно)
AIGATE_DEGRADED_BUFFER_SIZE 1000 Лимит буфера degraded-событий (только метаданные)
AIGATE_OTEL_ENABLED false Включить OpenTelemetry-трейсинг (экстра [otel])
AIGATE_PROMETHEUS_ENABLED false Включить Prometheus-метрики (экстра [prometheus])
AIGATE_APP_NAME / AIGATE_APP_VERSION (автоопределение) Идентификация приложения в событиях

Без аутентификации

SDK не передаёт токенов. Доступ к api-gateway ограничивается сетевой изоляцией. Заголовок X-Tenant-ID шлюз принимает и игнорирует (single-tenant), для маршрутизации политик используется X-LLM-Team (опц.).