오케스트레이터와 작업자
계층적 조정
오케스트레이터와 작업자은(는) CoddyKit의 무료 AI Prompt Engineering 강의입니다. 이것은 4개 중 2번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 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으로 작업자 장애를 격리합니다. 판단은 중앙에 두고 작업은 분산합니다.
빠른 점검
여러 독립적인 하위 주제가 있는 연구 과제를 위해 오케스트레이터-워커 시스템을 설계하고 있습니다.
복습: 오케스트레이터와 워커
계획 수립, 경로 지정, 통합, 제어는 하나의 오케스트레이터에 집중시키고, 엄격한 계약 아래 격리된 워커에는 집중적인 실행을 맡기십시오. 점검 가능한 의존성 그래프로 분해하고, 독립적인 하위 작업은 병렬화하며, 명시적인 충돌 규칙으로 결과를 조정하고, 예산과 중지 조건을 강제하며, 검증-재시도-대체 처리로 워커의 실패를 격리하십시오. 오케스트레이터는 원시적인 상호 대화가 아니라 요약을 바탕으로 추론하므로 계층 구조가 일관되고 제어 가능한 상태로 유지됩니다.
AI 튜터와 함께 AI Prompt Engineering을(를) 배우세요 — 무료
브라우저에서 실제 코드를 작성하고 실행하며, 24/7 AI 튜터로부터 즉각적인 도움을 받고, 웹이나 앱에서 중단한 부분부터 계속 학습하세요.
- 코스
- 53
- 레슨
- 199
자주 묻는 질문
“오케스트레이터와 작업자” 강의는 무료인가요?
네 — “오케스트레이터와 작업자” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 AI Prompt Engineering 강의 전체를 잠금 해제할 수 있습니다. AI Prompt Engineering 강의에는 총 4개의 강의가 포함되어 있습니다.
“오케스트레이터와 작업자”에서 뭘 배우나요?
계층적 조정 브라우저에서 직접 실행하는 실습 코드로 AI Prompt Engineering을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
AI Prompt Engineering을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 AI Prompt Engineering은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 2번째 강의입니다.
“오케스트레이터와 작업자” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 AI Prompt Engineering 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 AI Prompt Engineering 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- 역할과 전문화
- 오케스트레이터와 작업자
- 에이전트 간 통신
- 토론 및 투표 에이전트