人狼知能コンテスト2024冬季 国内大会(自然言語部門) のサンプルエージェントです。
ローカル内での動作確認ならびに自己対戦するためのゲームサーバについては、kano-lab/aiwolf-nlp-server を参考にしてください。
大会の詳細ならびに参加登録については、AIWolfDial2024WinterJp を参考にしてください。
大会参加者はエージェントを実装したうえで、ご自身の端末でエージェントを実行、大会運営が提供するゲームサーバに接続する必要があります。エージェントの実装については、実装言語を含め、制限はありません。
自己対戦では、5体のエージェントをご自身の端末で実行し、大会運営が提供する自己対戦用のゲームサーバに接続しすることで、エージェント同士の対戦を行うことができます。
全エージェント共通の動作
player/agent.py が呼び出されます。
talk関数: エージェントが発話する内容を返す関数です。
vote関数: エージェントが投票するプレイヤーを返す関数です。
役職別の動作
- 村人:
player/villager.pyが呼び出されます。talk,vote関数をカスタマイズしてください - 占い師:
player/seer.pyが呼び出されます。divine関数やtalk,vote関数をカスタマイズしてください。 - 狂人:
player/possessed.pyが呼び出されます。talk,vote関数をカスタマイズしてください。 - 人狼:
player/werewolf.pyが呼び出されます。attack関数やtalk,vote関数をカスタマイズしてください。
Important
ライブラリのリファクタリングなどに伴い、コードの修正、破壊的変更を行いました。この対応により、現在のコードでは型エラーなどの警告の殆どを修正しました。
リファクタリング前のコードは、v0.1.0をご参照ください。aiwolf-nlp-commonのバージョンはv0.2.2以下をご利用ください。
Important
Python 3.11以上が必要です。
git clone https://github.com/kano-lab/aiwolf-nlp-agent.git
cd aiwolf-nlp-agent
python -m venv .venv
source .venv/bin/activate
pip install .
cd src
Note
aiwolf-nlp-commonとは、役職や接続方式に関するプログラムが定義されているPythonパッケージです。
詳細については、https://github.com/kano-lab/aiwolf-nlp-common をご覧ください。
事前に、ローカル内にゲームサーバを立ち上げる必要があります。
kano-lab/aiwolf-nlp-server を参考にしてください。
cp res/config.ini.example res/config.ini
cp res/log.ini.example res/log.ini
python multi.py
res/config.ini を主催者から提供された設定に変更してください。
python multi.py
res/config.ini を主催者から提供された設定に変更してください。
chmod +x infinite.sh
./infinite.sh
url: ゲームサーバのURLです。ローカル内のゲームサーバに接続する場合はデフォルト値で問題ありません。
keep_connection: game.num回のゲームを行ったあとにもう一度ゲームを行う場合はtrueにしてください。本戦のみtrueにしてください。
num: 連続でゲームを行う回数です。自己対戦の場合はデフォルト値で問題ありません。
num: 起動するエージェントの数です。自己対戦の場合はデフォルト値で問題ありません。
name*: *番目のエージェントの名前です。基本的には参加登録時に登録した名前+数字で問題ありません。
[websocket]
url = ws://127.0.0.1:8080/ws
[connection]
keep_connection = false
[game]
num = 1
[agent]
num = 5
name1 = kanolab1
name2 = kanolab2
name3 = kanolab3
name4 = kanolab4
name5 = kanolab5
[path]
log_config = ./res/log.ini
random_talk = ./res/2019071_44011_AIWolfTalkLogs.txt
get_info: ゲームサーバから取得したJsonをログに書き込むかどうかの設定です。
initialize: Initializeリクエストの時にゲームサーバから取得したJsonをログに書き込むかどうかの設定です。
talk: エージェントがゲームサーバに送信したTALKの内容ををログに書き込むかどうかの設定です。
vote: エージェントがゲームサーバに送信したVOTEの内容ををログに書き込むかどうかの設定です。
divine: エージェントがゲームサーバに送信したDIVINEの内容ををログに書き込むかどうかの設定です。
divine_result: ゲームサーバから取得した占いの結果をログに書き込むかどうかの設定です。
attack: エージェントがゲームサーバに送信したATTACKの内容ををログに書き込むかどうかの設定です。
output_dir: エージェントのログを保存するパスの設定です。デフォルト値で問題ありません。