Semantic Kernel Agent Orchestration — 오케스트레이션 개요

Semantic Kernel Agent Orchestration — 오케스트레이션 개요

[!IMPORTANT] Agent Framework의 오케스트레이션 기능은 실험 단계(experimental)예요. 활발히 개발 중이며, preview/RC 단계로 넘어가기 전에 크게 바뀔 수 있어요.

Semantic Kernel의 Agent Orchestration 은 복잡한 에이전트 워크플로를 쉽게 만들고 관리하고 확장할 수 있게 해주는 프레임워크예요.

왜 멀티 에이전트 오케스트레이션인가

전통적인 단일 에이전트 시스템은 복잡하고 다면적인 작업을 다루는 데 한계가 있어요. 각자 특화된 기술이나 역할을 가진 여러 에이전트를 조율하면, 더 견고하고 적응력 있으며 현실 문제를 협력적으로 푸는 시스템을 만들 수 있어요. Semantic Kernel의 멀티 에이전트 오케스트레이션은 다양한 조정 패턴을 지원하면서 그런 시스템을 만들 수 있는 유연한 기반을 제공합니다.

오케스트레이션 패턴

잘 알려진 클라우드 설계 패턴처럼, 에이전트 오케스트레이션 패턴은 "여러 에이전트가 공통 목표를 향해 협력하도록 조율하는 기술 비종속적 접근"이에요. 패턴 자체에 대한 더 자세한 내용은 AI 에이전트 설계 패턴 문서를 참고하세요.

Semantic Kernel이 지원하는 오케스트레이션 패턴

Semantic Kernel은 이 패턴들을 SDK에 직접 구현해서 제공해요. 프레임워크의 일부로 제공되며 쉽게 확장하거나 커스터마이즈할 수 있어서, 자신의 에이전트 협업 시나리오에 맞게 다듬을 수 있죠.

패턴 설명 전형적인 사용 사례
Concurrent 작업을 모든 에이전트에 브로드캐스트하고, 결과를 독립적으로 수집 병렬 분석, 독립 하위 작업, 앙상블 의사 결정
Sequential 정의된 순서대로 한 에이전트의 결과를 다음 에이전트로 전달 단계별 워크플로, 파이프라인, 다단계 처리
Handoff 컨텍스트나 규칙에 따라 에이전트 간 제어권을 동적으로 넘김 동적 워크플로, 에스컬레이션, 폴백, 전문가 핸드오프
Group Chat 모든 에이전트가 그룹 매니저의 조율 아래 그룹 대화에 참여 브레인스토밍, 협업 문제 해결, 합의 형성
Magentic MagenticOne에서 영감을 받은 그룹 채팅형 오케스트레이션 복잡한 범용 멀티 에이전트 협업

단순함과 개발자 친화성

모든 오케스트레이션 패턴은 구성과 호출이 통일된 인터페이스를 공유해요. 어떤 오케스트레이션을 고르든 과정은 같습니다.

  1. 에이전트와 그 능력을 정의한다.
  2. 에이전트를(필요하면 매니저도) 넘겨 오케스트레이션을 만든다.
  3. 선택적으로 커스텀 입력/출력 처리를 위한 콜백이나 트랜스폼을 제공한다.
  4. 런타임을 시작하고 작업으로 오케스트레이션을 호출한다.
  5. 일관된 비동기 방식으로 결과를 기다린다.

이 통일된 방식 덕분에, 새 API를 배우거나 에이전트 로직을 다시 쓰지 않고도 오케스트레이션 패턴 사이를 쉽게 전환할 수 있어요. 프레임워크가 에이전트 간 통신·조정·결과 집계의 복잡성을 추상화해서, 애플리케이션의 목표에 집중할 수 있게 해줍니다.

# Choose an orchestration pattern with your agents
orchestration = SequentialOrchestration(members=[agent_a, agent_b])
# or ConcurrentOrchestration, GroupChatOrchestration, HandoffOrchestration, MagenticOrchestration, ...

# Start the runtime
runtime = InProcessRuntime()
runtime.start()

# Invoke the orchestration
result = await orchestration.invoke(task="Your task here", runtime=runtime)

# Get the result
final_output = await result.get()

await runtime.stop_when_idle()

C#에서는 SequentialOrchestration orchestration = new(agentA, agentB) { LoggerFactory = this.LoggerFactory }; 처럼 생성하고, InProcessRuntime runtime = new(); await runtime.StartAsync();await orchestration.InvokeAsync(task, runtime) 로 호출하고 await result.GetValueAsync() 로 결과를 받아요.

개발 환경 준비 (C#)

진행 전에 다음 패키지를 프로젝트에 추가하세요.

dotnet add package Microsoft.SemanticKernel.Agents.Orchestration --prerelease
dotnet add package Microsoft.SemanticKernel.Agents.Runtime.InProcess --prerelease

사용하는 에이전트 타입에 따라 해당 에이전트 패키지를 추가해야 할 수도 있어요. 자세한 내용은 Agents Overview 를 참고하세요.

[!NOTE] Java SDK에서는 아직 에이전트 오케스트레이션이 제공되지 않아요.

다음 단계

Concurrent Orchestration 문서로 넘어가 보세요.