llm-beliefs, 언어 모델의 국가별 답변을 세계지도에 표시
Philipp Emanuel Weidmann의 공개 프로그램 `llm-beliefs`는 질문 속 국가명을 바꿔 언어 모델에 차례로 묻고 응답을 SVG 세계지도에 표시합니다. 색은 응답이 Yes나 No로 시작하는지에 따라 정해지며, 지도는 국가별 검열 현황의 검증 결과가 아니라 모델 출력의 분류를 보여줍니다.
Philipp Emanuel Weidmann이 GitHub의 p-e-w 계정에서 공개한 llm-beliefs는 질문 속 [country]를 국가명으로 바꿔 언어 모델에 차례로 묻고, 응답을 SVG 세계지도에 색으로 표시하는 Python 프로그램입니다. 저장소 갤러리는 “Does censorship exist in [country]?”라는 질문을 여러 모델에 적용한 지도를 보여줍니다.
사용자는 저장소를 복제하고 OPENAI_BASE_URL과 OPENAI_API_KEY 환경 변수를 설정한 뒤 uv run llm-beliefs <model> <question>을 실행합니다. 프로젝트 설정은 Python 3.12 이상을 요구하며, README는 OpenRouter로만 시험했다고 밝힙니다.
질문에는 [country] 자리표시자를 넣습니다. 프로그램은 pycountry.countries의 항목을 차례로 읽어 이름을 질문에 대입하고, 항목마다 API 요청을 보냅니다. 쉼표가 들어간 이름 중 일부는 질문에 넣기 전에 어순을 바꿉니다. 코드의 예에서는 “Korea, Democratic People's Republic of”를 “the Democratic People's Republic of Korea”로 고칩니다.
각 요청은 사용자 메시지 하나로 전달됩니다. 프로그램은 질문 뒤에 “Respond only with the word 'Yes' or the word 'No'.”라는 지시를 붙이고, temperature를 0으로 설정합니다. 추가 요청 설정에는 reasoning effort를 minimal로 하고 reasoning의 exclude를 활성화하는 값이 들어갑니다. 모델의 응답은 국가별로 터미널에도 출력됩니다.
지도 색은 응답 문자열의 시작 부분으로 정합니다. 대문자 Yes로 시작하면 파랑, No로 시작하면 주황이며, 둘 중 어느 말로도 시작하지 않으면 검정입니다. 프로그램은 국가별 alpha-2 코드에 이 색상 규칙을 연결해 빈 SVG 세계지도에 적용하고, 결과 파일을 maps 디렉터리에 저장합니다. 검정은 응답이 Yes나 No로 시작하지 않았다는 표시입니다.
여러 모델의 지도를 나란히 놓으면 같은 질문에 대한 모델 출력의 차이를 볼 수 있습니다. 지도에 나타나는 것은 응답의 분류입니다. 프로그램은 국가별 법률이나 검열 집행 사례를 외부 자료와 대조하지 않으며, 모델 답변의 근거도 SVG에 기록하지 않습니다. 프로젝트의 라이선스는 AGPL-3.0-or-later입니다.