Интеллектуальное поведение часто включает больше, чем простую реакцию на текущий ввод. Оно требует предусмотрительности, умения разбивать сложные задачи на более мелкие управляемые шаги и разрабатывать стратегию достижения желаемого результата. Именно здесь вступает в действие шаблон Planning.
В своей основе планирование — это способность агента или системы агентов сформулировать последовательность действий, чтобы перейти от исходного состояния к целевому.
Полезно думать о планирующем агенте как о специалисте, которому вы делегируете сложную цель. Например, при запросе «организуй командный выезд» вы задаёте что (цель и ограничения), но не как. Задача агента — самостоятельно проложить путь к этой цели. Он должен понять начальное состояние (например, бюджет, количество участников, желаемые даты) и конечное состояние (успешно организованный выезд), а затем выстроить оптимальную последовательность шагов для перехода. План заранее неизвестен — он создаётся агентом в ответ на запрос.
Отличительной чертой процесса является адаптивность. Первоначальный план — это только отправная точка, а не жёсткий сценарий. Настоящая сила агента — в способности учитывать новые данные и обходить препятствия. Например, если выбранная площадка недоступна или кейтеринг занят, агент не «ломается», а адаптируется: учитывает новое ограничение, пересматривает варианты и предлагает альтернативные площадки или даты.
Однако важно понимать компромисс между гибкостью и предсказуемостью. Динамическое планирование — это специализированный инструмент, а не универсальное решение. Если способ решения задачи хорошо известен и воспроизводим, то эффективнее ограничить агента фиксированным рабочим процессом. Это снижает неопределённость и риск непредсказуемого поведения, обеспечивая гарантированно стабильный результат. Таким образом, главный вопрос при выборе между агентом-планировщиком и простым агентом-исполнителем: нужно ли искать “как”, или оно уже известно?
Шаблон Planning — это ключевой вычислительный процесс автономных систем, позволяющий агенту синтезировать последовательность действий для достижения цели, особенно в динамичных или сложных средах. Он превращает высокоуровневую задачу в структурированный план из отдельных шагов.
Автоматизация бизнес-процессов.
Пример: процесс онбординга нового сотрудника.
План: создать учётные записи, назначить обучение, согласовать задачи между отделами. Агент формирует план и выполняет его по шагам, взаимодействуя с нужными системами.
Робототехника и автономная навигация.
Пример: робот должен пройти из точки А в точку Б.
План: построить траекторию с учётом ограничений (время, энергия, препятствия, правила движения).
Синтез информации.
Пример: написание исследовательского отчёта.
План: собрать источники, подготовить резюме, структурировать содержание, выполнить итеративную доработку.
Поддержка клиентов.
Пример: многошаговое решение проблемы.
План: диагностика → решение → эскалация.
Таким образом, планирование позволяет агенту выйти за рамки простых реактивных действий и перейти к целенаправленному поведению. Оно обеспечивает логическую основу для решения задач, где требуется связанная последовательность взаимозависимых шагов.
Ниже приведён пример реализации шаблона Planner с использованием фреймворка Crew AI. Агент сначала формирует план для сложного запроса, а затем выполняет его шаги последовательно.
import os
from dotenv import load_dotenv
from crewai import Agent, Task, Crew, Process
from langchain_openai import ChatOpenAI
# Load environment variables from .env file for security
load_dotenv()
# 1. Explicitly define the language model for clarity
llm = ChatOpenAI(model="gpt-4-turbo")
# 2. Define a clear and focused agent
planner_writer_agent = Agent(
role='Article Planner and Writer',
goal='Plan and then write a concise, engaging summary on a specified topic.',
backstory=(
'You are an expert technical writer and content strategist. '
'Your strength lies in creating a clear, actionable plan before writing, '
'ensuring the final summary is both informative and easy to digest.'
),
verbose=True,
allow_delegation=False,
llm=llm # Assign the specific LLM to the agent
)
# 3. Define a task with a more structured and specific expected output
topic = "The importance of Reinforcement Learning in AI"
high_level_task = Task(
description=(
f"1. Create a bullet-point plan for a summary on the topic: '{topic}'.\\n"
f"2. Write the summary based on your plan, keeping it around 200 words."
),
expected_output=(
"A final report containing two distinct sections:\\n\\n"
"### Plan\\n"
"- A bulleted list outlining the main points of the summary.\\n\\n"
"### Summary\\n"
"- A concise and well-structured summary of the topic."
),
agent=planner_writer_agent,
)
# Create the crew with a clear process
crew = Crew(
agents=[planner_writer_agent],
tasks=[high_level_task],
process=Process.sequential,
)
# Execute the task
print("## Running the planning and writing task ##")
result = crew.kickoff()
print("\\n\\n---\\n## Task Result ##\\n---")
print(result)
Пояснение:
planner_writer_agent с ролью «планировщик и писатель».