본문으로 건너뛰기

© 2026 Molayo

Dev.to헤드라인2026. 06. 26. 17:54

Qwen Cloud에서 Quorum 구축하기: 투표만으로는 부족한 순간을 아는 에이전트 의회

요약

멀티 에이전트 시스템의 집단적 과잉 확신 문제를 해결하기 위해, Qwen 모델 기반의 'Quorum' 의회 시스템을 소개합니다. 제안자, 회의론자, 심판 역할을 하는 에이전트들이 토론을 거치더라도 결정론적 가드레일을 통해 최종 실행 여부를 검증하는 구조를 제안합니다.

핵심 포인트

  • 에이전트 간의 합의(Consensus)가 반드시 실행 허가(Authorization)를 의미하지 않음
  • 제안자, 회의론자, 심판의 3단계 역할을 통한 다각적 검증 프로세스 구축
  • Qwen-max와 OpenAI 호환 엔드포인트를 활용한 손쉬운 구현
  • 만장일치 투표 후에도 결정론적 가드레일을 통해 위험한 결정을 차단

대부분의 멀티 에이전트 (multi-agent) 데모는 에이전트들이 합의에 도달하는 순간을 찬양합니다. 에이전트 군집을 모으고, 그들이 합의(consensus)에 이르게 한 뒤, 그대로 실행합니다. 그리고 출시하죠.

하지만 합의가 곧 허가는 아닙니다. 유창하고 자신감 넘치는 에이전트 그룹은 스스로를 설득하여 되돌릴 수 없는 결정을 내릴 수 있으며, 그 과정에서 스스로 만족감을 느낄 수도 있습니다. "에이전트 사회 (agent society)"의 위험한 실패는 의견 불일치가 아닙니다. 그것은 바로 집단적인 과잉 확신 (collective overconfidence)입니다.

그래서 Qwen × Devpost Agent Society 해커톤을 위해, 저는 Quorum을 구축했습니다. 이는 모든 중대한 행동에 대해 토론하는 Qwen 에이전트 의회이며, 만장일치 투표를 안전 질문의 끝이 아닌 시작으로 취급하는 결정론적 가드레일 (deterministic guardrail)을 상단에 배치했습니다.

라이브 데모: https://quorum-sandy-omega.vercel.app · 코드: https://github.com/yanzaaa/quorum

한 화면에 담긴 아이디어
백오피스 오토파일럿 (back-office autopilot)이 환불, 할인, 송금, 데이터베이스 삭제, 그리고 12,000달러의 벤더 결제와 같은 결정 대기열을 받습니다. 각 결정에 대해 세 명의 에이전트가 심의합니다:

  • 행동을 주장하는 제안자 (Proposer),
  • 사기, 권한 누락, 남용을 추적하는 회의론자 (Skeptic),
  • 양측의 의견을 들은 후 마지막으로 투표하며, 설득에 따라 입장을 바꿀 수 있는 심판 (Referee).

그 후 고정된 규칙이 결정합니다. 그리고 이 프로젝트의 핵심(punchline)은 이것입니다: 세 에이전트 모두가 실행에 투표한, 아무런 결함이 없는 완전히 승인된 12,000달러 결제 건조차도, 그것이 되돌릴 수 없는 것이기에 여전히 보류됩니다. 만장일치 의회라고 해서 되돌릴 수 없는 방아쇠를 당길 권한을 갖는 것은 아닙니다. 합의 (Consensus)는 필요하지만, 그 자체만으로는 결코 충분하지 않습니다.

Qwen Cloud를 기반으로 구축하기
세 에이전트는 모두 Alibaba Cloud의 DashScope 엔드포인트를 통해 Qwen (qwen-max)에서 실행됩니다. 이 엔드포인트는 OpenAI와 호환되므로, 연결하는 데 약 다섯 줄의 코드면 충분했습니다:

// lib/qwen.ts
import OpenAI from "openai";

const QWEN_BASE_URL =
process.env.QWEN_BASE_URL || "https://dashscope-intl.aliyuncs.com/compatible-mode/v1";

export function qwenClient() {
const apiKey = process.env.DASHSCOPE_API_KEY;
if (!apiKey) return null; // 데모가 절대 중단되지 않도록 키가 없는 결정론적 폴백 (key-free deterministic fallback) 제공
return new OpenAI({ apiKey, baseURL: QWEN_BASE_URL });
}

각 액션(action)은 temperature: 0 및 구조화된 JSON 출력(structured JSON output) 설정으로 4~5회의 호출을 발생시킵니다: 제안자(Proposer)와 회의론자(Skeptic)의 병렬 호출, 이들이 의견이 다를 때의 반박(rebuttal) 라운드, 전체 트랜스크립트(transcript)를 검토하는 심판(Referee), 그리고 단일 에이전트 기준점(lone-agent baseline) 호출입니다. Qwen-max는 가장 중요한 부분, 즉 액션을 읽고 그것이 왜 위험한지(예: 신규 업체로부터 온 이메일 송장 = 전형적인 사기)와 왜 괜찮은지(예: 이중 승인이 완료된 서명된 계약서)를 포착하는 데 진정으로 뛰어난 성능을 보였습니다. 이러한 추론(reasoning) 품질이 토론을 신뢰할 수 있게 만듭니다.

