Multi-Agent Debate
여러 AI 에이전트가 서로 토론하며 문제를 해결하는 방식. 다양한 관점과 상호 검증으로 더 나은 답에 도달합니다
여러 에이전트가 서로 반박하고 검증하며 단일 모델보다 나은 답에 수렴하는 기법입니다.
개념
Multi-Agent Debate는 여러 AI 에이전트가 서로 토론하며 문제를 해결하는 기법입니다. 다양한 관점과 상호 검증으로 더 나은 답에 도달합니다.
구조
에이전트 A: "답은 X입니다. 왜냐하면..."
에이전트 B: "아니요, ...을 간과했습니다. 답은 Y입니다."
에이전트 A: "좋은 지적입니다. 그렇다면 ...는 어떻게 보는가?"
여러 라운드를 반복한 뒤, 투표 또는 중재로 최종 답을 결정합니다.
왜 잘 동작하는가
| 이유 | 설명 |
|---|---|
| 다양한 관점 | 각 에이전트가 다른 방식으로 접근 |
| 상호 검증 | 한 에이전트의 오류를 다른 에이전트가 발견 |
| 할루시네이션 감소 | 근거 없는 주장이 쉽게 반박됨 |
| 신중한 추론 | 정당화를 위해 더 깊이 생각 |
성능
| 작업 | 단일 에이전트 | 다중 에이전트 토론 |
|---|---|---|
| 팩트 검증 (MMLU) | 63.9% | 71.1% |
| 수학 문제 (GSM8K) | 77.0% | 85.0% |
위 수치는 Du 외(2023, arXiv:2305.14325)의 표 1과 표 2에서 가져왔습니다. 단일 에이전트와 에이전트 3개, 토론 2라운드 조건을 비교합니다. 같은 논문은 Biographies가 66.0%에서 73.8%, 산술이 67.0%에서 81.8%로 오른 결과도 보고합니다. 향상 폭은 모델과 벤치마크, 라운드 수에 따라 달라집니다.
토론 예시
수학 문제
문제: "3개의 주사위를 던졌을 때, 합이 10이 될 확률은?"
Agent A (1라운드): "각 주사위의 경우의 수는 6이므로 전체 경우의 수는 입니다. 합이 10이 되는 조합은 (1,3,6), (1,4,5), (2,2,6), (2,3,5), (2,4,4), (3,3,4) 6가지이므로 확률은 입니다."
Agent B (반박): "Agent A는 순서를 무시한 조합만 셌습니다. 분모 216은 순서를 구분한 값이므로 분자도 순서를 펼쳐야 합니다. (1,3,6)·(1,4,5)·(2,3,5)는 각각 가지, (2,2,6)·(2,4,4)·(3,3,4)는 같은 눈이 둘이라 각각 가지입니다."
Agent A (수정): "맞습니다. 펼치면 가지이므로 확률은 입니다."
최종 답변: ✓
논리 문제
문제: "모든 새는 날 수 있습니다. 펭귄은 새입니다. 따라서 펭귄은 날 수 있습니다. 이 논증은 타당한가?"
Agent A: "논리적 형식상 타당합니다. 대전제와 소전제에서 결론이 도출됩니다."
Agent B (반박): "논리적 형식은 타당하지만, 대전제가 거짓입니다. '모든 새는 날 수 있다'는 사실이 아닙니다. 펭귄, 타조, 키위 등 날지 못하는 새가 있습니다."
Agent A (수정): "맞습니다. 논증의 형식적 타당성과 전제의 진리값을 구분해야 합니다. 이 논증은 형식적으로 타당하나, 대전제가 거짓이므로 건전하지 않습니다."
최종 답변: 형식적으로 타당하나 건전하지 않음 ✓
조직 구조
Multi-Agent 시스템의 다양한 조직 구조:
| 구조 | 특징 | 장점 | 단점 |
|---|---|---|---|
| 중앙집중식 | 중재자가 조율 | 일관성, 빠른 결정 | 단일 실패점 |
| 분산식 | 동등한 참여 | 창발성, 다양성 | 합의 어려움 |
| 하이브리드 | 계층적 구조 | 균형 | 복잡성 |
역할 기반 토론
각 에이전트에 다른 역할을 부여:
긍정적 비평가: "이 접근의 장점은..."
부정적 비평가: "하지만 이런 문제점이..."
통합자: "두 관점을 종합하면..."
역할 예시
| 역할 | 책임 |
|---|---|
| 옹호자 | 제안을 지지하고 장점 강조 |
| 비판자 | 약점과 위험 지적 |
| 사실 확인자 | 주장의 근거 검증 |
| 중재자 | 합의 도출 |
동작 알고리즘
아래 코드는 초기 응답 수집 → 라운드 반복 → 합의 확인 → 최종 결정 순으로 동작합니다. max_rounds는 토론 라운드 상한이고, responses는 에이전트별 최신 응답을 담는 딕셔너리입니다. check_consensus가 합의를 감지하면 조기 종료하고, 마지막 vote_or_mediate가 아래 '합의 방식' 표의 전략으로 최종 답을 정합니다.
def multi_agent_debate(question, agents, max_rounds=3):
responses = {}
# 초기 응답 수집
for agent in agents:
responses[agent.id] = agent.generate(question)
# 토론 라운드
for round in range(max_rounds):
for agent in agents:
# 다른 에이전트의 응답 확인
others_responses = {
k: v for k, v in responses.items()
if k != agent.id
}
# 반박 또는 수정
responses[agent.id] = agent.generate(
f"질문: {question}\n"
f"다른 에이전트 응답: {others_responses}\n"
f"당신의 기존 응답: {responses[agent.id]}\n"
f"반박하거나 수정하세요."
)
# 합의 확인
if check_consensus(responses):
break
# 최종 답변 결정 (투표 또는 중재)
return vote_or_mediate(responses)합의 방식
| 방식 | 설명 |
|---|---|
| 다수결 | 가장 많은 지지를 받은 답 |
| 가중 투표 | 신뢰도에 따른 가중치 |
| 중재자 결정 | 별도의 중재 에이전트 |
| 합의 도출 | 모든 에이전트가 동의 |
한계
- 비용: 여러 에이전트 호출로 비용 증가
- 시간: 여러 라운드 필요
- 합의 실패: 영원히 합의에 도달하지 못할 수 있음
- 동질성: 같은 모델은 비슷한 편향 가능
MADKE
MADKE는 공유 지식 풀(Knowledge Pool)을 도입한 Multi-Agent Debate 확장형입니다. 모든 에이전트가 같은 배경 지식에 접근하므로 토론 품질이 오르고 정보 불일치가 줄어듭니다.
관련 개념
- MADKE: 지식 강화 토론
- LLM Agent Survey: 협력 구조
- LATS: 토론 + 트리 탐색
정리
Multi-Agent Debate는 여러 에이전트가 서로의 답을 반박하고 검증하는 과정에서 단일 모델의 오류와 할루시네이션을 줄입니다. 다양한 관점과 상호 검증이 효과의 핵심이지만, 호출 횟수와 라운드가 늘어 비용과 지연이 커지고 같은 모델끼리는 편향이 겹칩니다. 그래서 정답 검증이 까다롭고 비용을 감수할 만한 작업, 예컨대 팩트 검증이나 복잡한 추론에 우선 적용합니다. 공유 지식 풀로 사실 기반을 맞추는 MADKE처럼, 토론 구조를 보완하는 확장도 함께 검토하면 합의 품질을 높일 수 있습니다.