Skip to content

Использование

Синхронный скрипт — самый простой сценарий. Для FastAPI и воркеров см. Асинхронность.

Пул моделей

Возьмите готовый пул бесплатных LLM и сформируйте .env с ключами:

llmbroker preset freetier > llms.toml
llmbroker env llms.toml > .env

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

llms.toml — обычный TOML-список моделей; его можно редактировать и дополнять своими endpoint'ами. Провайдеру, не терпящему параллельных запросов с одним ключом, укажите parallel = 1 в его записи.

Ключи не обязаны лежать в .env

AWS Secrets Manager, Vault, БД или своё хранилище — см. API-ключи.

Вызов брокера

llms = llmbroker.Broker("llms.toml")

reply = llms.ask("Переведи на английский: Привет мир")
print(reply.text)

# Полный messages API
reply = llms.chat([
    {"role": "system", "content": "Отвечай кратко."},
    {"role": "user",   "content": "Что такое Python?"},
])

Ограничить ожидание свободной модели:

try:
    reply = llms.ask("Вопрос", wait=5.0)   # максимум 5 секунд
except llmbroker.NoLLMAvailableError:
    print("Все LLM заняты")

wait=0 никогда не ждёт занятую или остывающую модель, но всё равно пробует каждую модель, свободную прямо сейчас, прежде чем сдаться. Закрывать брокер в скриптах не нужно; когда всё же нужно — см. Серверы и кластеры.

Оценка качества

Оценивайте ответы — брокер выучит, какие модели хороши для каких задач:

reply = llms.ask("Кратко перескажи этот пункт договора", operation="summarize")
reply.record_quality(0.9)   # 1.0 — хороший ответ, 0.0 — неудачный

Оценки копятся по паре (модель, операция): модель, стабильно слабая на данной операции, уходит в конец очереди. Демоция мягкая — если других моделей нет, она всё равно ответит — и снимается новыми хорошими оценками; отдельного «сброса» нет. Вызовы без operation= попадают в один общий bucket.

Пороги и размер окна оценок настраиваются — см. Optimizer.