LlamaIndex
Подключение Hubris к LlamaIndex — фреймворку для RAG и агентов на Python. Штатным классом OpenAILike, без своего пакета.
LlamaIndex — фреймворк для RAG и агентов на Python: индексирует документы, ищет по ним и строит агентов поверх любой языковой модели. Hubris подключается штатным классом OpenAILike — отдельный пакет ставить не нужно.
Требования
Установка
pip install -U llama-index-llms-openai-like
export HUBRIS_API_KEY="sk-gw-ваш-ключ"Подключение
import os
from llama_index.llms.openai_like import OpenAILike
llm = OpenAILike(
model="anthropic/claude-sonnet-5",
api_base="https://api.hubris.pw/v1",
api_key=os.environ["HUBRIS_API_KEY"],
context_window=1_000_000,
is_chat_model=True,
is_function_calling_model=True,
)
print(llm.complete("Столица Франции —"))Три параметра OpenAILike задаются вручную и по умолчанию неверны для наших моделей.
is_chat_model=True — иначе запрос уйдёт на устаревший /v1/completions вместо чата. is_function_calling_model=True — иначе агент не увидит инструменты, даже если модель их поддерживает. context_window — по умолчанию 3900 токенов, и длинный контекст обрежется на подходе; ставьте значение из карточки модели в каталоге.
Адрес — именно api.hubris.pw, с api. в начале и /v1 в конце. Домен hubris.pw — это сайт и личный кабинет, запросы к API он не обслуживает.
Стриминг
for chunk in llm.stream_complete("Посчитай от 1 до 5"):
print(chunk.delta, end="", flush=True)Агент с инструментами
import asyncio
from llama_index.core.agent.workflow import FunctionAgent
from llama_index.core.tools import FunctionTool
def get_weather(city: str) -> str:
"""Вернуть погоду в городе."""
return f"В городе {city} +12 и дождь"
agent = FunctionAgent(
tools=[FunctionTool.from_defaults(fn=get_weather)],
llm=llm,
system_prompt="Ты помощник. Пользуйся инструментами, когда это уместно.",
)
async def main():
response = await agent.run("Какая погода в Казани?")
print(response)
asyncio.run(main())agent.run() — асинхронный: его нужно await-ить внутри запущенного цикла событий, как выше. Вызов asyncio.run(agent.run(...)) напрямую упадёт с RuntimeError: no running event loop.
Берите модель, у которой в карточке каталога есть tools — например anthropic/claude-sonnet-5, openai/gpt-5.6-luna или google/gemini-3.8-flash.
Эмбеддинги для индекса
Для поиска по документам нужен эмбеддер. Он подключается тем же ключом и адресом:
from llama_index.embeddings.openai import OpenAIEmbedding
embed_model = OpenAIEmbedding(
model_name="openai/text-embedding-3-small",
api_base="https://api.hubris.pw/v1",
api_key=os.environ["HUBRIS_API_KEY"],
)pip install -U llama-index-embeddings-openaiВыбор моделей
| ID | Когда подходит |
|---|---|
anthropic/claude-sonnet-5 | основной выбор для агентов и сложного RAG |
openai/gpt-6-astra | самые трудные задачи |
google/gemini-3.8-flash | быстрые и дешёвые ответы на большом объёме |
deepseek/deepseek-v4-pro | недорогая альтернатива |
openai/text-embedding-3-small | эмбеддинги для индекса |
ID берите из каталога полностью, вместе с вендором. Каталог открыт без ключа: api.hubris.pw/v1/models.
Почему без отдельного пакета
Разработчики LlamaIndex больше не принимают новые пакеты интеграций в свой репозиторий — PR с новым pyproject.toml закрывается автоматически. Для сервисов с OpenAI-совместимым API у них для этого и есть OpenAILike.
То есть описанный выше способ — не обходной путь, а тот, который они предусмотрели. Ставить что-то дополнительное не нужно.
Решение проблем
Ответ обрывается на середине длинного контекста
Не задан context_window. По умолчанию у OpenAILike он равен 3900 токенам, и всё, что длиннее, обрезается до отправки. Поставьте значение из карточки модели.
Агент не вызывает инструменты
Не задан is_function_calling_model=True — без него LlamaIndex считает модель неспособной к вызовам и не передаёт их. Проверьте заодно, что у модели в каталоге есть tools.
NotFoundError: 404 Not Found без текста про модель
Не задан is_chat_model=True — запрос ушёл на /v1/completions, которого у Hubris нет. Наши модели работают через чат. Если в ответе есть model_not_found и ID модели — дело в ID, см. ниже.
Модель не найдена
404, code: model_not_found. ID должен совпадать с каталогом символ в символ, вместе с вендором перед косой чертой: claude-sonnet-5 без anthropic/ не примется.
Ошибка авторизации
401, code: invalid_api_key. Ключ неверный или отозван. Он начинается на sk-gw-, без пробелов по краям; целиком виден только при создании. Новый — в разделе «Ключи».
Ошибка про недостаточный баланс
Пополните баланс в кабинете — от 300 ₽, через СБП, банковской картой или по счёту для юридических лиц.
Проверено на LlamaIndex (llama-index-core 0.14.24, llama-index-llms-openai-like 0.8.0), 9 сентября 2026.Что дальше
- Каталог моделей — ID, окна контекста и возможности.
- Управление ключами — отдельный ключ с лимитом под индексацию.
- Расходы — детализация по запросам и моделям.
- Chat Completions — что именно уходит в Hubris из LlamaIndex.
Обновлено: