Использование
Синхронный скрипт — самый простой сценарий. Для 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.