LLM Council: 사용자의 질문에 대해 여러 LLM이 함께 토론하고 합의된 답변을 도출하는 프로젝트 (feat. Andrej Karpathy)

LLM Council 소개

Andrej Karpathy가 공개한 LLM Council은 여러 거대언어모델(LLM)이 모여 사용자의 질문에 대해 토론하고 합의된 답변을 도출하는 흥미로운 오픈소스 프로젝트입니다. 마치 원탁회의처럼, 서로 다른 특성을 가진 AI 모델들이 각자의 의견을 내고 서로의 답변을 비평하며, 최종적으로 '의장(Chairman)' 모델이 이를 종합하여 최적의 해답을 제시하는 구조를 가지고 있습니다. 이 프로젝트는 단순한 챗봇을 넘어, '집단 지성'을 AI에 적용했을 때 어떤 결과가 나올 수 있는지 보여주는 실험적인 도구입니다.

이 프로젝트는 카파시가 "주말에 재미로 만든(Vibe Coding)" 결과물로, 복잡한 엔터프라이즈 솔루션보다는 개발자들이 LLM의 상호작용을 이해하고 실험해 볼 수 있는 직관적인 플랫폼을 지향합니다. 사용자는 OpenAI의 GPT 시리즈, 구글의 Gemini, Anthropic의 Claude, xAI의 Grok 등 다양한 최신 모델들을 '의원'으로 구성하여, 단일 모델이 놓칠 수 있는 관점을 보완하고 보다 정확하고 균형 잡힌 답변을 얻을 수 있습니다. 특히 어려운 질문이나 주관적인 판단이 필요한 문제에 대해 여러 모델의 '교차 검증' 과정을 거치므로, 환각(Hallucination) 현상을 줄이고 신뢰도를 높이는 데 도움을 줄 수 있습니다.

LLM Council은 개발자들에게 '멀티 에이전트(Multi-Agent)' 시스템의 기초적인 형태를 매우 깔끔한 코드로 보여줍니다. 최근 AI 트렌드가 단일 모델의 성능 향상에서 여러 모델의 협업으로 이동함에 따라, 이 프로젝트는 복잡한 프레임워크 없이도 모델 간의 상호작용 로직을 구현하는 방법을 배울 수 있는 훌륭한 참고 자료가 됩니다. 백엔드는 Python(FastAPI)으로, 프론트엔드는 React로 구성되어 있어 웹 개발에 익숙한 엔지니어라면 누구나 쉽게 설치하고 수정하여 자신만의 'AI 위원회'를 꾸릴 수 있습니다.

:warning: Andrej Karpathy는 이 프로젝트를 "99% Vibe Code"라고 표현하며, 완벽한 제품보다는 영감을 주기 위한 도구임을 강조했습니다. 코드는 언제든 사라질 수 있고 라이브러리 의존성도 최소화되어 있습니다. 이는 개발자들에게 "직접 코드를 뜯어보고, LLM에게 수정해달라고 요청하며 자신만의 도구로 발전시키라"는 메시지를 담고 있습니다. 실제로 이 프로젝트는 복잡한 추상화 계층(LangChain 등) 없이도 순수 Python 코드로 강력한 멀티 에이전트 시스템을 구현할 수 있음을 보여주는 좋은 예시입니다.

LLM Council의 동작 원리

LLM Council은 사용자의 질문을 처리하기 위해 다음과 같은 3단계 프로세스를 거칩니다. 이 과정은 인간의 회의 방식과 매우 유사하게 설계되었습니다:

  • 1단계: 초기 의견 제시 (First Opinions): 사용자가 질문을 입력하면, 사전에 설정된 '위원회 멤버(Council Models)'들이 각자 독립적으로 답변을 생성합니다. 예를 들어, GPT-5.1, Claude 3.7 Sonnet, Gemini 3 Pro 등이 동시에 각자의 지식과 논리를 바탕으로 초안을 작성합니다. 사용자는 탭 뷰(Tab View)를 통해 각 모델의 날것 그대로의 답변을 비교해서 볼 수 있습니다.

  • 2단계: 상호 비평 및 평가 (Review & Ranking): 각 모델은 다른 모델들이 작성한 답변을 익명으로 전달받습니다(편향 방지). 이후, 각 모델들은 다른 모델의 답변에 대해 정확성, 통찰력 등을 기준으로 점수를 매기거나 비평을 남깁니다. 이 과정에서 모델은 자신의 초기 답변에서 놓쳤던 부분을 인지하거나, 다른 모델의 우수한 점을 파악하게 됩니다.

  • 3단계: 최종 합의 (Final Response): 지정된 '의장(Chairman)' 모델(예: 가장 성능이 좋은 모델로 설정)이 모든 모델의 답변과 비평 내용을 종합합니다. 의장은 각 의견의 장단점을 분석하여, 중복을 제거하고 가장 논리적이고 정확한 내용을 통합한 최종 답변을 작성하여 사용자에게 제시합니다.

