Multi-Agent Debate: 토론을 통한 집단 지성
여러 AI 에이전트가 서로 토론하며 문제를 해결합니다. 다양한 관점과 상호 검증으로 더 나은 답에 도달합니다
2026년 2월 1일·7 min read·
ai
ai-agent
llm
multi-agent
debate
collaboration
토론을 통한 집단 지성
개념
Multi-Agent Debate는 여러 AI 에이전트가 서로 토론하며 문제를 해결하는 기법입니다. 다양한 관점과 상호 검증으로 더 나은 답에 도달합니다.
구조
에이전트 A: "답은 X입니다. 왜냐하면..."
↓
에이전트 B: "아니요, ...을 간과했습니다. 답은 Y입니다."
↓
에이전트 A: "좋은 지적입니다만, ...는 어떻게 생각하시나요?"
↓
[여러 라운드 반복]
↓
투표/중재로 최종 답 결정
왜 효과적인가?
| 이유 | 설명 |
|---|---|
| 다양한 관점 | 각 에이전트가 다른 방식으로 접근 |
| 상호 검증 | 한 에이전트의 오류를 다른 에이전트가 발견 |
| 할루시네이션 감소 | 근거 없는 주장이 쉽게 반박됨 |
| 신중한 추론 | 정당화를 위해 더 깊이 생각 |
성능
| 작업 | 단일 에이전트 | 다중 에이전트 토론 |
|---|---|---|
| 팩트 검증 | 70% | 84% |
| 수학 문제 | 65% | 78% |
토론 예시
수학 문제
[문제] "3개의 주사위를 던졌을 때, 합이 10이 될 확률은?"
[Agent A - 1라운드]
"각 주사위의 경우의 수는 6이므로
전체 경우의 수는 6³ = 216입니다.
합이 10이 되는 경우를 세면...
(1,3,6), (1,4,5), (2,2,6)...
약 27가지이므로 확률은 27/216 = 1/8입니다."
[Agent B - 반박]
"Agent A의 계산에서 순서를 고려한 중복이 있습니다.
(1,3,6)은 실제로 3! = 6가지 배열이 가능하지만,
(2,2,6)은 3!/2! = 3가지만 가능합니다.
정확히 다시 세어보면..."
[Agent A - 수정]
"맞습니다. 중복 순열을 고려하여 다시 계산하면
실제 경우의 수는 27가지가 맞고,
확률은 27/216 = 1/8입니다."
[최종 답변] 1/8 ✓
논리 문제
[문제] "모든 새는 날 수 있다. 펭귄은 새다.
따라서 펭귄은 날 수 있다. 이 논증은 타당한가?"
[Agent A]
"논리적 형식상 타당합니다.
대전제와 소전제에서 결론이 도출됩니다."
[Agent B - 반박]
"논리적 형식은 타당하지만, 대전제가 거짓입니다.
'모든 새는 날 수 있다'는 사실이 아닙니다.
펭귄, 타조, 키위 등 날지 못하는 새가 있습니다."
[Agent A - 수정]
"맞습니다. 논증의 형식적 타당성과
전제의 진리값을 구분해야 합니다.
이 논증은 형식적으로 타당하나,
대전제가 거짓이므로 건전하지 않습니다."
[최종 답변]
형식적으로 타당하나 건전하지 않음 ✓
조직 구조
Multi-Agent 시스템의 다양한 조직 구조:
| 구조 | 특징 | 장점 | 단점 |
|---|---|---|---|
| 중앙집중식 | 중재자가 조율 | 일관성, 빠른 결정 | 단일 실패점 |
| 분산식 | 동등한 참여 | 창발성, 다양성 | 합의 어려움 |
| 하이브리드 | 계층적 구조 | 균형 | 복잡성 |
역할 기반 토론
각 에이전트에 다른 역할을 부여:
[긍정적 비평가]
"이 접근의 장점은..."
[부정적 비평가]
"하지만 이런 문제점이..."
[통합자]
"두 관점을 종합하면..."
역할 예시
| 역할 | 책임 |
|---|---|
| 옹호자 | 제안을 지지하고 장점 강조 |
| 비판자 | 약점과 위험 지적 |
| 사실 확인자 | 주장의 근거 검증 |
| 중재자 | 합의 도출 |
동작 알고리즘
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
공유 지식 풀(Knowledge Pool)을 도입하여:
- 모든 에이전트가 동일한 배경 지식 접근
- 토론 품질 향상
- 정보 불일치 해소
관련 개념
- MADKE: 지식 강화 토론
- LLM Agent Survey: 협력 구조
- LATS: 토론 + 트리 탐색