Skip to content

API-ключи

Каждая модель в списке моделей ссылается на свой ключ по имени; откуда берётся значение — решает подключённый бэкенд секретов. По умолчанию это переменные окружения и .env, а заготовку с подсказками печатает llmbroker env.

Те же подсказки приходят и вашему коду, готовыми: у каждого недостающего ключа в снимке пула есть поле help, и оно же есть в отчёте о синхронизации. Так что экран «чего не хватает» строится без вашего собственного справочника провайдеров.

Модель без ключа просто остаётся неактивной — пул работает на тех ключах, что есть. Это верно для любого источника ниже.

Окружение и .env

Брокер без собственного источника читает .env из рабочего каталога как запасной источник. Переменная окружения всегда важнее файла, а отсутствующий .env — просто пустой запасной источник. Никаких зависимостей: файл разбирается стандартной библиотекой (строки KEY=VALUE, комментарии #, без подстановок). Указать другой файл явно: secrets=llmbroker.Secrets("/etc/llmbroker.env").

Ключи из кода

secrets = llmbroker.DictSecrets({"GROQ_API_KEY": "gsk_..."})

secrets= брокера принимает и обычную функцию (имя) -> значение, синхронную или асинхронную — минимальный способ подключить любое своё хранилище.

AWS Secrets Manager

Установите extra llmbroker[aws] (Установка):

from llmbroker.aws import Secrets as AwsSecrets

async with llmbroker.AsyncBroker(
    "postgresql://host/db",
    secrets=AwsSecrets(region_name="us-east-1"),
) as broker:
    reply = await broker.ask("Привет")

Имена секретов — llmbroker/{имя ключа}; префикс настраивается.

HashiCorp Vault

Установите extra llmbroker[vault]:

from llmbroker.vault import Secrets as VaultSecrets

secrets = VaultSecrets(url="https://vault.example.com", token="s.xxx")

KV v2, путь llmbroker/{имя ключа}; точка монтирования настраивается через mount_point=.

Одна особенность — ключи на пользователя. В KV слэш это разделитель каталогов, поэтому в пути имя u-42/GROQ_API_KEY схлопывается в один сегмент u-42__GROQ_API_KEY. Вам это видно только при ручном просмотре хранилища; но ref, в котором __ уже есть, этот бэкенд отвергает — переименуйте ref или скоуп.

Ключи в БД

Брокер, созданный из БД (Broker("broker.db"), Postgres, MongoDB), хранит ключи в той же БД — см. Серверы и кластеры. Любую комбинацию можно собрать явно:

# БД для всего, но ключи из окружения
llmbroker.AsyncBroker("postgresql://host/db", secrets=llmbroker.Secrets())

Свой ключ на пользователя

В многопользовательском приложении ключ ищется сначала по пользователю, потом общий. Ключ пользователя кладут в то же хранилище под именем <скоуп>/<REF> — например u-42/GROQ_API_KEY, — и вызывающий, созданный через for_scope("u-42"), возьмёт его вместо общего. Подробно — scope.