Как создать свою собственную агентную систему искусственного интеллекта с помощью CrewAI

Автор: Дмитрий Иванов [Команда P9X]

~8 минут чтения

ИИ?

Агентский ИИ

Агентский ИИ, первоначально представленный Эндрю Нгом как ИИ-«партнёры», которые автономно планируют, выполняют и завершают сложные задачи, является новой концепцией, возникшей в результате всплеска приложений генеративного ИИ. Термин быстро завоевал популярность с конца июля 2025 года, согласно объёму его поиска в Google Trends.

Объём поиска «агентский ИИ» за последние 12 месяцев

Несмотря на недавнее появление, исследовательская статья от BCG «Как агентский ИИ преобразует корпоративные платформы» указывает, что организации активно внедряют рабочие процессы с использованием агентского ИИ для преобразования своих основных технологических платформ и помощи в автоматизации маркетинга, обслуживании клиентов, производительности на рабочем месте и т. д., что приводит к ускорению рабочих процессов на 20–30%.

От LLM к мультиагентским системам

Что отличает систему агентского ИИ от традиционных систем автоматизации, так это её способность автономно планировать действия и логику для достижения конкретной, заранее определённой цели. В результате уменьшается жёсткость оркестрации или предопределённых траекторий принятия решений, управляющих промежуточными шагами агента.

Основополагающая статья «Синергия рассуждений и действий в языковых моделях» формализует раннюю стадию фреймворка LLM Agent «ReAct», состоящего из трёх ключевых элементов — действий, мыслей и наблюдений.

С быстрым ростом этой области становится очевидно, что один агент LLM не может удовлетворить высокий спрос на приложения и интеграции ИИ. Поэтому разрабатываются мультиагентские системы для организации функциональности агентов в динамический рабочий процесс.

Создание простой системы агентского ИИ с помощью CrewAI

CrewAI — это фреймворк с открытым исходным кодом на Python, который позволяет разработчикам создавать готовые к производству и совместные команды ИИ-агентов для решения сложных задач. По сравнению с другими популярными фреймворками агентов, такими как LangChain и LlamaIndex, он больше ориентирован на ролевое взаимодействие между агентами, предлагая меньшую гибкость для сложных архитектур агентского ИИ.

Мы можем использовать аналогию с наймом кросс-функциональной проектной команды (Crew) при использовании фреймворка CrewAI для построения агентской системы, где каждый ИИ-агент (Agent) в команде имеет определённую роль, способную выполнять несколько связанных с ролью задач (Tasks). Агенты оснащены инструментами (Tools), которые облегчают им выполнение работы.

Теперь, когда мы рассмотрели основные концепции фреймворка CrewAI — агент, задача, инструмент и команда, давайте посмотрим на пример кода для создания минимально жизнеспособной агентской системы.

  1. Установите CrewAI и настройте переменные среды с помощью команд bash, например, экспортируйте ключ API OpenAI в качестве переменной среды для доступа к моделям OpenAI GPT.

    pip install crewai
    pip install 'crewai[tools]'
    export OPENAI_API_KEY='your-key-here'
    
  2. Создайте инструменты из встроенного списка инструментов CrewAI, например, примените DirectoryReadTool() для доступа к каталогу, а FileReadTool() для чтения файлов, хранящихся в каталоге.

    from crewai_tools import DirectoryReadTool, FileReadTool
    
    doc_tool = DirectoryReadTool(directory='./articles')
    file_tool = FileReadTool()
    
  3. Инициируйте агента, указав его роль, цель и предоставив ему инструменты.

    from crewai import Agent
    
    researcher = Agent(
        role="Researcher",
        goal="Find information on any topic based on the provided files",
        tools=[doc_tool, file_tool]
    )
    
  4. Создайте задачу, предоставив описание и назначив агента для выполнения задачи.

    from crewai import Task
    
    research_task = Task(
        description="Research the latest AI trends",
        agent=researcher
    )
    
  5. Соберите команду, объединив агентов и задачи вместе. Запустите выполнение рабочего процесса с помощью kickoff().

    from crewai import Crew
    
    crew = Crew(
        agents=[researcher],
        tasks=[research_task]
    )
    
    result = crew.kickoff()
    

Разработка агентской команды для маркетинга в социальных сетях

0. Цели проекта

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

Пример вывода, если мы попросим команду о теме «агентский ИИ».

Блог-пост

Сообщение в X (Twitter) Discover the Future of Agentic AI! Have you ever wondered how Agentic AI is set to redefine our interaction with technology by 2025? Understanding AI trends for 2025 is not only crucial for technology enthusiasts but essential for businesses across various sectors. #AgenticAI #AITrends

