CrewAI — Python-фреймворк для команд агентов: у каждого агента есть роль, цель и инструменты, а задачи выполняются последовательно или по иерархии. Модель задаётся каждому агенту отдельно через класс LLM, и CrewAI поддерживает OpenAI-совместимые endpoint. С Heli агенты одной команды могут работать на разных моделях — Claude, GPT, Gemini, DeepSeek — с одним ключом sk-heli-… и оплатой в рублях.
Настройка
- Зарегистрируйтесь на getheli.ru (подтверждение почты или вход через Google / Яндекс ID) и создайте ключ на вкладке «Ключи» кабинета.
- Установите пакет с поддержкой OpenAI: uv add "crewai[openai]" или pip install "crewai[openai]".
- Создайте LLM с custom_openai=True, base_url https://getheli.ru/v1 и api_key из переменной окружения. В model укажите полный слаг Heli, например anthropic/claude-sonnet-5.
- Флаг custom_openai нужен, чтобы префикс anthropic/ или google/ не был воспринят как выбор нативного провайдера CrewAI.
- Передайте LLM агенту через параметр llm. Разным агентам можно дать разные модели.
Пример команды из двух агентов
Агенты CrewAI делают много вызовов модели на одну задачу, поэтому расход растёт быстрее, чем в обычном чате. Отдельный ключ для команды агентов и бюджет на него во вкладке «Лимиты» помогают держать расход под контролем.
Модель можно задать и в YAML-конфигурации агентов, но для OpenAI-совместимого endpoint явный объект LLM в коде нагляднее: сразу видно, какая модель, адрес и таймаут используются у каждого агента.
import os
from crewai import Agent, Crew, LLM, Task
def heli_llm(model: str) -> LLM:
return LLM(
model=model,
custom_openai=True,
base_url="https://getheli.ru/v1",
api_key=os.environ["HELI_API_KEY"],
timeout=120,
max_retries=2,
)
researcher = Agent(role="Аналитик", goal="Собрать факты по теме {topic}",
backstory="Аккуратно проверяет данные",
llm=heli_llm("anthropic/claude-sonnet-5"))
writer = Agent(role="Редактор", goal="Сделать короткую сводку",
backstory="Пишет ясно и без воды",
llm=heli_llm("google/gemini-3.5-flash"))
research = Task(description="Собери 5 ключевых фактов о теме {topic}",
expected_output="Список фактов", agent=researcher)
summary = Task(description="Напиши сводку на 5 предложений по фактам",
expected_output="Короткий текст", agent=writer)
crew = Crew(agents=[researcher, writer], tasks=[research, summary])
print(crew.kickoff(inputs={"topic": "рынок LLM API в России"}))Какие модели выбрать
Агенту, который планирует и вызывает инструменты, нужна сильная модель. Агентам, которые форматируют, переводят или сокращают текст, хватит быстрой и недорогой.
Claude Sonnet 5 — планирование и инструменты.
Gemini 3.5 Flash — сводки и форматирование.
DeepSeek V4 Flash — черновики и массовые шаги.
Частые ошибки
- 401 — неверный или отозванный ключ; создайте новый на вкладке «Ключи».
- 402 insufficient_balance — закончился баланс; пополните его в кабинете.
- Модель не найдена или ошибка ключа другого провайдера — не включён custom_openai=True, и CrewAI выбрал нативный SDK вендора.
- 429 — агенты шлют запросы слишком часто; уменьшите параллельность или поднимите RPM ключа во вкладке «Лимиты».
- Таймауты — увеличьте timeout у LLM и сократите контекст задач.
Оплата — пополнение баланса.
Попробуйте Heli
Ключ sk-heli- появляется после подтверждения почты. Через Google и Яндекс — сразу в кабинете.