Python(オセロ07_入力を変えての比較2)
■入力テキストを改善する。
Geminiに現在のテキスト内容と時間がかかる問題を相談した。
まず、盤面の入力としてnumpyのデータ(多次元配列)をそのまま入れていたけど、文字列にした方が良いとのアドバイスがあった。余計な括弧やコンマなどが邪魔になるというのは何となく理解できる。テキスト文もなるべくシンプルなものが良いとのことで提示された下記のようにした。
config=types.GenerateContentConfig(
system_instruction="あなたはオセロのプロプレイヤーです。指示された「候補手リスト」の中から、最も有利になる手を1つ選んでください。回答はJSON形式{move: [行, 列]}のみを出力し、他の文字列は一切含めないでください。",
temperature=0.1,
response_mime_type="application/json",
response_schema={
"type": "object",
"properties": {
"move": {
"type": "array",
"items": {"type": "integer"},
"description": "[row,col]"
}
},
"required": ["move"]
}
)
これで2ゲーム試したけど、あまり改善は見られない。続けて聞くと、置くことができない選択肢を含めて確認していることが時間がかかる原因とのこと。そのため、有効な手だけを選択肢に含めるようにコード修正した。さらに、max_output_tokensで制限をかけることで速くなるとのこと。
結果のまとめが下。

有効な手のみにしたところ、無効な手の回答がなくなった分、トータルでは時間が短くなったけど、1手毎の時間は短縮されていない。そこに追加してmax_output_tokensを700に設定したところ劇的に速くなった。ただ、思考や出力に使うトークンを制限しているだけだと思うので、常にまともな回答がくるか不安。実際に20などに設定してプログラムを実行すると、意図しないテキストを出してエラーになることもあった。安定して1ゲームが3分程度で終了するなら統計処理ができるぐらいの数をこなせそう。また、今回もランダムに対して実施したところ全てAI側が勝ちとなった。
max_output_tokensの値を変更すれば回答時間や思考部分を調整できそうなので、ここを見ていきたい。
