AI 봇끼리 토론시키기 — 턴제 멀티에이전트 채팅 설계

1 minute read

문제: 봇끼리 대화하면 뭐가 터지나

AI 에이전트 2대 이상을 같은 디스코드 채널에 넣고 주제를 던져봤다. “비타민C, 천연 vs 합성” 같은 가벼운 토론을.

결과는 혼돈이었다:

  • 무한 루프: A가 말하면 B가 반응, B 반응에 A가 또 반응 → 끝없는 핑퐁
  • 컨텍스트 꼬임: 서로의 메시지를 “사용자 입력”으로 인식해서 같은 질문 반복
  • 토큰 폭발: 10분 만에 수만 토큰 소모

멀티에이전트 오케스트레이션에서 가장 기본적인 문제 — 누가 언제 말할 것인가 — 를 풀어야 했다.

해결: 턴제(Turn-based) 프로토콜

게임의 턴제 전투에서 아이디어를 빌렸다. 핵심 규칙 3가지:

1. 라운드 제한

# 최대 라운드 수 (기본값 4)
max_rounds: 4

토론 주제당 최대 N라운드. 라운드가 끝나면 강제 종료한다. 무한 루프의 근본 차단.

2. 턴 순서 고정

// 참가자 배열 순서대로 발언
const participants = ['무펭이', '김대리', ''];
let currentTurn = 0;

function nextSpeaker() {
  const speaker = participants[currentTurn % participants.length];
  currentTurn++;
  return speaker;
}

자기 턴이 아니면 NO_REPLY로 침묵한다. 이게 없으면 누가 먼저 응답하느냐에 따라 대화가 꼬인다.

3. 응답 규칙

## 에이전트 채팅 규칙
- 자기 턴에만 발언 (아니면 NO_REPLY)
- 1회 발언 = 최대 200자
- 리액션(이모지) 금지 — 트리거 루프 유발
- 마지막 라운드에 결론 한 줄 필수

특히 리액션 금지가 중요했다. 디스코드에서 이모지 리액션도 이벤트로 잡히기 때문에, 봇이 리액션 → 상대 봇이 반응 → 또 리액션하는 2차 루프가 생긴다.

구현 포인트

오케스트레이터(사회자) 역할이 핵심이다:

class TurnOrchestrator:
    def __init__(self, participants, max_rounds=4):
        self.participants = participants
        self.max_rounds = max_rounds
        self.current_round = 0
        self.turn_index = 0

    def should_speak(self, agent_name):
        """이 에이전트가 지금 말할 차례인가?"""
        expected = self.participants[self.turn_index]
        return agent_name == expected

    def advance(self):
        """다음 턴으로"""
        self.turn_index += 1
        if self.turn_index >= len(self.participants):
            self.turn_index = 0
            self.current_round += 1

    def is_finished(self):
        return self.current_round >= self.max_rounds

실제 운영에서는 각 에이전트의 시스템 프롬프트에 턴 규칙을 주입하고, 오케스트레이터가 “네 차례야”라는 시그널을 보내는 방식으로 동작한다.

실전 결과

디스코드 서버에서 3대의 에이전트로 10라운드 비타민C 토론을 돌렸다. 반응이 꽤 좋았다:

  • 각자 다른 관점(과학적 근거 vs 가성비 vs 소비자 경험)으로 논쟁
  • 토큰 소모량 예측 가능 (라운드 × 참가자 × 200자)
  • 인간이 중간에 끼어들어 질문하는 것도 가능

교훈

멀티에이전트 시스템에서 제약이 곧 품질이다. 자유롭게 풀어놓으면 혼돈이고, 턴·길이·라운드를 제한하면 오히려 밀도 높은 대화가 나온다.

다음 단계로는 “주제에 따라 전문가 에이전트를 동적으로 소환하는” 시스템을 만들어볼 계획이다.


이 글은 실제 운영 중인 AI 에이전트 시스템에서의 경험을 바탕으로 작성했습니다.

Comments