PythonでGeminiとオセロしてみた

Penguin Suit
@PenSu

はじめに
こんにちは。最近はAIの進化がすさまじく、様々な場面で活躍してますよね。私も生成AIに、文章作成や翻訳、プログラミングなどのタスクをお願いすることも多く、クオリティも高いのでいつも助けてもらっています。
最近だと、↓のブログや動画でも試したとおり、数学の問題も解けるようになり思考力も非常に高くなっています。
[ブログ] https://www.activeclub.jp/blog/kaisei_gemini
ふと、ここまで能力が高ければ、生成AIが特化していない分野でも持ち前の思考力でベストな回答するのではと思い、今回はGeminiと対戦できるオセロゲームを作ってみました。
本ブログの内容
・PythonとPygameでオセロ/リバーシができるプログラムを作成
・Google AI Studio からAPIキーを取得し、Geminiの最新モデルと対戦できるプログラムを作成
準備するもの
- Pythonが実行できるPC(ローカル環境)
- Pygameライブラリ
- Gemini APIのAPIキー
Pygameってなに?
Pygameは、Pythonでゲームを作るためのライブラリです。ゲームの画面表示や音声、キーボードやマウスの入力などを簡単に扱うことができます。ただし、PygameはGoogle Colabなどのクラウド環境では動作しないため、ローカル環境での実行が必要です。
インストール方法は、Windowsの場合はコマンドプロンプトを開き、いつもの下記のコマンドを実行すると、PythonでPygameが使えるようになります。インターネットへの接続が必要になります。
pip install pygame
Gemini APIってなに?
Gemini APIは、Googleが提供する最新のAIモデル「Gemini」のAPIです。このAPIを使うことで、自然言語処理や画像認識など、高度なAI機能を自分のプログラムに組み込むことができます。
今回作成したオセロゲームでは、Gemini APIをAIの思考ルーチンとして使用しています。
プログラムの解説
実際のプログラムは下記のとおりです。
GOOGLE_API_KEY="abcd"のabcdにGoogle AI Studioで取得したAPIキーをコピペしてください。
Loading...
このオセロゲームのプログラムは、以下の主要な部分から構成されています。
- ゲーム盤と駒の描画: Pygameを使って、オセロ盤と駒を描画します。
- 合法手の判定: 現在の盤面で、プレイヤーがどこに駒を置けるかを判定します。
- 駒を裏返す処理: 駒を置いたときに、相手の駒を裏返す処理を行います。
- AIの思考ルーチン: Gemini APIを使って、AIが次の手を決定します。その他、ランダム、評価関数、ミニマックス手法を用いたAIも実装しておております。
- ゲーム終了判定と勝者表示: ゲームが終了したかどうかを判定し、勝者を表示します。
特にAIの思考ルーチン(get_gemini_move関数)では、Gemini APIに盤面の状態と合法手を伝え、次の手を決定してもらっています。最初は、Gemini APIに盤面の状態だけ渡していましたが、そもそも合法手を返してくれなかったので、こちから合法手も伝えています。
Geminiと対戦してみる
実際にGeminiと対戦すると最初は調子よく打ってくれるのですが、盤面が複雑になると合法手を打たなくなり、エラーを起こしてしまいます。
エラーが起きたときは、もう一度Geminiに再考させた上でそれでもエラーがだた場合はランダムな手を打つようにプログラムしており、↓のように頻繁にエラー/ランダム手を打つようになってしまいました。
流石のGeminiでも、まだその場の思考では専門外の分野までベストな回答をするのは難しいようです。

まとめ
今回は、PygameとGemini APIを使ってAIと対戦できるオセロゲームの作成方法を紹介しました。
Gemini APIを使うことで、AIを用いた思考ルーチンを簡単にゲームに組み込むことができました。
正直、まだGeminiがオセロをするには早かったかなと思いますが、最近のAIモデルの成長を見るとすぐに強くなると思うので、またアップデート版出たら試してみたいと思います。