LLM Council 설치 및 사용

개발자가 로컬 환경에서 직접 실행해 보기 위해서는 Python의 uv와 Node.js 환경이 필요합니다.

LLM Council 프로젝트의 GitHub 저장소를 복제한 뒤, 프로젝트 루트에서 다음과 같은 명령어로 의존성을 설치합니다:

# Backend
uv sync

# Frontend
cd frontend
npm install
cd ..

이후, 여러 LLM 서비스 제공자를 한 번에 사용하기 위해 OpenRouter 환경을 설정합니다. 프로젝트 루트에 .env 파일을 생성하고 OPENROUTER_API_KEY를 입력합니다. OpenRouter를 사용하므로 별도로 각 제조사의 키를 발급받을 필요가 없어 편리합니다.

마지막으로 backend/config.py 파일을 수정하여 LLM Council에 참여할 모델과 의장 모델을 지정할 수 있습니다. 예를 들어 다음과 같이 설정합니다:

# 참여하는 모델들
COUNCIL_MODELS = [
    "openai/gpt-5.1",
    "google/gemini-3-pro-preview",
    "anthropic/claude-sonnet-4.5",
    "x-ai/grok-4",
]

# 의장 모델
CHAIRMAN_MODEL = "google/gemini-3-pro-preview"

이제 Backend와 Frontend를 실행합니다. 시작 스크립트(start.sh)를 사용하여 한 번에 실행하거나, 각각 실행할 수 있습니다:

# 시작 스크립트를 사용하여 실행
./start.sh

# 각각 실행
uv run python -m backend.main
cd frontend
npm run dev

실행 후에는 브라우저에서 http://localhost:5173 을 열어 사용 가능합니다.

:github: LLM Council 프로젝트 GitHub 저장소

https://github.com/karpathy/llm-council




이 글은 GPT 모델로 정리한 글을 바탕으로 한 것으로, 원문의 내용 또는 의도와 다르게 정리된 내용이 있을 수 있습니다. 관심있는 내용이시라면 원문도 함께 참고해주세요! 읽으시면서 어색하거나 잘못된 내용을 발견하시면 덧글로 알려주시기를 부탁드립니다. :hugs:

:pytorch:파이토치 한국 사용자 모임:south_korea:이 정리한 이 글이 유용하셨나요? 회원으로 가입하시면 주요 글들을 이메일:love_letter:로 보내드립니다! (기본은 Weekly지만 Daily로 변경도 가능합니다.)

:wrapped_gift: 아래:down_right_arrow:쪽에 좋아요:+1:를 눌러주시면 새로운 소식들을 정리하고 공유하는데 힘이 됩니다~ :star_struck:

2개의 좋아요

AI끼리 서로 토론하면 더 좋은 의견이나올지 궁금하긴하네요

앗, 그럴 수도 있겠군요. 저는 처음 보면서 더 좋은 답변을 얻기보다는, Multi-Agent System에서 검증자(verifier)나 비평가(critic) 역할의 에이전트를 넣는 것처럼 hallucination으로 인한 더 나쁜 답변을 배제하기 위한게 아닐까 하는 생각을 했었거든요.
@JunHan_Zang 님 댓글을 보니 상호 평가나 합의 과정에서 더 나은 답이 나올 수 있을지도 궁금하네요 :thinking:

1개의 좋아요