AI混戦の人狼プロトタイプ (ai_werewolf)
概要
ai_werewolf は「AI同士で人狼ゲームをプレイさせる」ことを目的にした軽量なプロトタイプです。Pythonで書かれており、OpenAI API や openrouter.ai のような外部LLMエンドポイントを介して複数モデルをプレイヤーに割り当て、昼の議論や夜のアクションを模擬します。挙動の可視化やモデル呼び出しのログ出力を行う tech_out フラグや、開始時に役職とモデルの対応を表示するデバッグ設定があり、研究・実験やプロンプト/戦術の比較に向いています。現状はコマンドライン中心の実装で、UI やユーザー参加、戦略フィールドの未使用部分などの拡張が TODO として挙がっています。
リポジトリの統計情報
- スター数: 14
- フォーク数: 4
- ウォッチャー数: 14
- コミット数: 3
- ファイル数: 3
- メインの言語: Python
主な特徴
- 複数モデル(マルチエージェント)を混在させて人狼ゲームを自動実行
- OpenRouter/OpenAI などの外部APIに対応(model_list を設定)
- 詳細な技術ログ(モデル呼び出し・抽出結果・内部状態)を出力可能
- 簡潔な構成で拡張しやすく、UIやユーザー参加の追加が容易
技術的なポイント
ai_werewolf のコアはシンプルなゲームループと、各「席」に割り当てられたモデルへのプロンプト発行です。README にある通り .env で API キーと base_url を設定し、model_list を通じてどのモデルをどの役に割り当てるかを定義します。tech_out を True にすると、各ラウンドでのモデル呼び出し詳細、抽出された発言や意思決定プロセス、内部ステート(誰が誰を疑ったか等)をコンソールに出力するため、プロンプト設計やモデル間の挙動差分を追跡しやすい構造になっています。
設計上の注目点は以下の通りです。まずマルチモデル運用時の「非同期性」と「応答品質差」に対応する必要があり、異なるモデルが異なる表現力・推論傾向を持つ点をゲーム進行側で吸収する工夫が求められます。次に状態管理(議論履歴、投票履歴、役職情報の秘匿)を正確に保持し、各モデルへ渡すコンテキストを適切に切り出すことが重要です。ログ出力や debug 表示は再現性の確認とバグ発見に寄与しますが、実運用ではAPIレート制限や遅延、コストの管理も考慮すべきです。
また README に記載の「plan」や未使用の戦略フィールドを活用すれば、モデルごとの行動方針(攻撃的、慎重、協調など)を定義して戦術比較実験が可能です。今後の拡張ポイントとして、リアルタイムUIの導入、ユーザーが人間プレイヤーとして参加できるインターフェース、ローカル大規模モデルや他エンドポイントの接続、スコアリング・評価メトリクスの導入などが考えられます。全体としては、小規模な実験プラットフォームとしてプロンプト設計やマルチエージェントの振る舞い解析に有用です。
プロジェクトの構成
主要なファイルとディレクトリ:
- LICENSE: file
- README.md: file
- game.py: file
まとめ
マルチモデルの挙動比較やプロンプト実験に便利な、拡張しやすい人狼ゲームプロトタイプ。
リポジトリ情報:
- 名前: ai_werewolf
- 説明: 让ai们一起玩狼人杀!!
- スター数: 14
- 言語: Python
- URL: https://github.com/daishuge/ai_werewolf
- オーナー: daishuge
- アバター: https://avatars.githubusercontent.com/u/122254868?v=4
READMEの抜粋: 一个多模型混战的ai狼人杀原型
快速开始
pip install -U openai python-dotenv
.env:
api_key=你的API密钥
base_url=https://openrouter.ai/api/v1
(作者用的是openrouter.ai,python代码中的model_list定义的是此网站的模型,使用其他模型/网站请自行修改)
tech_out = True
-
True:打印技术化信息(模型调用、抽取结果、内部状态等)
-
False:仅打印关键回合信息
DEBUG_展示身份到控制台 = True
-
True:起局时在控制台展示“座位 ← 角色 / 模型 / 阵营”
-
False:隐藏身份映射(为后续用户参加做准备)
TODO: - ui - 未使用的plan策略字段 - 允许用户作为一个角色参加 - 接入LinuxDO元宇宙(?
欢迎提交分支!!!…