первыйБитБИТ.АГЕНТЫ/туториал

Оркестрация

Паттерны организации агентов

Когда у вас несколько агентов, нужно решить, как они взаимодействуют. Существуют разные паттерны оркестрации — каждый со своими компромиссами.

Supervisor (супервизор)

Централизованный

Один главный агент (supervisor) получает задачу, разбивает её на подзадачи и распределяет между рабочими агентами (workers). Supervisor собирает результаты и формирует итоговый ответ.

supervisor.ts
// Supervisor — один агент управляет остальными
class Supervisor {
  async run(task: string) {
    const plan = await this.decompose(task)
    for (const subtask of plan) {
      const worker = this.selectWorker(subtask)
      const result = await worker.execute(subtask)
      this.results.push(result)
    }
    return this.synthesize()
  }
}

Swarm (рой)

Децентрализованный

Агенты работают параллельно и общаются напрямую друг с другом (peer-to-peer). Нет единого координатора — агенты договариваются между собой.

swarm.ts
// Swarm — агенты работают параллельно
// и общаются peer-to-peer
class Swarm {
  agents: Agent[]
  
  async run(task: string) {
    // Разделяем задачу
    const chunks = this.splitTask(task, this.agents.length)
    
    // Агенты работают параллельно
    const results = await Promise.all(
      this.agents.map((a, i) => a.run(chunks[i]))
    )
    
    // Объединяем результаты
    return this.merge(results)
  }
}

Pipeline (конвейер)

Последовательный

Агенты выстроены в цепочку. Результат работы первого агента передаётся второму, результат второго — третьему и так далее. Каждый агент — этап обработки.

pipeline.ts
// Pipeline — цепочка агентов
// Выход одного — вход для другого
class Pipeline {
  stages: Agent[]
  
  async run(input: string) {
    let data = input
    for (const stage of this.stages) {
      data = await stage.process(data)
    }
    return data
  }
}

Handoff (передача)

Маршрутизация

Агент получает запрос, проверяет, может ли его обработать. Если нет — передаёт (handoff) специализированному агенту. Похоже на роутинг в сервисной архитектуре.

handoff.ts
// Handoff — передача задачи другому агенту
class Agent {
  async handle(request: Request): Promise<Response> {
    if (this.canHandle(request)) {
      return this.process(request)
    }
    // Передаём другому агенту
    const nextAgent = this.findSpecialist(request)
    return nextAgent.handle(request)
  }
}

Сравнение паттернов

ПаттернУправлениеКогда использовать
SupervisorЦентрализованноеЧёткая иерархия задач
SwarmДецентрализованноеМного независимых подзадач
PipelineПоследовательноеЭтапы обработки данных
HandoffМаршрутизацияРазные типы запросов

Что дальше?

Это последняя глава туториала. Вы познакомились с основными концепциями агентов: от простого цикла восприятие-действие до мультиагентных систем и паттернов оркестрации.

🛠️ Попробовать

LangChain / LangGraph — фреймворки для агентов

CrewAI — мультиагентные системы

AutoGen от Microsoft Research