Гайд · TNWS AI
Как создать агента CrewAI с role, goal и backstory
Минимальный агент CrewAI с обязательными role, goal и backstory, ограничением max_iter, точным заданием и критериями проверки результата.
Задача и применимость
Актуальный поисковый запрос: «как создать первого агента CrewAI role goal backstory». Создать одного агента-редактора для узкой операции: сократить вымышленное уведомление, не добавляя новых фактов. Официальная справка CrewAI называет role, goal и backstory критическими параметрами, а max_iter ограничивает число итераций до выдачи лучшего ответа. max_iter не является гарантией правильности, цены или времени исполнения; сетевой клиент и весь процесс требуют собственных лимитов. Материал сверён 26 сентября 2026 года с официальной документацией CrewAI 1.15.22. Примеры предназначены для Python 3.10+; закрепите версию пакета, потому что сигнатуры и поведение развиваются. Все коды, статусы и даты в примерах вымышлены.
Пошаговая настройка
- Задайте роль как функцию, а goal — как проверяемый результат, а не общую похвалу модели.
- В backstory оставьте только релевантный контекст и запрет на выдуманные факты.
- Передайте модель через переменную среды и поставьте небольшой
max_iterдля теста. - Создайте Task с конкретным expected_output и запустите Crew последовательно на вымышленном входе.
Перед запуском установите CrewAI по официальной инструкции. Для примеров с агентом задайте CREWAI_MODEL и учётные данные провайдера через переменные среды; доступность модели зависит от вашего аккаунта. Flow-примеры не требуют LLM и должны сначала проходить как детерминированные тесты. Не включайте действующие ключи и реальные клиентские данные в исходник или prompt.
Готовый шаблон
import os
from crewai import Agent, Crew, Process, Task
editor = Agent(
role="Редактор уведомлений",
goal="Сокращать текст до одного предложения без новых фактов",
backstory="Вы сохраняете даты и коды буквально и не придумываете причины.",
llm=os.environ["CREWAI_MODEL"],
max_iter=3,
allow_delegation=False,
)
task = Task(
description="Сократи: 'Заявка R-7 готова. Получение 5 октября.'",
expected_output="Одно предложение с R-7 и датой 5 октября",
agent=editor,
)
result = Crew(agents=[editor], tasks=[task], process=Process.sequential).kickoff()
print(result)
Конкретный вход и ожидаемый результат
Вход содержит только два факта: заявка R-7 готова и получение назначено на 5 октября. Ожидаемый ответ — одно предложение, содержащее ровно код R-7 и дату 5 октября. Слова о доставке, оплате, адресе или переносе даты считаются неподтверждёнными. Формулировка может отличаться, но оба буквальных маркера обязаны сохраниться.
Как фактически проверить
Проверьте результат регулярным выражением на точный код R-7, отдельной проверкой даты и списком запрещённых неподтверждённых сущностей. Затем дайте негативный вход без даты: агент должен сохранить отсутствие даты, а не достроить её. Сравните три прогона одной модели. Если хотя бы один добавляет факт, не лечите проблему только увеличением max_iter: уточните задание и поставьте детерминированный выходной контроль.
Проверяйте не только итоговую строку, но и путь исполнения: входные данные, вызванный метод или Task, промежуточный результат и финальное преобразование. Успешный Python-процесс не доказывает правильность фактов LLM. Для агентных сценариев сделайте не менее трёх прогонов фиксированной модели и укажите долю прохождения критериев, а не выбирайте лучший ответ вручную.
Критерии приёмки
- Python-код проходит синтаксическую проверку, а зависимости и версия зафиксированы.
- Положительный пример даёт заранее описанный результат без новых фактов.
- Отрицательный пример завершается явным отказом либо контролируемой веткой.
- Ни один шаг не получает больше данных или полномочий, чем требуется задаче.
- После обновления CrewAI или модели тот же набор выполняется повторно.
Протокол воспроизводимости
Сохраните дату, версию CrewAI, версию Python, идентификатор модели для agent-примеров и обезличенный вход. Для Flow зафиксируйте порядок событий и финальный state; для Task — TaskOutput, число попыток и результат guardrail. Не записывайте секреты, системные prompts и персональные данные без необходимости. Если ошибка плавающая, классифицируйте её как неверный маршрут, неверный аргумент, исключение Python или неподтверждённую генерацию — эти случаи исправляются по-разному.
Регрессионный набор
Не ограничивайтесь одним удачным примером. Добавьте стандартный вход, отсутствующее обязательное поле, похожий идентификатор, пустую строку и слишком длинное значение. Для каждого заранее укажите ожидаемое событие, состояние и финальный результат. В агентных задачах отдельно оценивайте правильность фактов и соблюдение формата; красивый текст не компенсирует неверный код. В Flow проверяйте, какой метод действительно вызван и сколько раз: одинаковая финальная строка может скрыть ошибочный маршрут. При изменении модели не переносите прежние показатели автоматически. При изменении схемы state предусмотрите миграцию сохранённых записей. Ошибка одного теста должна блокировать автоматическое внешнее действие, но не обязана останавливать независимые процессы системы. После исправления обязательно повторите весь набор, а не только упавший случай. Такой набор превращает статью в повторяемую инструкцию, а не в демонстрацию единственного счастливого пути.
Типичные ошибки и чего не делать
- Не заменяйте goal расплывчатым «пиши хорошо».
- Не вставляйте секреты клиента в backstory.
- Не считайте max_iter лимитом токенов или стоимости.
Не увеличивайте retries, max_iter или таймаут после каждой ошибки автоматически. Ограничение останавливает цикл, но не исправляет отсутствующий факт или плохую схему. Не выполняйте платежи, удаление, публикацию и другие необратимые действия только на основании текста модели. Добавляйте детерминированную проверку и, где требуется, человеческое подтверждение.
FAQ
Какие поля обязательны?
Документация выделяет role, goal и backstory как критические параметры.
Что делает max_iter?
Ограничивает итерации агента до выдачи лучшего ответа.
Гарантирует ли backstory фактическую точность?
Нет, факты проверяют после генерации.
Официальные источники
Частые вопросы
Какие поля обязательны?
Документация выделяет role, goal и backstory как критические параметры.
Что делает max_iter?
Ограничивает итерации агента до выдачи лучшего ответа.
Гарантирует ли backstory фактическую точность?
Нет, факты проверяют после генерации.
Читайте также
Как хранить данные в словарном state CrewAI Flow
Словарное состояние CrewAI Flow: запись кода и счётчика, чтение в следующем шаге, точный итог и защита от отсутствующего ключа.
Как объединить события CrewAI Flow через or_ и and_
Проверяемая разница or_ и and_ в CrewAI Flow: запуск после любого события или после всех, пример состояния и критерии выбора.
Как передать результат одной задачи CrewAI в другую через context
Две последовательные задачи CrewAI с context: извлечение кода, формирование ответа, конкретный эталон и проверка отсутствия посторонних данных.
Комментарии
Пока тихо. Скажите первое слово