Multi-Agent Debate: 토론을 통한 집단 지성
여러 AI 에이전트가 서로 토론하며 문제를 해결하는 방식. 다양한 관점과 상호 검증으로 더 나은 답에 도달한다
토론을 통한 집단 지성
개념
Multi-Agent Debate는 여러 AI 에이전트가 서로 토론하며 문제를 해결하는 기법이다. 다양한 관점과 상호 검증으로 더 나은 답에 도달한다.
구조
에이전트 A: "답은 X이다. 왜냐하면..."
에이전트 B: "아니요, ...을 간과했다. 답은 Y이다."
에이전트 A: "좋은 지적이다만, ...는 어떻게 생각하시나요?"
여러 라운드를 반복한 뒤, 투표 또는 중재로 최종 답을 결정한다.
왜 효과적인가?
| 이유 | 설명 |
|---|---|
| 다양한 관점 | 각 에이전트가 다른 방식으로 접근 |
| 상호 검증 | 한 에이전트의 오류를 다른 에이전트가 발견 |
| 할루시네이션 감소 | 근거 없는 주장이 쉽게 반박됨 |
| 신중한 추론 | 정당화를 위해 더 깊이 생각 |
성능
| 작업 | 단일 에이전트 | 다중 에이전트 토론 |
|---|---|---|
| 팩트 검증 | 70% | 84% |
| 수학 문제 | 65% | 78% |
토론 예시
수학 문제
문제: "3개의 주사위를 던졌을 때, 합이 10이 될 확률은?"
Agent A (1라운드): "각 주사위의 경우의 수는 6이므로 전체 경우의 수는 이다. 합이 10이 되는 경우를 세면... (1,3,6), (1,4,5), (2,2,6)... 약 27가지이므로 확률은 이다."
Agent B (반박): "Agent A의 계산에서 순서를 고려한 중복이 있다. (1,3,6)은 실제로 가지 배열이 가능하지만, (2,2,6)은 가지만 가능하다. 정확히 다시 세어보면..."
Agent A (수정): "맞다. 중복 순열을 고려하여 다시 계산하면 실제 경우의 수는 27가지가 맞고, 확률은 이다."
최종 답변: ✓
논리 문제
문제: "모든 새는 날 수 있다. 펭귄은 새다. 따라서 펭귄은 날 수 있다. 이 논증은 타당한가?"
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: 토론 + 트리 탐색