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

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

Несмотря на недавнее появление исследовательской статьи 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 и создадим команду по маркетингу в социальных сетях, следуя пошаговым инструкциям ниже. Эта команда будет создавать публикации в блоге на основе интересующей пользователя темы и создавать персонализированные сообщения для кампаний, которые можно будет распространять в различных социальных сетях.

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

Сообщение 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. Определите класс экипажа

В скрипте 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 запись в блоге, созданная на основе результатов работы инструмента.
Промежуточный результат работы специалиста по маркетингу


Альтернативный подход к определению агента заключается в сохранении контекста агента в файле 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» в качестве примера и представим выходные файлы, сгенерированные нашей командой по работе с социальными сетями после последовательного выполнения задач.
Вывод задачи «написать»

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

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

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



























