Image

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

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

Делиться

Создайте свою собственную систему агентного ИИ

Что такое агентный ИИ?

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

Объем поиска по запросу «Agent AI» в Google за последние 12 месяцев

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

От LLM к многоагентным системам

Отличительной чертой агентной системы ИИ от традиционных систем автоматизации является её способность автономно планировать действия и логику при условии достижения конкретной, заранее определённой цели. В результате промежуточные этапы работы агента менее жестко регламентированы и не имеют предопределённых траекторий принятия решений. «Синергия рассуждений и действий в языковых моделях» считается основополагающей работой, формализующей раннюю стадию разработки LLM-фреймворка агентов «ReAct», состоящего из трёх ключевых элементов: действий , мыслей и наблюдений. Если вам интересно узнать больше о работе ReAct, пожалуйста, ознакомьтесь с моей записью в блоге «Краткое объяснение 6 распространённых стратегий настройки LLM».

Краткое описание 6 распространенных стратегий настройки LLM

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

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

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

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

Теперь, когда мы рассмотрели основные концепции фреймворка 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() для чтения файлов, хранящихся в каталоге.

из crewai_tools импорт DirectoryReadTool, FileReadTool doc_tool = DirectoryReadTool(directory='./articles') file_tool = FileReadTool()

3. Инициируйте агента, указав его роль, цель и предоставив ему инструменты.

из crewai import Agent researcher = Agent( role=»Researcher», goal=»Найти информацию по любой теме на основе предоставленных файлов», tools=[doc_tool, file_tool] )

4. Создайте задачу, предоставив описание, и назначьте агента для ее выполнения.

из crewai import Task research_task = Task( description=»Исследование последних тенденций в области ИИ», agent=resercher )

5. Создайте команду, объединив агентов и задачи. Запустите выполнение рабочего процесса с помощью функции kickoff().

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

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

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

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

c3e4b7a35742a893d57f18559163e5c4

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

Запись в блоге

abea2c8b922c5323af55fee8b86b8a44

Сообщение X(Twitter)
Откройте для себя будущее агентного ИИ! Вы когда-нибудь задумывались, как агентный ИИ изменит наше взаимодействие с технологиями к 2025 году? Понимание тенденций развития ИИ в 2025 году критически важно не только для энтузиастов технологий, но и для бизнеса в различных секторах. #AgenticAI #AITrends
Сообщение на YouTube
Узнайте о революционных тенденциях в области агентного ИИ! 🌟 Узнайте, как агентный ИИ преобразует отрасли так, как вы даже не могли себе представить! К 2025 году эти революционные тенденции изменят наше взаимодействие с технологиями, особенно в банковском деле и финансах. Готовы ли вы встретить будущее? Не забудьте прочитать нашу последнюю публикацию в блоге и подписаться на обновления!
Сообщение подстека
Меняющийся ландшафт агентного ИИ: что нужно знать. В 2025 году развивающийся мир агентного ИИ изменит облик отраслей, особенно финансов и банковского дела. В этой статье рассматриваются ключевые тенденции, такие как преобразующий потенциал агентного ИИ, новые нормативные рамки и значительные технологические достижения. Как компании могут успешно интегрировать агентный ИИ, управляя рисками? Что означает будущее этой технологии для потребителей? Присоединяйтесь к диалогу в нашей последней публикации, и давайте вместе рассмотрим, как эти инновации повлияют на наше будущее!

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

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

├── 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()

На снимке экрана ниже показан вывод web_search_tool при указании темы «Видео YouTube».

Пример выходных данных инструмента агентного ИИ

Далее мы создадим собственный инструмент для подсказки ключевых слов, унаследовав его от класса BaseTool и используя SerpApi (API Google Trend). Как показано в коде ниже, этот инструмент генерирует самые популярные и трендовые запросы, связанные с введенным ключевым словом. Этот инструмент доступен маркетологу для анализа трендовых ключевых слов и оптимизации публикации в блоге для поисковой оптимизации. Пример результатов работы инструмента для подсказки ключевых слов будет представлен в следующем разделе.

import os import json from dotenv import load_dotenv from crewai.tools import BaseTool from serpapi.google_search import GoogleSearch load_dotenv() api_key = os.getenv('SERPAPI_API_KEY') class KeywordTool(BaseTool): name: str = «Инструмент подсказки популярных ключевых слов» description: str = «Получить объем поиска по связанным популярным ключевым словам.» def _run(self, keyword: str) -> str: params = { 'engine': 'google_trends', 'q': keyword, 'data_type': 'RELATED_QUERIES', 'api_key': api_key } search = GoogleSearch(params) try: rising_kws = search.get_dict()['related_queries']['rising'] top_kws = search.get_dict()['related_queries']['top'] return f»»» Ключевые слова, набирающие популярность: {rising_kws} n Ключевые слова, набирающие популярность: {top_kws} «»» except Exception as e: return f»Произошла непредвиденная ошибка: {str(e)}»

3. Определите класс экипажа

Архитектура CrewAI

