Создание автономного многосайтового писательского пайплайна
Научитесь создавать систему совместной работы AI-агентов с использованием CrewAI и Gemini.
Обзор
В этом учебном пособии мы реализуем мощную систему из двух агентов CrewAI, которые сотрудничают с использованием модели Gemini Flash. Мы настраиваем среду, безопасно аутентифицируемся, определяем специализированных агентов и организуем задачи от исследования до структурированного письма. Этот практический опыт показывает современные рабочие процессы агентов на основе LLM и демонстрирует, как многосайтовые пайплайны могут быть практичными, модульными и удобными для разработчиков.
Настройка окружения
Мы начинаем с установки необходимых пакетов CrewAI, чтобы все работало гладко в Colab:
import os
import sys
import getpass
from textwrap import dedent
print("Установка CrewAI и инструментов... (это может занять 1-2 минуты)")
!pip install -q crewai crewai-tools
from crewai import Agent, Task, Crew, Process, LLMЭта настройка закладывает основу для нашего рабочего процесса с несколькими агентами.
Аутентификация с помощью API Gemini
Далее мы аутентифицируем нашу систему, безопасно получая или вводя ключ API Gemini:
print("\n--- Аутентификация API ---")
api_key = None
try:
from google.colab import userdata
api_key = userdata.get('GEMINI_API_KEY')
print("✅ Ключ GEMINI_API_KEY найден в секретах Colab.")
except Exception:
pass
if not api_key:
print("ℹ Ключ не найден в секретах.")
api_key = getpass.getpass("🔑 Введите ваш ключ API Google Gemini: ")
os.environ["GEMINI_API_KEY"] = api_key
if not api_key:
sys.exit("❌ Ошибка: Ключ API не предоставлен. Пожалуйста, перезапустите и введите ключ.")Это обеспечивает надежную связь между нашим каркасом агентов и LLM.
Настройка модели Gemini Flash
Теперь мы настраиваем модель Gemini Flash, от которой зависят наши агенты:
gemini_flash = LLM(
model="gemini/gemini-2.0-flash",
temperature=0.7
)Эта конфигурация балансирует креативность и точность, становясь общей интеллектуальной основой для выполнения задач агентов.
Определение агентов в системе
Затем мы определяем наших двух специализированных агентов:
researcher = Agent(
role='Технический исследователь',
goal='Выявить передовые разработки в области AI-агентов',
backstory=dedent("""
Вы ветеран-теханалитик с knack'ом находить новые тренды до их популяризации. Вы специализируетесь на автономных AI-агентах и больших языковых моделях.
"""),
verbose=True,
allow_delegation=False,
llm=gemini_flash
)
writer = Agent(
role='Технический писатель',
goal='Написать краткий, увлекательный блог о находках исследователя',
backstory=dedent("""
Вы превращаете сложные технические концепции в увлекательные повествования. Вы пишете для разработчиков, ищущих практические идеи без излишества.
"""),
verbose=True,
allow_delegation=False,
llm=gemini_flash
)Эти агенты работают в тандеме — один извлекает инсайты, в то время как другой преобразует их в хорошо написанное содержание.
Создание задач для агентов
Далее мы создаем задачи, которые четко определяют ответственность для каждого агента:
research_task = Task(
description=dedent("""
Провести симулированный анализ исследования на тему 'Будущее агентного ИИ в 2025 году'. Выявить три ключевых тренда: 1. Оркестрация многосайтов 2. Нейро-символический ИИ 3. Исполнение агентов на устройстве. Предоставить краткое содержание для каждого на основе ваших 'экспертных знаний'.
"""),
expected_output="Структурированный список из 3 ключевых трендов ИИ с краткими описаниями.",
agent=researcher
)
write_task = Task(
description=dedent("""
Используя находки исследователя, напишите краткий блог пост (примерно 200 слов). Пост должен включать: - Привлекательный заголовок - Введение - Три пункта - Заключение о том, почему это важно для разработчиков.
"""),
expected_output="Блог-пост в формате markdown.",
agent=writer,
context=[research_task]
)Организуя эти зависимые задачи, мы обеспечиваем плавный оперативный поток внутри CrewAI.
Запуск многоагентного рабочего процесса
Наконец, мы собираем наших агентов и задачи в команду и выполняем многоагентный рабочий процесс:
tech_crew = Crew(
agents=[researcher, writer],
tasks=[research_task, write_task],
process=Process.sequential,
verbose=True
)
print("\n--- 🤖 Запуск команды ---")
result = tech_crew.kickoff()
from IPython.display import Markdown
print("\n\n########################")
print("## ФИНАЛЬНЫЙ ВЫВОД ##")
print("########################\n")
display(Markdown(str(result)))Этот финальный этап демонстрирует реальное сотрудничество наших агентов.
Ценность многосайтового сотрудничества
Через этот учебник мы оцениваем, как эффективно CrewAI позволяет создавать скоординированные системы агентов, способных на исследование и написание. Определяя роли, задачи и потоки процессов, мы можем модульно сложную работу и достигать согласованных результатов с минимальным кодом. Эта структура готовит нас к разработке более крупных многосайтовых систем или креативных AI-сотрудничеств.
Switch Language
Read this article in English