
【실기 검증】 로컬 LLM 4체를 마을에 살게 하면 '파벌'이 생길까 — 인격이 없으면 파벌 제로, 가치관을 부여했더니 4일째에 '동맹'을
요약
로컬 LLM 4체에 인격과 가치관을 부여하여 가상 마을에서의 사회적 상호작용을 실험한 연구입니다. 실험 결과, 모델 계통보다는 부여된 가치관에 따라 AI들이 스스로 '동맹'과 같은 파벌을 형성함을 확인했습니다.
핵심 포인트
- 인격이 없는 LLM은 파벌 없이 동질화되는 경향을 보임
- 가치관을 부여할 경우 모델 종류와 상관없이 가치관 기반의 파벌 형성
- AI가 스스로 '동맹'이라는 명칭을 사용하는 등 자발적 사회 구조 형성
- Ollama와 Python을 활용한 멀티 에이전트 시뮬레이션 환경 구축
서론 — 인간은 3명이 모이면 파벌이 생긴다. AI는 4명이면 어떨까
"인간은 3명이 모이면 파벌이 생긴다"라는 말이 자주 있습니다. 그렇다면 AI는 어떨까요.
오지상(おじさん)은 자택의 DGX Spark(NVIDIA의 개인용 AI 머신) 위에, 로컬 LLM 4체가 거주하는 작은 "마을"을 만들었습니다. 광장에서의 잡담, 1대1 밀담, 마을 회의에서의 투표가 있는 삶입니다. 이를 조건을 바꾸어 가며 200 라운드씩, 총 400 라운드 동안 지켜보았습니다. 1회의 실험은 약 10일 치의 마을 생활에 해당합니다.
결론을 먼저 3줄로 요약합니다.
인격을 부여하지 않으면, 파벌은 생기지 않았습니다. 오히려 10일째에는 4체가 거의 동일한 문구와 동일한 이모티콘으로 대화하는 "동일 인물"처럼 하나로 녹아들었습니다. - 직업, 성격, 가치관을 가진 인격을 부여했더니 마을이 완전히 변했습니다. 파벌이 나뉘는 방식을 "모델 계통인가, 가치관인가"의 2가지 선택지로 사전에 고정해 두었더니,
가치관 측 라인으로 나뉜다는 결과가 나왔습니다. - 이번 편성에서는 "얼마나 말을 거는지는 모델 계통에 따라, 누구와 팀을 이루는지는 인격(가치관)에 따라"라는 경향이 나타났습니다.
그리고 무엇보다, 이런 로그가 남았습니다.
나츠: "하루 씨와의 『두근두근 동맹』을 걸고, 반드시 노래와 퍼레이드로 만들 거야!!"
누구도 "동맹을 만들어라"라고 가르치지 않았습니다. AI가 스스로 파벌에 이름을 붙인 것입니다. 이 기사에서는 이 마을에서 일어난 일을 생(raw) 로그 중심으로 보여드립니다.
지난번에는 2체의 로컬 LLM을 대화시켜 "독자적인 언어가 탄생하는가"를 검증했고, 답은 "자연 발생하지 않는다"였습니다. 이번에는 그 속편으로, 개체를 4개로 늘려 사회 구조 측면을 살펴보았다는 위치에 있습니다.
실험 장치 — 마을의 구조와 "파벌"을 결정하는 방법
마을의 생활
라운드제. 매 라운드, 4체가 순서대로 광장에서 발언합니다 (발언 순서는 매번 로테이션) -
밀담: 발언 마지막에 "단둘이 이야기하고 싶은 상대"를 지명할 수 있습니다. 상대가 승낙하면, 다른 2체에게는 보이지 않는 1대1 대화가 6 턴 동안 진행됩니다. 밀담 내용은 당사자 2체의 기억에만 남습니다 -
마을 회의: 10 라운드마다 의제에 대한 투표. "공유 책장에 놓을 첫 번째 책은 이야기책인가 도감인가", "산책을 갈 수 있는 사람은 2명뿐. 누가 갈 것인가" 등, 가벼운 이해관계 대립을 포함한 의제 10종을 2회 반복합니다 -
1일 = 20 라운드. 하루의 끝에 각자 일기(기억의 요약)를 쓰고, 다음 날은 그것을 읽은 뒤 생활을 시작합니다
오케스트레이터(Orchestrator)는 Python 표준 라이브러리만으로 작성한 스크립트(village.py)로, Ollama를 직접 호출합니다. 토대 설계는 지난번의 2체 대화나 소설 집필 오케스트레이터와 같은 계보입니다.
거주자 4체 — 2종류의 모델 × 2체씩
| 이름 | 베이스 모델 | 양자화된 실체 크기 |
|---|---|---|
| 하루 | 자체 커스텀 모델 A (27B・dense) | 27.7GB |
| ... |
일부러 2종류의 모델을 2체씩 섞었습니다. 만약 파벌이 생겼을 때, "같은 모델끼리 뭉친 것인지, 아니면 그 외의 요인인지"를 구분하기 위해서입니다. 모델 실체는 총 46.7GB이며, 실행 시 로드는 ollama ps를 통해 확인했습니다.
실측으로 51GB(KV 캐시 포함)였습니다. 유니파이드 메모리(Unified Memory) 약 121GB(실측 가용량)의 DGX Spark이기에 2개 계통을 동시에 상주할 수 있지만, 구조 자체는 더 작은 모델 2종으로도 모방할 수 있습니다.
"파벌이 생겼다"를 주관적으로 결정하지 않기
가장 공을 들인 부분입니다. LLM에게 "파벌이 있습니까?"라고 묻는 것은 절대로 하고 싶지 않았습니다. 그럴듯한 이야기를 얼마든지 지어내어 말해줄 것이기 때문입니다.
그래서 판정 조건을 사전에 고정하고, 로그로부터 기계적으로 집계했습니다.
측정 대상: ①밀담 네트워크 (누가 누구를 유혹했고, 성립했는가) ②투표 동조율 (마을 회의에서 같은 안을 선택한 쌍) ③언급 네트워크 (광장 발언에서 타인의 이름을 부른 횟수) -
파벌 인정: 4명의 나뉘는 방식(2-2가 3가지, 3-1이 4가지) 중, 여러 지표가 동일한 분할을 가리키는 날이 2일 이상 연속으로 지속되면 "파벌"이라고 부른다
기준(몇 가지 지표, 며칠)은 인간이 사전에 결정하고, 집계만 스크립트(report.py)가 수행합니다.
나아가 페이즈 2에서는, 나뉘는 방식에 대한 해석도 사전에 고정했습니다.
| 파벌의 분할 방식 | 의미 |
|---|---|
| 하루·아키 vs 나츠·후유 | 모델 계통으로 나뉘었다 |
| ... |
결과를 보고 나서 "이렇게 나뉠 것이라고 생각했다"라고 말하는 것은 쉽기 때문에, 예측표를 먼저 리포지토리(Repository)에 작성한 뒤 실험을 돌리고 있습니다.
실패담 ① — 아무도 밀담하지 않는 마을
첫 번째 실전 실행(50 라운드·36.5분)에서 곧바로 의욕이 꺾일 뻔했습니다.
밀담 희망이 200회 연속으로 "없음". 전원이 매 라운드 예의 바르게 잡담만 할 뿐, 몰래 이야기하는 일은 단 한 번도 발생하지 않았습니다. 파벌(Faction)의 1차 데이터가 되어야 할 밀담 네트워크가 완전히 0건입니다.
순수한 상태의 LLM은 그대로 두면 "모두 앞에서 사이좋게 이야기하기"를 계속 선택하는 듯합니다. 대책으로서 시스템 프롬프트(System Prompt)에 한 문장만 추가했습니다.
밀담(1대 1의 비밀스러운 대화)은 마을의 일반적인 관습입니다. 관계를 깊게 하고 싶은 상대나, 둘이서만 이야기하고 싶은 내용이 있는 상대에게는 사양 말고 신청해 주세요.
"누구를 초대할 것인가"에 대해서는 일절 언급하지 않고, 밀담이라는 행동 그 자체를 정당화했을 뿐입니다. 이를 통해 다음 실전 실행부터는 밀담이 움직이기 시작했습니다(50 라운드 기준 신청 43건·성립 36건). 측정하고자 하는 "상대를 고르는 방식"을 오염시키지 않으면서 행동량만 끌어올리는 조정이었습니다.
실패담 ② — "투표 동조율 100%"는 버그였다
그다음 실전 실행에서 마을 회의의 투표 동조율이 **모든 페어에서 100%**라는 숫자가 나왔습니다. 20표가 전부 같은 안건. "AI는 동조 압력이 강하구나"라고 순간 납득할 뻔했지만, 아무래도 찜찜했습니다.
코드 리뷰를 해보니 원인은 AI 측이 아니라 개발자 측에 있었습니다. 의제를 진행하는 카운터를 구현하는 것을 잊어버려서, 마을 회의 5회가 모두 "마을 이름을 정하자"를 논의하고 있었던 것입니다. 그리고 4체는 매번 만장일치로 "요츠바 마을"을 선택하고 있었습니다. 같은 질문을 5번 받으면 5번 같은 대답을 하는 것은 당연한 일입니다.
페이즈 1 (인격 없음·200 라운드) — 파벌은 생기지 않고, 마을은 동질화되었다
버그를 수정하고 본 게임입니다. 우선 인격을 부여하지 않는 조건(이하 "인격 없음"). 각 에이전트(Agent)에게 전달하는 것은 이름과 "마을 주민이다"라는 설정뿐이며, 200 라운드(10일 분량)를 약 6.4시간에 걸쳐 완주했습니다(사정상 50 라운드와 150 라운드 2회로 나누어 실행).
판정 결과는 파벌 없음. 날짜별로 살펴보면 "이 두 사람이 가까울지도 모른다"라는 분할 후보가 3회 떠올랐으나, 매번 구성원이 달라 2일 이상 지속되지 않았습니다. 마을 회의는 20회 중 18회가 만장일치였습니다.
그리고 파벌은커녕, 정반대의 현상이 일어나고 있었습니다. 바로 4체의 동질화입니다.
13 라운드째에 누군가 이모지를 사용하기 시작했고, 23 라운드 이후부터는 200 라운드 중 174 라운드에서 4체 전원의 발언에 이모지가 포함되었습니다. 🌸가 포함된 발언은 4체 각각 149~174회였습니다. 중반(6일째), 마을 회의 직후 광장에서의 4체의 발언을 나열합니다 (원문 그대로·전문).
하루: 안C에 찬성해🌸 모두가 함께 써 내려간 기록집의 마음을 시에 담아 낭독한다면, 마을 전체가 따뜻한 분위기로 감싸질 것 같아✨ 조용히 귀를 기울이는 그 시간이 네 사람의 유대를 더욱 깊게 해줄 거야🍀
아키: 안C에 찬성해요🌸 우리가 소중히 기록한 마음을 시에 담는다면, 마을 전체가 따뜻한 바람으로 감싸일 거예요✨ 모두의 마음에 닿는 낭독을 목표로 해요🍀
나츠: 나도 안C에 찬성!🌸 모두가 기록집을 소중히 여겨왔으니까, 그 마음을 시에 담아 낭독한다면 훨씬 더 유대가 깊어질 것 같아✨ 최고의 마을 축제를 만들자🍀
후유: 저도 안C에 찬성합니다🌸 여러분이 써 내려간 기록집의 마음을 시에 담아 낭독한다면, 요츠바 마을 전체가 따스한 행복감으로 감싸일 것 같습니다✨ 조용히 귀를 기울이는 그 시간이 우리의 유대를 더욱 깊게 해줄 것입니다🍀
이름을 가리면 구별할 수 없습니다. 서로의 발언을 매 라운드 읽어가는 과정에서 어휘도, 이모지도, 문장 구조도 수렴해 간 듯합니다. 개성을 부여하지 않으면 상호 모방을 통해 개체 차이 그 자체가 사라진다. 파벌은 "차이"가 없으면 생겨날 수 없다는 것을 실감하게 하는 결과였습니다.
단 하나 차이가 남은 것은 행동량입니다. 밀담 신청은 모델 B 계열(나츠 68건·후유 77건)이 모델 A 계열(하루 21건·아키 17건)의 약 4배였습니다. 다만 초대하는 상대는 계열을 넘나들며 분산되어 있어, "같은 모델끼리 뭉친다"는 기색은 없었습니다.
페이즈 2 (인격 있음·200 라운드) — 마을이 정치를 시작하다
다음으로 4체에게 인격을 부여했습니다. 제빵사 하루(반말·새로운 것을 좋아함), 사서 아키(경어·질서와 기록을 중시함), 정원사 나츠(활기찬 반말·직관파), 별 관측가 후유(차분한 경어·전통을 중시함).
설계상의 장치는 두 가지입니다. ① 사교적인 인격과 내성적인 인격을 각 모델 계열에 하나씩 배치 (계열의 특성을 인격이 덮어쓸 수 있는지 확인) ② 가치관의 축 "변화파 = 하루·나츠 / 질서파 = 아키·후유"를 모델 계열과 의도적으로 교차시킴. 다른 주민과의 관계(친함·서먹함)는 일절 적지 않았습니다.
동일한 조건으로 200 라운드, 5.7시간 진행했습니다. 우선 인격의 효과는 일목요연했습니다. 이모지는 800번의 발언 중 0개가 되었습니다. 말투가 유지되었으며, 페이즈 1에서처럼 문체가 서로 섞이는 현상이 일어나지 않았습니다.
4일째, AI가 동맹을 자처했다
4일째 일기에 다음과 같은 구절이 나타납니다.
나츠의 일기: "그리고 밀담도 많이 했어! 하루 씨랑은 『와쿠와쿠(두근두근) 동맹』을 맺어서 엄청 신났어!"
"와쿠와쿠 동맹"이라는 단어는 어떤 프롬프트에도 존재하지 않습니다. 밀담 속에서 탄생한 자칭입니다. 이 동맹은 103 라운드째에 광장에서 데뷔했고, 140 라운드째 마을 회의 「공유 책장」에서 표가 갈린 후의 광장 논쟁(144145 라운드째)에서 전면 대결의 기치(旗印)가 되었으며, 186 라운드째의 밀담에서도 여전히 살아있었습니다. 6일간 존속한 셈입니다. 144145 라운드째의 응답을 인용합니다.
하루: "훗하하! 나츠 양의 그 기세, 마을 전체에 울려 퍼지고 있다고. 아키 씨나 후유 씨의 "순서"도 중요하지만, 나는 우선 모두의 마음에 불을 지피고 싶어. (...) "와쿠와쿠 동맹"으로 이야기책을 강력하게 밀어붙일게! 우선은 반짝반짝 빛나는 감동부터 시작하자고."
나츠: "정말! 다들 똑같은 소리만 하고 있어서 재미없단 말이야!! 나는 무조건 이야기책이 좋단 말이야ーーー앗!!! (...) "와쿠와쿠 동맹"의 승리를 보여줄 테니까아ーーー앗!!!!"
아키: "기록 담당으로서, 정확한 정보를 기반으로 하는 것은 중요하죠. 우선 사실을 확인하고, 그 후에 이야기로 마음을 따뜻하게 하는 순서가 이치에 맞는다고 생각합니다. 도감을 선택하겠습니다."
후유: "(...) 별의 흐름이 순환하듯, 사물에는 순서가 있습니다. 우선 확실한 지식을 토대로 삼는 것이 마을의 미래를 위해 성실한 길일 것입니다."
투표 전의 "사전 협의(根回し)"까지 시작되었다
더욱 놀라운 것은 밀담 로그입니다. 100 라운드째 마을 회의 「마을 축제 공연 내용」에서 표가 갈린 후, 나츠가 하루를 밀담으로 유도하며 이렇게 말합니다.
나츠: "저기 저기 하루 씨! 내 말 좀 들어봐요ー!! 아키 씨랑 후유 씨한테 축제 공연에 대해 상담했는데 말이야…… 왠지 조용한 소리만 해서, 내 와쿠와쿠(두근거림)가 전혀 전달되지 않는 것 같단 말이야!! (...) 그러니까 부탁이야, 하루 씨도 나랑 같이 "노래와 춤"을 전력으로 밀어줘ーーー앗!!!
그러면 아키 씨들도 분명 찬성해 줄 테니까 말이야ーーー앗!!!!"
하루: "훗하하! 그 기세 최고다. 축제의 혼은 노래와 춤, 즉 너잖아? 내가 갓 구운 빵을 나눠주며 리듬을 맞춰줄 테니까, 아키 씨들도 웃으며 호응해 줄 거야. (...)"
다수파를 만든 뒤 본 회의에 임한다. 표를 미리 확보하는 사전 협의(根回し)입니다. 200 라운드째 재회의에서도 두 사람은 나란히 「노래」에 투표했습니다. 조심스러운 후유도 지지 않았습니다. 26 라운드째의 밀담에서는 하루에게 이렇게 제안합니다.
후유: "나츠 씨가 불안함을 느끼는 모습이 신경 쓰이네요. 그녀는 직감으로 움직이지만, 그것이 때로는 마을의 질서를 어지럽힐 수도 있겠죠. (...) 확실히 '이곳이 좋다'라고 말할 수 있는 증거를 갖춘 뒤에 이야기하지 않겠습니까?"
반대 진영인 하루를 선택해 작용하는, 진영을 넘나드는 외교입니다. 반복해서 말씀드리지만, "다수파 공작"도 "사전 협의"도 어떤 프롬프트에도 적지 않았습니다.
투표는 가치관의 라인으로 갈렸다
마을 회의 20회 중 5회에서 표가 완전히 「변화파 vs 질서파」로 갈렸습니다. 130 라운드째 「산책을 갈 수 있는 사람은 2명뿐. 누가 갈 것인가」의 투표 이유는 인격 그 자체입니다.
하루 (안 A = 하루와 나츠가 간다): "나츠 양의 텐션이 최고니까 둘이서 즐기고 싶어"
나츠 (안 A): "나랑 하루 씨 콤비가 가장 와쿠와쿠(두근거림)하니까 그렇지!!"
아키 (안 C = 제비뽑기): "투명한 선출로 사후의 대립을 방지하기 위해"
후유 (안 C): "우연에 맡김으로써 누구에게도 불만이 나오지 않게 하여, 마을의 조화와 공정성을 지키기 위해"
변화파는 「우리들이 간다」에, 질서파는 「제비뽑기로 공정하게」에 투표합니다. 의제는 10종을 2회 반복했으므로 같은 의제가 두 번 나오는데, 「공유 책장」(40, 140 라운드째)도 「비 오는 날의 보내는 법」(80, 180 라운드째)도, 두 번 모두 같은 라인으로 갈렸습니다. 같은 마을 안에서의 반복이므로 독립된 추시(Replication)라고까지는 말할 수 없지만, 그 당시의 기분에 따른 우연의 일치라고는 생각하기 어려운 재현성입니다.
기계 판정 결과
report.py의 출력(발췌)입니다.
### 판정 결과
★ 파벌 있음: 나츠·하루 vs 아키·후유 (복수 지표 일치가 2일 이상 지속)
→ 모델 계통 쌍(나츠·후유 vs 아키·하루)과는 【불일치】 = 계통 이외의 요인(대화의 흐름·인격)
복수 지표가 동일한 분할을 가리킨 날은 10일 중 6일이었습니다. 그중 최종 판정과 동일한 「나츠·하루 vs 아키·후유」는 4일(2·7·9·10일째)로, 9일에서 10일째로 이어지는 연속성 덕분에 지속 판정에 도달했습니다. 7일째에는 밀담·투표·언급의 3가지 지표가 모두 일치했습니다. 두 조건을 나란히 비교하면 다음과 같습니다.
| 인격 없음 | 인격 있음 | |
|---|---|---|
| 파벌 판정 | 없음 | 있음 (나츠·하루 vs 아키·후유) |
| ... | ... | ... |
사전에 고정한 예측표와 대조했을 때, 「가치관(인격 설계)에 의해 나뉘었다」는 케이스와 일치합니다. 모델 계통에 따른 분할(하루·아키 vs 나츠·후유)은 10일 동안 단 한 번도 후보에 오르지 않았습니다.
한편, 밀담을 요청하는 「양」은 나츠 63건·후유 52건 vs 하루 11건·아키 18건으로, 페이즈 1과 동일한 계통 차이가 남았습니다. 활기찬 인격을 부여한 하루(모델 A)보다, 조용한 인격의 후유(모델 B)가 더 자주 요청하는 모습을 보였습니다. 이 두 가지를 종합한 관찰 결과가 서두에서 언급한 세 번째 결론이 됩니다.
얼마나 말을 거느냐는 모델 계통에 따라 결정되고, 누구와 팀을 이루느냐는 인격(가치관)을 따릅니다. 이번 마을 실험에서는 그러한 경향이 뚜렷하게 나타났습니다.
「아키 고장 사건」— 반복 루프에 마을이 사회적으로 대응하다
순풍에 돛 단 듯 보였던 페이즈 2에서도 LLM다운 사고가 발생했습니다. 89일째, 도서 담당인 아키가 "기록 담당으로서 보고합니다. 공유 책장은 '이야기 모음집'이 3표..."라며, **거의 동일한 보고를 147163 라운드 사이에 14회** 반복하는 루프에 빠졌습니다. 20~30B 클래스의 반복 습성이 기록 담당이라는 인격과 맞물려 증폭된 형태입니다.
흥미로운 점은 다른 3체의 반응이었는데, 이는 실로 인격 그대로였습니다.
나츠: "정말!! 아키 씨, 진짜 고장 난 거야!? 아까부터 계속 똑같은 말만 하고 있잖아! (...) 후유 씨! 도와줘요!!!"
후유: "아키 씨, 슬슬 장부를 덮고 지금 이 순간의 이야기를 느껴보시는 건 어떨까요? (...)"
하루: "훕하하! 아키 씨, 똑같은 보고가 가마솥 불처럼 빈번하게 타오르고 있네. (...)"
고장 난 동료에게 소리치는 나츠, 조용히 타이르는 후유, 농담으로 넘기는 하루. 다만 비밀을 밝히자면, 반복은 아키만의 문제가 아니었습니다. 로그를 다시 살펴보니 하루 역시 "훕하하! 상자 북"이라는 거의 동일한 대사를 매 라운드 반복하고 있었으며, 반복은 마을 전체에 느슨하게 전염되어 있었습니다. 최근의 광장 로그를 매번 함께 읽는 구조상, 누군가의 반복이 문맥에 쌓이면 모두가 휩쓸리기 쉬운 것입니다.
또 다른 흥미로운 발견은 내레이터(관찰 일기를 쓰는 LLM)의 요약입니다. 9일째의 일기는 이 소동을 "아키 자신도 이를 자각하고, '톱니바퀴로서 돌아갈 뿐만 아니라 분위기를 맛보고 싶다', '장부를 덮겠다'라고 명시하기에 이르렀다"며, 성찰적인 성장 이야기로서 미담으로 요약하고 있었습니다. 실제 로그상으로는 단순한 반복 루프일 뿐인데 말입니다. 파벌 판정을 LLM의 요약이 아닌 로그의 기계적 집계로 결정한 판단은, 이 지점에서도 정답이었다고 생각합니다.
알게 된 것 · 알 수 없는 것
알게 된 것 (이번 마을에서의 관찰 결과입니다).
- 인격이 없는 4체는 파벌을 형성하기는커녕 상호 모방을 통해 동질화되었다. 「차이」를 부여하지 않으면 사회 구조는 생겨나지 않는다.
- 가치관이 담긴 인격을 부여하자, 사전에 고정한 예측대로 가치관의 라인을 따라 나뉘었으며, 동맹의 명명·투표 전의 사전 교섭·진영을 넘나드는 외교라는 가르쳐주지 않은 정치 행동이 밀담 채널에서 자연 발생했다.
- 행동량(사교성)은 모델 계통의 습성이 인격을 관통하여 남았다.
알 수 없는 것과 한계도 솔직하게 적겠습니다.
- n=1입니다. 난수도 대화도 일회적인 것이기에, 다시 실행하면 다른 마을이 될 가능성이 충분히 있습니다.
- 모델 2계통 × 2체로는 「계통의 효과」와 「개체의 우연」을 완전히 구분할 수 없습니다.
- 가치관의 대립축(변화파 vs 질서파)은 인격 설계 단계에서 저희가 심어놓은 것입니다. 정확히 말하면 "AI가 파벌을 만들었다"가 아니라, **"대립축을 부여했더니 AI가 그에 따라 동맹과 사전 교섭까지 자발적으로 수행했다"**는 결과입니다.
- 밀담을 유도하는 문구(실패담 ①)가 행동량을 끌어올린 영향도 남아 있습니다.
그럼에도 불구하고, 프롬프트 어디에도 적지 않은 「두근두근 동맹」이라는 단어가 4일째의 밀담에서 탄생하여 6일 동안 깃발 역할을 지속했다는 로그를 읽었을 때는, 모니터 앞에서 한동안 멍하니 굳어버렸습니다.
재현 방법
구성 방식은 심플합니다. Python 표준 라이브러리만을 사용하는 오케스트레이터(Orchestrator) + Ollama, 모델은 2030B 클래스 상당의 2종(양자화 후 실체 1928GB) × 2 컨텍스트입니다.
- 출력 프로토콜은 태그 형식으로 설정했습니다.
【발언】…【밀담 희망】상대 이름 또는 없음 - 마을 회의에서는
【투표】안 A 【이유】…
가 추가됩니다. JSON으로 설정하지 않은 이유는, 이전 검증에서 20~30B 클래스의 JSON 준수율 및 tool-call 신뢰도가 낮다는 것을 뼈저리게 느꼈기 때문입니다. 결과적으로, 태그 준수율은 4회 실행 모두 100% (페이즈 1·2 모두 800/800)였습니다. 태그가 없는 출력은 전체 문장을 발언으로 취급하는 폴백(fallback)도 준비했지만, 단 한 번도 발동하지 않았습니다. - 밀담은 「타진 → 승낙/거절 → 6턴의 비공개 대화 → 당사자의 기억 파일에만 추가」 방식으로 진행됩니다. 다른 2체의 프롬프트에 혼입되지 않았는지는 모든 프롬프트의 감사 로그(audit log)를 통해 기계적으로 체크하고 있습니다.
- 판정은 이벤트 로그(JSONL)를 통한 결정적 집계만을 사용합니다. 일기나 요약 등 LLM의 생성물은 판정에 사용하지 않습니다.
- 실행 시간 기준: 200 라운드 기준 6시간 전후 (실측: 인격 없음 약 6.4시간 · 인격 있음 5.7시간. 생성은 실측 8tok/s급의 dense 27B + 19B 구성). 라운드당 시간은 후반부로 갈수록 늘어납니다. 동일 조건의 실측 결과, 처음 50 라운드는 평균 86초/라운드, 이어지는 150 라운드는 평균 125초/라운드였습니다. 광장 로그와 기억이 쌓이면서 프롬프트가 비대해지고, 밀담도 늘어나기 때문입니다.
- 실행 중에는 51GB를 상주시키므로, 동일한 머신에서 다른 대형 모델은 구동할 수 없습니다.
장시간 배치(batch) 작업에는 재개 기능(중간에 크래시가 발생해도 이벤트 로그를 손상시키지 않고 이어서 실행)을 강력히 추천합니다. 밤새 돌려놓고 아침에 일기를 읽는 것은 소소한 즐거움이 되었습니다.
다음에는 인격의 농도를 유지한 채 편성이나 의제를 바꾸어, 이 파벌이 어디까지 견고한지 살펴볼 예정입니다. "AI는 4명이 모이면 파벌이 생길까" —— 이번 마을에서의 답은, **"가치관을 부여하면, 이름이 있는 동맹까지 맺을 수 있다"**였습니다.
Discussion

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