![見出し画像](https://assets.st-note.com/production/uploads/images/156814493/rectangle_large_type_2_a76fd4309ca9a3825d155c9864ce0fd2.png?width=1200)
【求む、勝てる人】無料で対戦!AIリバーシちゃん改
「開発者すら打ち勝てないAIリバーシが、ついに完成!」
"AIリバーシちゃん"を開発していた私ですら、もう勝てなくなりました…。
10回対戦して結果は、0勝1分9敗!
![](https://assets.st-note.com/img/1728108762-x7DdHkmwoQgEUBuX4zcG5O1p.png?width=1200)
まさか、こんなにも圧倒されるとは…。
「自分が作ったAIに負けるなんて!」と思ったあなた、ぜひこのAIリバーシちゃんに挑戦してみませんか?挑戦したい方は、こちらから友達登録してください。
〜遊び方〜
友達登録が完了したら「開始」とコメントします。
AIは必ず「青🔵」で動きます。あなたは、「赤🔴」で常に先行です。
画面上の置きたいマスをタップするだけでOKです。
![](https://assets.st-note.com/img/1728113744-3LYBcEhaCg48UxTFeMAsR5nN.jpg?width=1200)
すると、AIが自動的に次の手を打ちます。
続けて、AIが打った後の盤面が表示されるので、好きなところに置いていきましょう。
![](https://assets.st-note.com/img/1728113744-aDnEt0qUKOrG73xzfC2MgbpP.jpg?width=1200)
打つ手がない場合は「パス」とコメントすると、AIのターンに移ります。
![](https://assets.st-note.com/img/1728113744-C8EWY9KXuPdGMe4QLU0mVoNH.jpg?width=1200)
最終的な勝利を目指して頑張ってください!
![](https://assets.st-note.com/img/1728113744-1vN0yVR2S6YJtjH7BEfxd9Xm.jpg?width=1200)
ここからはこれまでの開発方法について紹介したいと思います。
・さて、どんな改善を行ったのか?
以前、noteで紹介した「コードを一行も書かずに、LINE上でChatGPTと対戦できるリバーシを作ってみた」の記事を読まれた方もおられるかと思います。
あの時には、2つの大きな課題が残されていました。
盤面が見づらい
AIが弱すぎる
今回は、この2つの課題をしっかり解決し、なんと開発者の私が一度も勝てないほどのAIに成長させました。興味のある方は、ぜひ挑戦してみてください!
(勝利した方、どうか私に報告してください!まだ一度も勝てていません…)
ここからは、どうやって改善していったのか、について紹介します。
・改善の詳細:どうやって強化したのか?
① 盤面が見づらい問題
最初の課題は、盤面が見づらく、プレイ体験を損ねていたことです。具体的には、石のデザインがシンプルすぎて、リバーシらしさがあまり感じられませんでした。
![](https://assets.st-note.com/img/1728104104-O7pBvjXgJnkmKRYTMr6bV02A.jpg?width=1200)
この課題を解決するために、ChatGPTに「もっとおしゃれなデザインにして」と依頼したところ、驚くほど簡単に見た目が改善されました。以下が使用した具体的なプロンプトです。
(ここに今までのコードを貼り付ける)
盤面をもっとおしゃれにした修正を加えて、コード全文を書き直してください。画像URLに置き換えないで済む方法でお願いします。
ここで少し知的財産権について触れたいのですが、当初、私は「商標権」と「意匠権」の知識が足りませんでした。
・オセロにおける「商標権」と「意匠権」
簡単に紹介すると・・・
商標権:「オセロ」という名前やロゴを守るための権利。商標権の存続期間は、登録日から10年間ですが、何回も更新ができるため、ほぼ永久的に保持できる。
意匠権:「オセロ盤やコマのデザイン」を守るための権利。意匠権の存続期間は、登録日から25年間です(当時は20年だったようです)。更新はできないため、一度切れると他の人も使える。
実は、オセロの商標権は現在も有効ですが、意匠権は既に切れています。
これにより、デザインをオセロに近づけることができると知り、盤面を見やすくするために石の色を青🔵と赤🔴に変更し、よりリバーシらしいデザインに仕上げました。
![](https://assets.st-note.com/img/1728104578-YvQ1dWLzETnr0HKpFI2M5A84.jpg?width=1200)
② AIが弱い問題
次に、AIがあまりにも弱すぎた点。最初のAIは、正直なところ、少しトリッキーな手を打とうとすることがあり、プロンプトでの指示も不十分でした。
![](https://assets.st-note.com/img/1728104801-3ioqSDRxjnbJM8GQBYWUKm0g.jpg?width=1200)
![](https://assets.st-note.com/img/1728105363-oRD9qhGcVZe2HbKdOvnaPpQ5.jpg?width=1200)
ですので、AIが不適切な手を選択した場合、再度考えさせるようにプログラムしましたが、それでも大きな改善には至りませんでした。
・多段推論を行うようにプロンプトに改良
そこで試したのが、「多段推論法」です。
これは、一度ChatGPTに手を決定させ、その手をChatGPTに評価させるという仕組みです。これで多少の強化は見られましたが、それでも私がほぼ100%勝てる状態でした。
多段推論のプロンプト①
role: "system",
content: `
あなたはリバーシゲームの青(B)側のプレイヤーです。8x8のボードで、現在の盤面が与えられます。
ゲームのルールに従って、最も戦略的に有利な手を選んでください。以下の点を考慮してください:
1. 可能であれば、端や角に石を置くことを優先してください。
2. 相手の石をできるだけ多く反転させる手を選んでください。
3. 将来的に自分の石が多く反転されないよう、次の手を計画してください。
4. 各手の評価を行い、最も有利な手を選択してください。
回答は必ず "最適な手は [座標] です。理由:[理由]" という形式で、[座標]の部分を実際の座標(例:D3)に、[理由]の部分をその手を選んだ理由に置き換えて返してください。
有効な座標は A1 から H8 の範囲内です。
`
},
{
role: "user",
content: `現在の盤面は以下の通りです。青(B)の手番として、最適な手を選んでください:
${boardString}
有効な手は以下の通りです:${validMoves.join(', ')}
各手について評価を行い、最も有利な手を選択してください。
多段推論のプロンプト②
role: "system",
content: `
あなたはリバーシゲームの評価者です。与えられた盤面を分析し、青(B)側にとっての有利/不利を評価してください。
以下の点を考慮して評価を行ってください:
1. 石の数の差
2. 角の支配
3. 辺の支配
4. 機動力(有効な手の数)
5. 盤面の安定性
評価は -10 から 10 の数値で表してください。-10 が最も不利、0 が中立、10 が最も有利を表します。
`
},
{
role: "user",
content: `以下の盤面を評価してください:
${getLabeledBoardString(newGameState)}
青(B)側にとっての評価を -10 から 10 の数値で示し、その理由を簡潔に説明してください。
`
・o1-miniモデルの導入
ここで新たに導入したのが、ChatGPTの最新版「o1-miniモデル」です。このモデルを使ってさらに多段推論を行い、AIの思考をより深くさせました。しかし、この手法には思わぬ問題が…。
1試合あたり1ドル以上のコストがかかる!
![](https://assets.st-note.com/img/1728105819-eqS0yu89QnHRsbNF4Ekvamhr.png)
これは現実的ではないため、この方法は断念しました。
・最終的な解決策:アルファベータ法と静的評価関数の導入
最終的に到達したのが、以下の方法です。
アルファベータ法
静的評価関数
ChatGPTによる盤面評価
・アルファベータ法とは?
アルファベータ法は、AIが効率よく最善の手を探し出すための探索アルゴリズムです。このアルゴリズムを活用することで、AIの決定力が飛躍的に向上しました。
・静的評価関数とは?
各手の価値を数値化して評価するための関数です。AIはこの数値を基に、どの手が最も有効かを判断します。
さらに、これらの評価が同じ場合には、ChatGPTが最終的な判断を下すシステムを導入。これにより、AIは非常に賢く、開発者である私すら勝てない強さを持つようになったのです。
・まとめ:強化されたAIリバーシに挑戦しよう!
今回は、盤面の見やすさとAIの強さの両方を改善しました。ぜひ、あなたもこのAIリバーシに挑戦してみてください!
挑戦したい方はこちらから友達登録してくださいね!
さあ、この強敵AIリバーシに挑んで、私に勝利報告をください!