Skip to content

jaist-tech/zinro

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

LLM駆動ワンナイト人狼

ローカルLLM(Ollama)を使ったワンナイト人狼ゲームです。LLMがNPCプレイヤーとして議論・推理・投票を行い、ユーザーが対話形式でゲームに参加できます。

特徴

  • 5人プレイ: LLM 4人 + ユーザー 1人
  • 7役職から4つをランダム選択: 人狼、狂人、占い、吊人、独裁、狩人、村人
  • RAGベースの戦略: 役職の組み合わせに応じた戦略ファイルをLLMに提供
  • 質問フェーズ: NPCに直接質問して情報を引き出せる
  • Web GUI対応: Gradioによるブラウザインターフェース

必要要件

  • Python 3.8以上
  • Ollama (ローカルLLM実行環境)
  • Gradio (GUI使用時)

インストール

# Ollamaをインストール後、モデルをダウンロード
ollama pull qwen2.5:72b

# Gradio (GUI使用時)
pip install gradio

使い方

CLIモード

# 基本実行
python run.py

# デバッグモード(プロンプトやRAGコンテキストを表示)
python run.py --debug

# 全員LLMの自動モード
python run.py --auto

# モデル変更
python run.py --model llama3.1:70b

# 役職を固定(カンマ区切り)
python run.py --roles 人狼,占い,狩人,村人

GUIモード

python gui.py

ブラウザで http://localhost:7860 にアクセスしてプレイ。

ゲームの流れ

  1. 夜フェーズ: 占い師が1人を占う(結果は占い師のみに通知)
  2. 発言フェーズ: 全員が2周発言(役職CO、推理、議論)
  3. 質問フェーズ: ユーザーがNPCに個別質問可能
  4. 投票フェーズ: 全員が処刑先を投票
  5. 決着: 処刑結果に応じて勝敗判定

役職と勝利条件

陣営 役職 勝利条件
市民陣営 占い師、狩人、村人、村長(USER) 人狼を処刑
人狼陣営 人狼、狂人 人狼以外を処刑
第三陣営 吊人 自分が処刑される(単独勝利)
特殊 独裁者 自分が処刑時、投票先を代わりに処刑

特殊能力

  • 狩人: 誰も処刑されなかった場合、1人を追加処刑
  • 独裁者: 自分が処刑された時、自分の投票先を代わりに処刑

コマンドラインオプション

オプション 説明
--debug デバッグモード(RAGコンテキスト、プロンプト表示)
--auto 自動モード(全員LLM、ユーザー入力なし)
--model <名前> 使用するOllamaモデルを指定
--roles <役職,...> 4つの役職をカンマ区切りで固定

ディレクトリ構造

zinro/
├── run.py           # メインゲームエンジン
├── gui.py           # Gradio Web UI
├── rule.md          # ゲームルール
├── prompt.md        # シナリオ生成プロンプト
├── create_role.sh   # 役職組み合わせディレクトリ生成
├── combos_4/        # 35通りの役職組み合わせ戦略
│   ├── 人狼_占い_狩人_村人/
│   │   ├── 人狼.md
│   │   ├── 占い.md
│   │   ├── 狩人.md
│   │   └── 村人.md
│   └── ...
├── log/             # ゲームログ出力
├── scripts/         # 補助スクリプト
└── archive/         # 過去バージョン

設定のカスタマイズ

run.py 冒頭のパラメータで各種設定を変更できます。

# LLMモデル
MODEL = "qwen2.5:72b"

# 発言の周回数
DAY_SAY_ROUNDS = 2

# 難易度設定(USERへの役職開示)
DISCLOSE_TO_USER = {
    "Werewolf": False,  # Trueで人狼の情報を開示
    ...
}

# RAG設定
RAG_LOG_TAIL = 30           # ログの参照行数
RAG_INCLUDE_ROLE = True     # 役職戦略を含める
RAG_STRIP_EXAMPLES = True   # 発言例を除去

戦略ファイルの編集

combos_4/<役職組み合わせ>/<役職名>.md を編集することで、LLMの行動戦略をカスタマイズできます。

新しい組み合わせを追加する場合:

bash create_role.sh

ログ

ゲームログは log/game/<日付>/game_<時刻>.txt に保存されます。

ライセンス

MIT License

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors