Оркестратор и рабочие агенты
Иерархическая координация
«Оркестратор и рабочие агенты» — бесплатный урок AI Prompt Engineering на CoddyKit. Это урок 2 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения AI Prompt Engineering, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс AI Prompt Engineering содержит 4 уроков всего.
Шаблон оркестратора
В шаблоне «оркестратор — исполнители» один оркестратор отвечает за план и цель, а исполнители выполняют подзадачи в заданных пределах и отчитываются о результате. Оркестратор разбивает задачу, распределяет задания, объединяет результаты и решает, когда задача выполнена.
- Оркестратор: планирование, маршрутизация, сведение результатов, управление потоком.
- Исполнители: целенаправленное выполнение в рамках строгого контракта.
Такая иерархия сосредотачивает принятие решений в одном месте, а работу, которую можно выполнять параллельно, распределяет между многими исполнителями.
Разделение планирования и выполнения
Главное правило — отделять планирование от выполнения. Оркестратор рассуждает о стратегии, используя небольшой высокоуровневый контекст, а исполнители работают с подробным, но узким контекстом. Смешивание этих задач вновь создаёт перегруженного универсального агента.
Оркестратору следует редко обращаться непосредственно к необработанным результатам инструментов — он рассуждает на основе сводок исполнителей.
plan = orchestrator.decompose(goal) # high-level
results = [worker.run(sub) for sub in plan] # detailed, scoped
final = orchestrator.integrate(results) # over summariesКачество декомпозиции определяет всё
Система хороша лишь настолько, насколько хороша декомпозиция оркестратора. Подзадачи должны быть достаточно независимыми для параллельного выполнения, достаточно ограниченными для аккуратной передачи и вместе образовывать полное решение. Попросите оркестратор выдать явный план, который можно проверить до запуска любого исполнителя.
- Независимые подзадачи → параллельное выполнение.
- Полное покрытие → в итоговом ответе нет пробелов.
plan = {
'subtasks': [
{'id': 1, 'goal': '...', 'inputs': [...], 'depends_on': []},
{'id': 2, 'goal': '...', 'inputs': [...], 'depends_on': [1]}
]
}Отправка заданий по строгим контрактам
Каждое задание передаёт исполнителю ровно его цель, входные данные и ожидаемую схему выходных данных — ничего больше. Исполнитель, знающий только свой участок задачи, не отвлекается на общую цель и возвращает предсказуемую структуру, которую оркестратор может integrate.
Сообщение с заданием — это контракт: чёткий результат, чёткий формат и чёткие критерии завершения.
dispatch = {
'goal': 'Summarize doc 7 risks',
'context': doc7,
'output_schema': {'risks': [{'text': str, 'severity': str}]},
'done_when': 'all risk clauses covered'
}Изоляция контекста между исполнителями
По умолчанию исполнители не должны видеть полный контекст друг друга. Изоляция не позволяет ошибкам или галлюцинациям одного исполнителя загрязнять работу другого, а также сохраняет промпт каждого исполнителя небольшим и пригодным для кэширования. Только оркестратор обладает глобальным представлением.
Обменивайтесь данными между исполнителями только через проверенные оркестратором сводки, а не через необработанный обмен сообщениями.
Параллельные и последовательные подзадачи
Независимые подзадачи выполняются параллельно, сокращая задержку, а зависимые должны соблюдать порядок. План оркестратора описывает граф зависимостей, и среда выполнения соответственно планирует порядок действий: сначала разошлите независимые конечные подзадачи, затем объедините результаты.
- Разветвление: отправьте все готовые подзадачи одновременно.
- Объединение: дождитесь выполнения зависимостей перед отправкой зависимой подзадачи.
def schedule(plan):
ready = [t for t in plan if not t['depends_on']]
run_parallel(ready)
# then unlock tasks whose deps are now doneИнтеграция и разрешение конфликтов
Интеграция — это не простая конкатенация. Оркестратор должен reconcile пересекающиеся, противоречивые или низкоуверенные результаты исполнителей в единый связный результат, решая, каким из них доверять, и явно указывая неразрешённые конфликты.
Добавьте в работу оркестратора явный шаг согласования с правилами: отдавать предпочтение результатам с большей уверенностью, отмечать противоречия и запрашивать повторный запуск, если покрытие неполное.
merged = orchestrator.reconcile(
results,
rules='prefer higher confidence; flag contradictions; re-dispatch on gaps'
)Оркестратор как управляющий компонент
Оркестратор также отвечает за поток управления: решает, когда остановиться, когда повторить попытку для неудачного исполнителя, когда перепланировать работу и когда передать задачу на следующий уровень. Это позволяет ему ограничивать ресурсы — максимальное число итераций, максимальные расходы и максимальную глубину — и предотвращать бесконтрольные циклы.
Без управляющего оркестратора многоагентные системы выходят из-под контроля.
if iterations > MAX_ITERS or spend > BUDGET:
return orchestrator.best_effort_answer()Рекурсивная декомпозиция
Исполнитель сам может выступать оркестратором для подзадачи, образуя иерархию. Это помогает решать глубокие задачи, но увеличивает задержку и глубину распространения ошибок. Ограничьте глубину рекурсии и требуйте от каждого уровня возвращать краткую ясную сводку, чтобы верхние уровни не тонули в деталях нижних уровней.
Локализация сбоев
Проектируйте систему так, чтобы сбой одного исполнителя приводил лишь к постепенному ухудшению результата. Оркестратор должен обнаруживать некорректные или пустые выходные данные исполнителя, повторять попытку с уточнённым контрактом и использовать запасной вариант, а не завершаться с ошибкой. Исполнители дают сбои изолированно, а оркестратор принимает их на себя и обходит проблемный участок.
- Проверяйте каждый результат исполнителя на соответствие его схеме.
- Повторная попытка, затем fallback — никогда не передавайте необработанный сбой на верхний уровень.
def collect(worker, dispatch):
out = worker.run(dispatch)
if not valid(out, dispatch['output_schema']):
out = worker.run(clarify(dispatch))
return out or fallback(dispatch)Схема оркестрации
Схема такова: оркестратор разбивает задачу на проверяемый план в виде графа зависимостей, отправляет строгие контракты изолированным исполнителям, выполняет независимые подзадачи параллельно, проверяет и согласовывает результаты по явным правилам разрешения конфликтов, контролирует бюджеты и условия остановки, а также локализует сбои исполнителей с помощью повторной попытки и последующего fallback. Принятие решений остаётся централизованным, а работа — распределённой.
Краткая проверка
Вы проектируете систему «координатор — исполнители» для исследовательской задачи с несколькими независимыми подтемами.
Повторение: координатор и исполнители
Сосредоточьте планирование, маршрутизацию, интеграцию и управление в одном координаторе, а целенаправленное выполнение поручите изолированным исполнителям, работающим по чётким контрактам. Разложите задачу на доступный для проверки граф зависимостей, выполняйте независимые подзадачи параллельно, согласовывайте результаты по явно заданным правилам разрешения конфликтов, соблюдайте бюджеты и условия остановки, а сбои исполнителей ограничивайте с помощью проверки, повторной попытки и резервного варианта. Координатор рассуждает по сводкам, никогда не используя необработанный обмен между агентами, благодаря чему иерархия остаётся согласованной и управляемой.
Часто задаваемые вопросы
Урок «Оркестратор и рабочие агенты» бесплатный?
Да — полный текст урока «Оркестратор и рабочие агенты» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс AI Prompt Engineering, подпишись на CoddyKit PRO. Курс AI Prompt Engineering содержит 4 уроков всего.
Чему я научусь в уроке «Оркестратор и рабочие агенты»?
Иерархическая координация Ты практикуешь AI Prompt Engineering с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать AI Prompt Engineering?
Предыдущий опыт не требуется. AI Prompt Engineering на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 2 из 4.
Сколько времени занимает урок «Оркестратор и рабочие агенты»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке AI Prompt Engineering?
Да. Каждый урок AI Prompt Engineering включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Роли и специализация
- Оркестратор и рабочие агенты
- Взаимодействие между агентами
- Агенты, ведущие дебаты и голосование