В скрипте crew.py мы определяем нашу команду по работе с социальными сетями, состоящую из трёх агентов: market_researcher, content_creator и marketing_specialist, — и назначаем каждому из них задачи. Мы инициализируем класс SocialMediaCrew() с помощью декоратора @CrewBase. Атрибут topic передаёт информацию пользователя об интересующей его теме, а атрибуты llm и model_name определяют модель по умолчанию, используемую в рабочем процессе Crew.

@CrewBase class SocialMediaCrew(): def __init__(self, topic: str): «»» Инициализирует SocialMediaCrew с указанием конкретной темы. Аргументы: topic (str): Основная тема или предмет для создания контента для социальных сетей «»» self.topic = topic self.model_name = 'openai/gpt-4o' self.llm = LLM(model=self.model_name,temperature=0)

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

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

Например, мы определяем роль «Специалист по маркетингу» с помощью кода ниже. Начнём с использования декоратора @agent. Определим роль как «Специалист по маркетингу» и предоставим доступ к ранее разработанному инструменту keywords_tool, чтобы специалист по маркетингу мог исследовать популярные ключевые слова и оптимизировать контент блога для достижения оптимальных SEO-показателей.

Посетите наш репозиторий GitHub для получения полного кода других определений агентов.

@CrewBase class SocialMediaCrew(): def __init__(self, topic: str): «»» Инициализирует SocialMediaCrew с указанием конкретной темы. Аргументы: topic (str): Основная тема или предмет для создания контента для социальных сетей «»» self.topic = topic self.model_name = 'openai/gpt-4o' self.llm = LLM(model=self.model_name,temperature=0)

Установка verbose в значение true позволяет нам использовать функцию отслеживания CrewAI для отслеживания промежуточных результатов в ходе вызова агента. На скриншотах ниже показан ход мыслей агента «Специалист по маркетингу», использующего thekeyword_tool для исследования трендов YouTube, а также оптимизированная для SEO запись в блоге, созданная на основе результатов работы инструмента.

Промежуточный результат работы специалиста по маркетингу

ce173ecd2ef095983b08755f9ddac0de
df2211b620dc05431830e34e2a1a6dc3

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

Пример агента.yaml

marketing_specialist: роль: > «Специалист по маркетингу» цель: > «Улучшить публикацию в блоге для оптимизации под поисковые системы с помощью инструмента подсказки ключевых слов и создать персонализированные сообщения для распространения в социальных сетях, соответствующие конкретному каналу». Предыстория: > «Опытный специалист по маркетингу с опытом в SEO и разработке кампаний в социальных сетях».

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

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

В CrewAI задача настраивается с помощью описания, ожидаемого_вывода, а необязательный параметр output_file сохраняет промежуточные выходные данные в виде файла. В качестве альтернативы рекомендуется использовать отдельный YAML-файл для более понятного и удобного описания задач. В приведённом ниже фрагменте кода мы даём экипажу точные инструкции по выполнению четырёх задач и назначению их агентам с соответствующими навыками. Мы также сохраняем выходные данные каждой задачи в рабочей папке для удобства сравнения различных версий выходных данных.

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

@task def research(self) -> Task: return Task( description=f'Исследовать тенденции 2025 года в области {self.topic} и предоставить сводку.', expected_output=f'Сводка трёх самых популярных новостей в области {self.topic} с уникальным взглядом на их значимость.', agent=self.market_researcher() ) @task def write(self) -> Task: return Task( description=f»Написать увлекательную запись в блоге о {self.topic} на основе сводки аналитика-исследователя.», expected_output='Запись в блоге из 4 абзацев, отформатированная в Markdown, с увлекательным, информативным и доступным контентом, избегая сложного жаргона.', agent=self.content_creator(), output_file=f'blog-posts/post-{self.model_name}-{timestamp}.md' ) @task def refine(self) -> Task: return Task( description=»»» Доработать данный черновик статьи, чтобы сделать его более SEO-оптимизированным Оптимизировано для популярных ключевых слов. Включайте ключевые слова естественным образом по всему тексту (особенно в заголовки и первые абзацы). Сделайте контент понятным как для поисковых систем, так и для пользователей. «»», expected_output='Изысканная запись в блоге из 4 абзацев, отформатированная в Markdown с интересным и SEO-оптимизированным контентом.', agent=self.marketing_specialist(), output_file=f'blog-posts/seo_post-{self.model_name}-{timestamp}.md' ) @task def distribution(self) -> Task: return Task( description=»»» Создайте три различные версии исходной записи в блоге, каждая из которых адаптирована для определенного канала распространения: Одна версия для X (ранее Twitter) — лаконичная, интересная и оптимизированная по хэштегам. Одна версия для публикации на YouTube — подходит для видеоаудитории, содержит эмоциональный сигнал и четкий призыв к действию. Одна версия для Substack — немного длиннее, информативная, ориентированная на подписчиков новостной рассылки. Каждое описание должно быть оптимизировано с учетом норм и ожиданий канал, внося небольшие изменения в язык, длину и форматирование. Вывод должен быть выполнен в формате Markdown, каждая версия должна быть отделена чётким разделителем (—). Используйте короткий, содержательный заголовок для каждой версии, чтобы ещё больше повысить её соответствие каналу. «»», expected_output='3 версии описаний исходной записи в блоге, оптимизированные для канала распространения, отформатированные в Markdown, разделенные разделителями.', agent=self.marketing_specialist(), output_file=f'blog-posts/social_media_post-{self.model_name}-{timestamp}.md' )

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

