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.