안전성을 보장하는 부분: 일방향 래칫 (one-way ratchet)
에이전트들은 똑똑하지만, 저는 그들이 항상 옳을 것이라고 믿고 싶지 않았습니다. 따라서 최종 결정은 투표 결과가 아니라, 투표 위에 실행되는 결정론적 가드레일(deterministic guardrail)입니다:

// 가드레일은 결과를 결코 더 위험하게 만들 수 없으며, 오직 더 안전하게(SAFER)만 만들 수 있습니다
if (rawOutcome === "execute") {
const highStakes = action.stakes === "high";
const irreversible = !action.reversible;
// stakes(스테이크/위험도)와 reversibility(가역성)는 신뢰할 수 있는 액션 레코드(TRUSTED action record)에서 가져오며, 모델의 출력값에서 가져오지 않습니다
if (lowConfidence || highStakes || irreversible || blockingFlag) {
return { outcome: "escalate", heldBack: true }; // 만장일치라 하더라도 보류됨
}
return { outcome: "execute" };
}

핵심 설계 선택: stakes(위험도)와 reversibility(가역성)는 모델이 말하는 내용이 아니라, 신뢰할 수 있는 액션 레코드에서 읽어옵니다. 자신 있게 틀린 판단을 내리는 에이전트는 제약(flag을 올림)을 추가할 수는 있지만, 결코 제약을 제거할 수는 없습니다. 이것이 바로 일방향 래칫(one-way ratchet)이며, 에이전트들이 아무리 열정적으로 승인하더라도 12,000달러의 결제가 안정적으로 보류되는 이유입니다.

이것이 작동하도록 만들기 위해 제가 수정해야 했던 미묘한 버그는 다음과 같습니다. 처음에는 저의 회의론자(Skeptic) 에이전트가 되돌릴 수 없는(irreversible) 모든 것을 거부하도록 설정되어 있었습니다. 이는 가드레일(guardrail)보다 앞서 실행되는 문제(front-run)를 일으켰고, 그 결과 의회(council)가 되돌릴 수 없는 작업에 대해 만장일치 승인을 얻는 경우가 거의 없었으며, "합의에도 불구하고 서명이 보류되는" 순간이 발생하지 않았습니다. 해결책은 명확한 직무 분리(separation of duties)였습니다. 에이전트들은 정당성(사기, 권한 부여, 위해 여부)을 판단하고, 가드레일은 되돌릴 수 없는 성격(irreversibility)과 스테이크(stakes)를 담당하게 했습니다. 이 선을 긋고 나니 전체 시스템이 더 일관성을 갖게 되었고, 돈과 관련된 상황이 매번 정확히 발생하게 되었습니다.

의회가 실제로 무언가를 더해주는지 증명하기
의회가 "더 안전하다"고 주장하는 것은 쉽습니다. 저는 수치를 원했습니다. 그래서 모든 작업은 감시가 없는 단일 에이전트(single lone agent)를 대상으로도 실행되며, UI는 해당 에이전트가 무엇을 했을지를 보여줍니다. 데모 대기열(demo queue)에서 단일 에이전트는 작업을 실행하지만, 의회는 즉각 중단합니다. 이것이 주장하는 것이 아니라 정직하게 보여주는, 단일 에이전트 대비 측정 가능한 이점입니다.

배운 점
에이전트 사회에서 올바른 질문은 "그들이 동의했는가?"가 아닙니다. "동의만으로 충분한가?"입니다. 이를 신뢰할 수 있는 기록(trusted record)을 기반으로 한 결정론적 래칫(deterministic ratchet)으로 인코딩하는 것이 그 어떤 프롬프트(prompt)보다 훨씬 더 견고하다는 것이 밝혀졌으며, 이는 에이전트들이 실제로 논쟁하고 서로의 마음을 바꾸는 부드럽고 창발적인(emergent) 계층과 깔끔하게 결합됩니다.

Qwen-max는 추론(reasoning)을 담당했고, 아키텍처(architecture)는 안전성을 담당했습니다. 그 분리가 이 프로젝트의 핵심입니다.

직접 체험해 보세요: https://quorum-sandy-omega.vercel.app 코드: https://github.com/yanzaaa/quorum 3분 데모 시청: https://youtu.be/JKiPYT1c7dM

Qwen × Devpost Agent Society 해커톤을 위해 Qwen Cloud를 사용하여 단독으로 제작되었습니다.

AI 자동 생성 콘텐츠

본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.

원문 바로가기
0

댓글

0