🚀 Команда: crew ├── 📋 Задача: исследование (ID: 19968f28-0af7-4e9e-b91f-7a12f87659fe) │ Назначено: Аналитик по маркетинговым исследованиям │ Статус: ✅ Завершено │ └── 🔧 Использованный поиск на определенном веб-сайте (1) ├── 📋 Задача: написать (ID: 4a5de75f-682e-46eb-960f-43635caa7481) │ Назначено: Автор контента │ Статус: ✅ Завершено ├── 📋 Задача: уточнить (ID: fc9fe4f8-7dbb-430d-a9fd-a7f32999b861) │ **Назначено: Специалисту по маркетингу** │ Статус: ✅ Завершено │ └── 🔧 Использован инструмент подсказки ключевых слов (1) └── 📋 Задача: распространение (ID: ed69676a-a6f7-4253-9a2e-7f946bd12fa8) **Назначено: Специалисту по маркетингу** Статус: ✅ Завершено └── 🔧 Использован инструмент подсказки ключевых слов (2) ╭─────────────────────────────────────────────── Завершение задачи ────────────────────────────────────────────╮ │ │ │ Задача выполнена │ │ Имя: распространение │ │ Агент: Специалист по маркетингу │ │ Аргументы инструмента: │ │ │ │ │ ╰────────────────────────────────────────────────── ───────────────────────────────────────────────────────╯

6. Вывод команды из игры

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

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

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

# main.py from social_media_agent.crew import SocialMediaCrew def run(): # Замените своими входными данными, он автоматически интерполирует любые задачи и информацию об агентах inputs = { 'topic': input('Введите интересующую вас тему: '), } SocialMediaCrew(topic=inputs['topic']).crew().kickoff(inputs=inputs)

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

Вывод задачи «написать»

Вывод задачи «написать»

Вывод задачи «уточнить»

df2e81dc3441d2c1cac77130cfb9e8a3

Вывод задачи «распространить»

0a5a38869b6827cd948ea626560d9094

Источник: towardsdatascience.com

Каталог бесплатных опенсорс-решений, которые можно развернуть локально и забыть о подписках

галерея

ИИ почти всех обгонит? Прогнозы звучат громко, но есть нюансы…
Компания Anthropic получила от Amazon 5 миллиардов долларов и в обмен пообещала инвестировать 100 миллиардов долларов в облачные сервисы.
dummy-img
Загрузка: обход банковских систем кибермошенниками и проблемы с удалением углерода.
Загрузка: обход банковских систем кибермошенниками и проблемы с удалением углерода.
dummy-img
dummy-img
Взаимодействие человека и машины погружается под воду.
Взаимодействие человека и машины погружается под воду.
Image Not Found
Компания Anthropic получила от Amazon 5 миллиардов долларов и в обмен пообещала инвестировать 100 миллиардов долларов в облачные сервисы.

Компания Anthropic получила от Amazon 5 миллиардов долларов и в обмен пообещала инвестировать 100 миллиардов долларов в облачные сервисы.

Вкратце Опубликовано: Изображение предоставлено: Thos Robinson/Getty Images для The New York Times (откроется в новом окне) Джули Борт Компания Anthropic получила от Amazon 5 миллиардов долларов и в обмен пообещала инвестировать 100 миллиардов долларов в облачные сервисы.…

Апр 21, 2026
dummy-img

Как почистить виниловые пластинки (2026): пылесос, ультразвук, чистящий раствор, щетка.

Эти щелчки и треск недопустимы. Приведите свою музыку в порядок с помощью этого удобного руководства. Источник: www.wired.com

Апр 21, 2026
Загрузка: обход банковских систем кибермошенниками и проблемы с удалением углерода.

Загрузка: обход банковских систем кибермошенниками и проблемы с удалением углерода.

Это сегодняшний выпуск The Download, нашей ежедневной новостной рассылки, которая предоставляет вам ежедневную порцию событий в мире технологий. Кибермошенники обходят системы безопасности банков с помощью незаконных инструментов, продаваемых в Telegram. В центре по отмыванию денег в Камбодже…

Апр 21, 2026
Загрузка: обход банковских систем кибермошенниками и проблемы с удалением углерода.

Загрузка: обход банковских систем кибермошенниками и проблемы с удалением углерода.

Это сегодняшний выпуск The Download, нашей ежедневной новостной рассылки, которая предоставляет вам ежедневную порцию событий в мире технологий. Кибермошенники обходят системы безопасности банков с помощью незаконных инструментов, продаваемых в Telegram. В центре по отмыванию денег в Камбодже…

Апр 21, 2026

Впишите свой почтовый адрес и мы будем присылать вам на почту самые свежие новости в числе самых первых