Hubris
Фреймворки

OpenAI SDK для Python

Использовать официальный openai пакет с Hubris — поменяйте base_url и api_key.

OpenAI SDK для Python

Официальный пакет openai от OpenAI работает с Hubris как drop-in replacement: меняете два параметра при инициализации клиента, остальной код не трогаете.

Установка

pip install openai

Минимальная версия — 1.0+ (новый API клиента). Старый stub-стиль (openai.api_key = ...) не поддерживаем.

Подключение

from openai import OpenAI

client = OpenAI(
    base_url="https://api.hubris.pw/v1",
    api_key="sk-gw-...",
)

Лучше через переменную окружения:

import os
from openai import OpenAI

client = OpenAI(
    base_url="https://api.hubris.pw/v1",
    api_key=os.environ["HUBRIS_API_KEY"],
)

Базовый запрос

response = client.chat.completions.create(
    model="anthropic/claude-haiku-4.5",
    messages=[{"role": "user", "content": "Привет"}],
)
print(response.choices[0].message.content)

Стриминг

stream = client.chat.completions.create(
    model="anthropic/claude-haiku-4.5",
    messages=[{"role": "user", "content": "Расскажи историю"}],
    stream=True,
)
for chunk in stream:
    delta = chunk.choices[0].delta.content
    if delta:
        print(delta, end="", flush=True)

Tool calling

Обычный OpenAI-API:

tools = [{
    "type": "function",
    "function": {
        "name": "get_weather",
        "description": "Текущая погода в городе",
        "parameters": {
            "type": "object",
            "properties": {"city": {"type": "string"}},
            "required": ["city"],
        },
    },
}]

response = client.chat.completions.create(
    model="anthropic/claude-haiku-4.5",
    messages=[{"role": "user", "content": "Какая погода в Москве?"}],
    tools=tools,
)
print(response.choices[0].message.tool_calls)

Async-клиент

from openai import AsyncOpenAI

client = AsyncOpenAI(
    base_url="https://api.hubris.pw/v1",
    api_key="sk-gw-...",
)

async def main():
    response = await client.chat.completions.create(
        model="anthropic/claude-haiku-4.5",
        messages=[{"role": "user", "content": "Привет"}],
    )
    print(response.choices[0].message.content)

Что не работает

client.embeddings.create(), client.images.generate(), client.audio.*, client.files.*, client.batches.* — соответствующих эндпоинтов в Hubris сейчас нет, эти вызовы упадут с 404. Появятся в ближайших обновлениях.

Что дальше