hubris

LiteLLM

Подключение Hubris к LiteLLM — единый интерфейс к сотне провайдеров, через который работают DSPy, OpenAI Agents SDK и Open Interpreter.

LiteLLM — Python-библиотека и прокси с единым вызовом completion() для сотни провайдеров. Поверх неё построены DSPy, OpenAI Agents SDK, Open Interpreter и необязательный режим CrewAI, поэтому подключение Hubris к LiteLLM открывает его сразу во всех этих инструментах.

Требования

Установка

pip install -U litellm
export HUBRIS_API_KEY="sk-gw-ваш-ключ"

Подключение

Hubris говорит на протоколе OpenAI, поэтому LiteLLM нужно сказать «это OpenAI-совместимая точка» и дать адрес:

import os
import litellm

response = litellm.completion(
    model="openai/anthropic/claude-sonnet-5",
    api_base="https://api.hubris.pw/v1",
    api_key=os.environ["HUBRIS_API_KEY"],
    messages=[{"role": "user", "content": "Привет!"}],
)
print(response.choices[0].message.content)

Имя модели пишется с двойным префиксом: сначала openai/ — это указание LiteLLM «говори по протоколу OpenAI», затем наш полный ID вместе с вендором. То есть openai/anthropic/claude-sonnet-5 и openai/openai/gpt-5.6-luna, а не anthropic/claude-sonnet-5 и не openai/gpt-5.6-luna.

Первый openai/ LiteLLM снимает и отправляет на Hubris ровно то, что осталось. Без него LiteLLM разберёт ID по вендору сам: anthropic/… уйдёт в Anthropic мимо api_base, а openai/gpt-5.6-luna превратится в gpt-5.6-luna — и Hubris ответит «модель не найдена».

Адрес — именно api.hubris.pw, с api. в начале и /v1 в конце. Домен hubris.pw — это сайт и личный кабинет, запросы к API он не обслуживает.

Стриминг и инструменты

Работают штатными средствами LiteLLM, ничего специального для Hubris не нужно:

for chunk in litellm.completion(
    model="openai/anthropic/claude-sonnet-5",
    api_base="https://api.hubris.pw/v1",
    api_key=os.environ["HUBRIS_API_KEY"],
    messages=[{"role": "user", "content": "Посчитай до пяти."}],
    stream=True,
):
    print(chunk.choices[0].delta.content or "", end="", flush=True)

Вызов инструментов передаётся параметром tools в формате OpenAI, структурированный вывод — response_format. Какие параметры поддерживает конкретная модель, видно в поле supported_parameters ответа GET /v1/models.

Прокси LiteLLM

В config.yaml прокси-сервера модель Hubris описывается той же строкой с двойным префиксом:

model_list:
  - model_name: claude-sonnet
    litellm_params:
      model: openai/anthropic/claude-sonnet-5
      api_base: https://api.hubris.pw/v1
      api_key: os.environ/HUBRIS_API_KEY

Запускается как обычно — litellm --config config.yaml (нужен pip install "litellm[proxy]"); клиенты обращаются к прокси по короткому model_name.

Рекомендуемые модели

IDКогда подходит
anthropic/claude-sonnet-5агенты, сложные многошаговые задачи
anthropic/claude-haiku-4.5быстрые и дешёвые цепочки
google/gemini-3.7-flashдлинный контекст, мультимодальность
deepseek/deepseek-v4-flash-0731массовая обработка текста по минимальной цене

В LiteLLM каждый из них пишется с openai/ впереди: openai/google/gemini-3.7-flash.

Встроенный провайдер «Hubris»

Мы отправили в LiteLLM отдельный провайдер — pull request на ревью. После приёма модели можно будет писать как hubris/anthropic/claude-sonnet-5, с ключом из переменной HUBRIS_API_KEY и без api_base. Пока PR не принят, работает описанный выше способ — это то же самое подключение.

Решение проблем

NotFoundError: … Модель не найдена: gpt-5.6-luna или AnthropicException - 404 Not Found

Забыт первый префикс openai/. LiteLLM разобрал ID по вендору сам: у OpenAI-моделей отрезал openai/ и отправил на Hubris короткое имя, а anthropic/… попытался отправить напрямую в Anthropic. Пишите openai/ + полный ID из каталога.

BadRequestError: … Неверный API-ключ (код 401)

Ключ отозван или скопирован с ошибкой; LiteLLM показывает нашу ошибку 401 под своим типом BadRequestError. Проверьте, что api_key передан явно или что переменная HUBRIS_API_KEY видна процессу; ключ начинается с sk-gw-.

Модель не найдена при правильном префиксе

ID после openai/ должен совпадать с каталогом символ в символ, включая вендора. Короткие имена без вендора Hubris не принимает.

Проверено на LiteLLM 1.100.0, 9 сентября 2026.

Что дальше

  • Каталог моделей — ID для подключения
  • GET /v1/models — поле supported_parameters, чтобы включать инструменты и размышление только там, где они поддерживаются
  • Управление ключами — отдельный ключ под каждое приложение
  • CrewAI — там имя модели пишется тем же двойным префиксом

Обновлено: