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

✅ Найденные теги: Как, новости

ОСТАВЬТЕ СВОЙ КОММЕНТАРИЙ

Ваш адрес email не будет опубликован. Обязательные поля помечены *

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

галерея

Фото сгенерированных лиц: исследование показывает, что люди не могут отличить настоящие лица от сгенерированных
Нейросети построили капитализм за трое суток: 100 агентов Claude заперли…
Скетч: цифровой осьминог и виртуальный мир внутри компьютера с человечком.
Сцена с жестами пальцами, где один жест символизирует "VPN", а другой "KHP".
‼️Paramount купила Warner Bros. Discovery — сумма сделки составила безумные…
Скриншот репозитория GitHub "Claude Scientific Skills" AI для научных исследований.
Структура эффективного запроса Claude с элементами задачи, контекста и референса.
Эскиз и готовая веб-страница платформы для AI-дизайна в современном темном режиме.
ideipro logotyp
Image Not Found
Звёздное небо с галактиками и туманностями, космос, Вселенная, астрофотография.

Система оповещения обсерватории Рубина отправила 800 000 сигналов в первую ночь наблюдений.

Астрономы будут получать оповещения о небесных явлениях в течение нескольких минут после их обнаружения. Теренс О'Брайен, редактор раздела «Выходные». Публикации этого автора будут добавляться в вашу ежедневную рассылку по электронной почте и в ленту новостей на главной…

Мар 2, 2026
Женщина с длинными тёмными волосами в синем свете, нейтральный фон.

Расследование в отношении 61-фунтовой машины, которая «пожирает» пластик и выплевывает кирпичи.

Обзор компактного пресса для мягкого пластика Clear Drop — и что будет дальше. Шон Холлистер, старший редактор Публикации этого автора будут добавляться в вашу ежедневную рассылку по электронной почте и в ленту новостей на главной странице вашего…

Мар 2, 2026
Черный углеродное волокно с текстурой плетения, отражающий свет.

Материал будущего: как работает «бессмертный» композит

Учёные из Университета штата Северная Каролина представили композит нового поколения, способный самостоятельно восстанавливаться после серьёзных повреждений.  Речь идёт о модифицированном армированном волокном полимере (FRP), который не просто сохраняет прочность при малом весе, но и способен «залечивать» внутренние…

Мар 2, 2026
Круглый экран с изображением замка и горы, рядом электронная плата.

Круглый дисплей Waveshare для креативных проектов

Круглый 7-дюймовый сенсорный дисплей от Waveshare создан для разработчиков и дизайнеров, которым нужен нестандартный экран.  Это IPS-панель с разрешением 1 080×1 080 пикселей, поддержкой 10-точечного ёмкостного сенсора, оптической склейкой и защитным закалённым стеклом, выполненная в круглом форм-факторе.…

Мар 2, 2026

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