CrewAI
Подключение Hubris к CrewAI — фреймворку мультиагентных команд на Python. Один ключ на всех агентов, у каждого своя модель.
CrewAI — фреймворк для команд агентов на Python: у каждого агента своя роль, цель и инструменты, задачи выполняются последовательно или иерархически с агентом-менеджером. Модель задаётся на уровне агента, поэтому в одной команде дешёвые исполнители могут работать под дорогим руководителем.
Hubris подключается как OpenAI-совместимая точка. CrewAI разбирает первую часть имени модели как название провайдера — отсюда одна особенность в написании имени, о ней ниже.
Требования
Подключение
import os
from crewai import LLM
llm = LLM(
model="openai/anthropic/claude-sonnet-5",
base_url="https://api.hubris.pw/v1",
api_key=os.environ["HUBRIS_API_KEY"],
)Имя модели пишется с двойным префиксом: сначала openai/ — это указание CrewAI «говори по протоколу OpenAI с адресом из base_url», затем наш полный ID вместе с вендором. То есть openai/anthropic/claude-sonnet-5, а не anthropic/claude-sonnet-5.
Без первого префикса CrewAI примет anthropic/ за провайдера и попытается подключиться к Anthropic напрямую: без установленного дополнения упадёт с ImportError: Anthropic native provider not available, с установленным — уйдёт не к нам. Проверено: openai/anthropic/claude-sonnet-5 и openai/openai/gpt-5.6-luna работают, а anthropic/claude-sonnet-5 и openai/gpt-5.6-luna — нет.
Равнозначная запись без двойного префикса — явный провайдер: LLM(model="anthropic/claude-sonnet-5", provider="openai", base_url=..., api_key=...).
Адрес — именно api.hubris.pw, с api. в начале и /v1 в конце. Домен hubris.pw — это сайт и личный кабинет, запросы к API он не обслуживает.
Команда целиком
import os
from crewai import Agent, Crew, LLM, Task
BASE = "https://api.hubris.pw/v1"
KEY = os.environ["HUBRIS_API_KEY"]
# Дешёвая модель на рутину, дорогая — на выводы.
fast = LLM(model="openai/google/gemini-3.7-flash", base_url=BASE, api_key=KEY)
smart = LLM(model="openai/anthropic/claude-sonnet-5", base_url=BASE, api_key=KEY)
researcher = Agent(
role="Аналитик",
goal="Собрать факты по теме",
backstory="Дотошный аналитик, который проверяет источники.",
llm=fast,
)
writer = Agent(
role="Редактор",
goal="Написать связный текст по собранным фактам",
backstory="Редактор, который пишет коротко и по делу.",
llm=smart,
)
crew = Crew(
agents=[researcher, writer],
tasks=[
Task(description="Собери ключевые факты по теме", agent=researcher,
expected_output="Список фактов"),
Task(description="Напиши по фактам короткий обзор", agent=writer,
expected_output="Текст на 5–7 предложений"),
],
)
print(crew.kickoff())Разные модели у разных агентов — главный способ управлять счётом: рутину отдают дешёвой модели, а флагман оставляют на шаг, где качество действительно нужно.
Выбор моделей
ID берите из каталога — полностью, вместе с вендором, и не забывайте про openai/ впереди.
| Строка для CrewAI | Когда подходит |
|---|---|
openai/google/gemini-3.7-flash | сбор данных, классификация, рутинные шаги |
openai/anthropic/claude-sonnet-5 | рассуждение, длинный контекст, работа с инструментами |
openai/deepseek/deepseek-v4-pro | недорогое рассуждение и код |
openai/openai/gpt-5.6-luna | универсальный выбор для сложных задач |
Каталог у нас открыт без ключа — список можно посмотреть прямо в браузере: api.hubris.pw/v1/models.
Инструменты
Агенты с инструментами требуют от модели поддержки function calling. Берите модель, у которой в карточке каталога в supported_parameters есть tools. Модель без такой поддержки в CrewAI будет описывать действие текстом вместо вызова инструмента.
Расходы
Команда агентов делает много запросов на один запуск: каждый шаг задачи — отдельный вызов, а история передаётся заново. Счёт растёт быстрее, чем в обычном чате.
- Заведите под проект отдельный ключ и поставьте ему дневной лимит — так неудачный цикл агентов не съест весь баланс.
- Смотрите разбор по запросам в расходах: там видно, какой агент и какая модель дали основной расход.
Решение проблем
ImportError: ... native provider not available при создании LLM
Имя модели без префикса openai/. CrewAI разбирает первую часть имени как провайдера: увидев anthropic/ или google/, он пытается подключиться к этому вендору напрямую и просит установить его дополнение. Нужно openai/anthropic/claude-sonnet-5 либо provider="openai".
Ошибка «модель не найдена» от Hubris
Обратная ситуация: префикс openai/ есть, а вендор в ID потерян. openai/gpt-5.6-luna CrewAI превратит в запрос модели gpt-5.6-luna — такого ID у нас нет, ответ будет 404 model_not_found. Нужно openai/openai/gpt-5.6-luna.
Агент не вызывает инструменты
Модель без поддержки tools. Проверьте карточку модели в каталоге.
Ошибка про недостаточный баланс
Пополните баланс в кабинете — от 300 ₽, через СБП, банковской картой или по счёту для юридических лиц.
Проверено на CrewAI 1.15.20, 9 сентября 2026.Что дальше
- Каталог моделей — ID для строк
LLM(model=...). - Управление ключами — отдельный ключ с лимитом под запуски агентов.
- Расходы — детализация по запросам и моделям.
- Chat Completions — что именно уходит в Hubris из CrewAI.
Обновлено: