COMRAD404 / HOWTO

Как создать ИИ-агента на CrewAI

Пошаговое руководство по созданию первого ИИ-агента на CrewAI: установка, настройка модели, минимальный код, проверка результата и частые ошибки.

Короткий ответ

Создать ИИ-агента на CrewAI можно за 30–45 минут: установить Python и пакет crewai, настроить доступ к LLM через переменные окружения, описать Agent, Task и Crew, а затем запустить kickoff(). Для первого рабочего прототипа достаточно одного агента и одной задачи. Метод хорошо подходит для внутренних автоматизаций, исследований, черновой аналитики и сценариев, где агенту нужно рассуждать по шагам. Он плохо подходит для жестко детерминированных процессов, систем с очень низкой задержкой, задач с высокими требованиями к воспроизводимости и случаев, где достаточно одного обычного вызова модели без агентной оркестрации.

В CrewAI агент — это не «магический бот», а объект с ролью, целью, контекстом и ограничениями. Практически всегда полезно сначала собрать минимальную версию: один агент, один входной параметр, один ожидаемый формат ответа. Если такой каркас работает стабильно, уже потом имеет смысл добавлять инструменты, второй агент, доступ к файлам или вебу.

Когда CrewAI не лучший выбор: если вам нужен простой чат с моделью; если результат должен быть полностью одинаковым при каждом запуске; если нельзя передавать данные во внешний API; если у команды нет времени на тестирование промптов, ошибок и ограничений модели.

Что понадобится

Минимальный стек для старта небольшой. Ниже — то, без чего первый агент обычно не запускается.

Компонент Зачем нужен Комментарий
Python Среда выполнения Практически удобнее начинать с актуальной версии Python 3.10+
CrewAI Фреймворк агентов Нужен пакет crewai; инструменты подключайте отдельно только при необходимости
API-ключ модели Доступ к LLM Если используете OpenAI, ключ создается в https://platform.openai.com/api-keys
Терминал и редактор Запуск и правка кода Подойдет любой привычный редактор и оболочка командной строки
Документация CrewAI Проверка актуального API Нужна на случай изменений параметров, моделей и интеграций

Если вы только проверяете идею, не подключайте сразу поиск, браузер, базы данных и файловые инструменты. Каждый новый источник данных увеличивает число точек отказа: права доступа, сетевые ошибки, формат входа, лишние токены и риски утечки данных.

Пошаговый план

1. Создайте папку проекта и виртуальное окружение

Изолированное окружение избавляет от конфликтов зависимостей. Для прототипа этого достаточно.

mkdir crewai-agent && cd crewai-agent

python -m venv .venv

source .venv/bin/activate

.venvScriptsActivate.ps1

Первая команда для Linux и macOS, вторая — для PowerShell на Windows. Если окружение не активировано, пакет может установиться не туда, где вы его ожидаете.

2. Установите CrewAI

Для минимального сценария достаточно основного пакета.

pip install crewai

Если позже понадобятся инструменты для работы с файлами, поиском или внешними системами, подключайте их отдельно и только после того, как базовый агент уже работает. Это упрощает отладку: вы сразу понимаете, что ошибка в логике агента, а не в интеграции.

3. Настройте доступ к модели

CrewAI должен понимать, к какой LLM обращаться. Самый безопасный базовый способ — хранить ключ в переменной окружения, а не в коде.

export OPENAI_API_KEY=ваш_ключ

$env:OPENAI_API_KEY="ваш_ключ"

Если вы используете другой провайдер или локальную модель, сверяйтесь с текущей схемой настройки в документации CrewAI и вашего провайдера. Не закладывайте в проект предположение, что «модель подхватится сама»: это одна из самых частых причин неочевидимых сбоев.

4. Соберите минимального агента

Создайте файл main.py. Для первого запуска не пытайтесь сделать «универсального помощника». Лучше задайте узкую роль и понятный результат.

Импорт: from crewai import Agent, Task, Crew, Process

Агент: researcher = Agent(role="Исследователь", goal="Подготовить точную справку по теме {topic}", backstory="Пишет кратко, не выдумывает источники и отмечает сомнительные места", verbose=True, allow_delegation=False)

Задача: task = Task(description="Собери краткую справку по теме {topic}. Дай 5 тезисов и 3 источника, если они действительно известны модели.", expected_output="5 тезисов и список источников с пометкой уровня уверенности", agent=researcher)

Команда: crew = Crew(agents=[researcher], tasks=[task], process=Process.sequential, verbose=True)

Запуск: result = crew.kickoff(inputs={"topic": "CrewAI"})

Вывод: print(result)

Здесь есть несколько принципиальных моментов. Во-первых, роль отвечает за тип поведения. Во-вторых, goal задает, что именно считается полезным результатом. В-третьих, expected_output — самый недооцененный параметр: именно он снижает хаос в ответе. Чем точнее вы опишете структуру результата, тем меньше времени уйдет на ручную правку.

5. Запустите файл и проверьте базовый вывод

После сохранения файла выполните:

python main.py

Если все настроено корректно, вы получите текстовый результат задачи. На этом этапе не оценивайте «качество интеллекта». Сначала проверьте три вещи: процесс действительно запускается; агент видит входные данные; формат ответа примерно совпадает с тем, что вы запросили.

Если вместо ответа вы видите ошибку аутентификации, почти всегда проблема в переменной окружения или в настройке провайдера модели. Если ответ слишком расплывчатый, исправляйте не код, а формулировки goal, description и expected_output.