Сообщение на YouTube Explore Groundbreaking Trends in Agentic AI! 🌟 Uncover how Agentic AI is transforming industries in ways you never imagined! By 2025, these revolutionary trends will reshape how we engage with technologies, particularly in banking and finance. Are you ready to embrace the future? Don't forget to read our latest blog post and subscribe for more insights!

Сообщение в Substack The Changing Landscape of Agentic AI: What You Need to Know In 2025, the evolving world of Agentic AI is set to reshape industries, particularly in finance and banking. This blog covers key trends such as the transformational potential of agentic AI, new regulatory frameworks, and significant technological advancements. How can businesses successfully integrate agentic AI while managing risks? What does the future of this technology mean for consumers? Join the dialogue in our latest post, and let's explore how these innovations will impact our future together!

1. Настройка среды проекта

Следуйте руководству CrewAI QuickStart для настройки среды разработки. Мы используем следующую структуру каталогов для этого проекта.

├── README.md
├── pyproject.toml
├── requirements.txt
├── src
│   └── social_media_agent
│       ├── __init__.py
│       ├── crew.py
│       ├── main.py
│       └── tools
│           ├── __init__.py
│           ├── browser_tools.py
│           └── keyword_tool.py
└── uv.lock

2. Разработка инструментов

Первый инструмент, который мы добавим в команду, — это WebsiteSearchTool, который является встроенным инструментом, реализованным CrewAI для проведения семантического поиска по содержимому веб-сайтов.

Нам нужно всего несколько строк кода, чтобы установить пакет инструментов crewai и использовать WebsiteSearchTool. Этот инструмент доступен агенту-исследователю рынка для поиска последних рыночных тенденций или отраслевых новостей, связанных с заданной темой.

pip install 'crewai[tools]'

from crewai_tools import WebsiteSearchTool

web_search_tool = WebsiteSearchTool()

3. Определение класса команды

В скрипте crew.py мы определяем нашу команду по маркетингу в социальных сетях с тремя агентами — market_researcher, content_creator, marketing_specialist — и назначаем им задачи. Мы инициализируем класс SocialMediaCrew() с помощью декоратора @CrewBase.

@CrewBase
class SocialMediaCrew():
    def __init__(self, topic: str):
        """
        Initialize the SocialMediaCrew with a specific topic.

        Args:
            topic (str): The main topic or subject for social media content generation
        """

        self.topic = topic
        self.model_name = 'openai/gpt-4o'
        self.llm = LLM(model=self.model_name,temperature=0)

4. Определение агентов

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

Например, мы определяем «Агента-маркетолога» с помощью следующего кода.

@CrewBase
class SocialMediaCrew():
    def __init__(self, topic: str):
        """
        Initialize the SocialMediaCrew with a specific topic.

        Args:
            topic (str): The main topic or subject for social media content generation
        """

        self.topic = topic
        self.model_name = 'openai/gpt-4o'
        self.llm = LLM(model=self.model_name,temperature=0)

5. Определение задач

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

В CrewAI задача настраивается с помощью description, expected_output и необязательного параметра output_file для сохранения промежуточного вывода в виде файла.

6. Запуск команды

В качестве последнего шага в скрипте crew.py мы организуем задачи, агентов и инструменты вместе, чтобы определить команду.

@crew
def crew(self) -> Crew:
    return Crew(
        agents=self.agents,
        tasks=self.tasks,
        verbose=True,
        planning=True,
    )

В main.py мы создаём экземпляр объекта SocialMediaCrew() и запускаем команду, принимая ввод пользователя по интересующей его теме.

from social_media_agent.crew import SocialMediaCrew

def run():

    inputs = {
        'topic': input('Enter your interested topic: '),
    }
    SocialMediaCrew(topic=inputs['topic']).crew().kickoff(inputs=inputs)

Теперь давайте используем «агентский ИИ» в качестве примера, и вот файлы вывода, сгенерированные нашей командой по маркетингу в социальных сетях после последовательного выполнения задач.

Вывод из задачи «write»

Вывод из задачи «refine»

Вывод из задачи «distribute»

Домашнее задание

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

  • Настройка среды: инициализируйте среду разработки с необходимыми зависимостями и инструментами для разработки CrewAI.
  • Разработка инструментов: разработайте основную структуру инструментов со встроенными и пользовательскими компонентами.
  • Определение агентов: создайте специализированных агентов с чётко определёнными ролями, целями и предысториями. Оснастите их соответствующими инструментами для поддержки их роли.
  • Создание задач: создайте задачи с чёткими описаниями и ожидаемыми результатами. Назначьте агентов для выполнения задач.
  • Запуск команды: организуйте задачи, агентов и инструменты вместе в команду и запустите рабочий процесс.