6. Ужесточите контракт ответа

После первого успешного запуска обычно начинается реальная работа. В продовых и полу-продовых сценариях нельзя полагаться на свободный текст без ограничений. Полезные приемы:

  • Просите ровно тот формат, который вы готовы обработать дальше.
  • Запрещайте агенту выдумывать факты и источники, если уверенность низкая.
  • Ограничивайте объем: например, «не более 5 тезисов» или «один абзац на пункт».
  • Сначала оставляйте allow_delegation=False, пока у вас один агент.
  • Не подключайте внешние инструменты, если задачу можно решить внутренними знаниями модели.

Если вам нужен доступ к актуальным данным, тогда уже имеет смысл расширять агента инструментами. Но это отдельный шаг, который лучше делать после того, как основной контур — роль, цель, входы и ожидаемый результат — стабилен.

7. Подготовьте сценарий под реальную задачу

Когда каркас заработал, адаптируйте его под свой кейс. Для маркетинга это может быть подготовка брифа по теме. Для внутренней аналитики — выжимка из нескольких документов. Для инженерной команды — черновик технического резюме. В каждом случае меняется не принцип, а формулировка роли, ограничений и формата ответа.

Хорошее практическое правило: если вы не можете коротко объяснить, что именно агент должен вернуть на выходе, вы еще не готовы к автоматизации этой задачи в CrewAI.

Типичные ошибки

  • Слишком общий агент. Формулировки вроде «умный помощник по любым вопросам» почти всегда дают нестабильный результат.
  • Попытка сразу строить multi-agent систему. Для старта это обычно лишняя сложность. Один агент и одна задача позволяют быстро изолировать ошибки.
  • Секреты в коде. API-ключи не должны лежать в main.py или в репозитории.
  • Отсутствие ограничений по ответу. Если не задан expected_output, модель почти наверняка начнет писать в свободной форме.
  • Ожидание актуальных фактов без инструментов. Базовая модель не обязана знать сегодняшние данные, внутренние документы или состояние ваших систем.
  • Игнорирование цены и задержки. Чем больше агентов, шагов и вызовов, тем выше расход и дольше выполнение.
  • Отсутствие ручной валидации. Нельзя считать результат правильным только потому, что он выглядит уверенно.

Отдельно стоит отметить ошибку проектирования: использовать CrewAI там, где нужен обычный Python-скрипт с четкими правилами. Если задача решается набором детерминированных условий, агентная абстракция может только усложнить поддержку.

Как проверить результат

Проверка должна быть не «нравится или не нравится», а формальной. Для первого агента достаточно такого чек-листа.

Проверка Что считать нормой Что делать при сбое
Структура ответа Ответ совпадает с форматом из expected_output Уточнить задачу и сократить свободу формулировок
Повторяемость На одном и том же входе смысл ответа остается близким Сделать задачу уже и убрать двусмысленности
Фактическая точность Известные вам факты не искажены Добавить инструкцию не выдумывать и проверять уверенность
Пустой или плохой ввод Агент не «галлюцинирует», а просит уточнение Явно описать поведение при нехватке данных
Ошибки среды Понятно, почему произошел сбой: ключ, сеть, импорт Проверить окружение, зависимости и переменные
  1. Прогоните агента минимум на трех тестовых темах: известная тема, узкая тема, тема с неполным вводом.
  2. Сравните ответы с заранее ожидаемым шаблоном, а не только с субъективным впечатлением.
  3. Проверьте, не появились ли вымышленные ссылки, особенно если агент пишет «источники» без доступа к вебу.
  4. Логируйте вход, задачу и результат хотя бы на уровне консоли, пока не убедитесь в стабильности.

Если вы планируете встроить агента в сервис, добавьте еще один слой проверки: отдельный код, который валидирует ответ до передачи дальше по цепочке.

FAQ

Можно ли создать агента на CrewAI без multi-agent архитектуры?

Да. Для первого проекта это даже предпочтительно. Один агент, одна задача и один вызов kickoff() дают самый понятный путь к работающему результату.

Когда CrewAI избыточен?

Когда задача решается одним запросом к модели или обычной программной логикой. Если вам не нужна оркестрация ролей, задач и инструментов, простой вызов LLM будет легче сопровождать.

Нужны ли инструменты сразу?

Нет. Если модель может ответить без доступа к внешним данным, сначала оставьте агента без инструментов. Подключайте инструменты только для реальной необходимости: чтения файлов, поиска, вызова API или работы с корпоративными системами.

Можно ли использовать не OpenAI?

Да, но конкретная схема зависит от провайдера и вашей версии CrewAI. Перед интеграцией проверяйте актуальную документацию на https://docs.crewai.com/. Не переносите настройки между провайдерами «по аналогии» без проверки параметров.

Какой главный признак, что агент описан правильно?

Вы можете коротко ответить на три вопроса: что агент делает, какой вход он получает и в каком формате обязан вернуть результат. Если хотя бы один из пунктов расплывчатый, сначала уточните контракт, а потом усложняйте систему.

Где смотреть актуальные изменения по CrewAI?

Базовые точки — документация https://docs.crewai.com/ и пакет на PyPI https://pypi.org/project/crewai/. Для Python используйте https://www.python.org/downloads/. Для ключей OpenAI — https://platform.openai.com/api-keys.

Читайте также

LINKS