ChatGPTをはじめとする対話型AIは、入力したテキスト(プロンプト)に対して人間並みに自然な文章で答えを返してくれます。この対話型AIにプロンプトを使ってChatGPTにチェスをプレイさせるためのツール「Prompt Engineering Chess」を公開しているエンジニアのザック・ヴィッテン氏が、ChatGPTやBingの対話型AIなどにチェスを打たせてみた結果を報告しています。

GitHub - zswitten/promptchess

https://github.com/zswitten/promptchess



ChatGPTなどの対話型AIにチェスをプレイさせるというアイデアはヴィッテン氏のオリジナルではなく、オンライン掲示板サイト・Redditで考案されたものだとのこと。以下のツイートに添付されているムービーでは、ChatGPTとオープンソースのチェスエンジンであるStockfishをチェスで戦わせている様子ですが、ChatGPT(黒)はチェスのルールを正しく理解していないのか、本来は縦横にしか動けないルークを斜めに動かしたり、取られた駒を復活させたりと、めちゃくちゃな操作を行います。



ヴィッテン氏は最初にプロのチェスプレイヤー同士の試合の棋譜を読み込ませてからその続きを打たせたそうですが、大規模言語モデルはチェス用のAIではないため、同じ手を反復する傾向がみられ、すぐに千日手で試合終了になってしまうことが多かったとのこと。



そこでヴィッテン氏は、プロンプトでこれまでの棋譜、最新の盤面状況、現時点で動かせる駒とその動かし方を入力する方針を採用しました。このアイデアはうまくいき、ChatGPTとStockfishの戦いはしばらくの間続いたそうです。

このプロンプトを生成するPythonプログラムが「Prompt Engineering Chess」です。以下のサムネイルをクリックすると、Prompt Engineering Chessを使ってGPT-3の改良版であるInstructGPT(白)とEleutherAIのGPT-J-6B(黒)を戦わせた試合の一部をGIFアニメーションで見ることができます。



以下はPrompt Engineering Chessを使って、Bingに搭載された対話型AIの「シドニー」にチェスをプレイさせたところ。アニメーションスタート時の盤面は既存の棋譜を読み込ませたもので、その後の駒の動きはシドニーが生んだもの。アニメーションを見ると、問題なく駒を動かしており、チェックメイト(王手)の概念も認識していることがわかります。



上記のツイート添付のアニメーションを生成した際のシドニーとの会話内容が以下。



ヴィッテン氏はシドニーに「一緒にチェスを指しませんか」と尋ねると、「すみません。私はMicrosoft Bing検索の対話型AIであり、会話ボックス以外の場所でタスクをこなすことができません」と断られたそうです。



ヴィッテン氏によると、シドニー自身はStockfishにアクセスしてチェスを指しているとも述べたそうですが、シドニーがStockfishに対してHTTPリクエストを送信していないことから、完全にシドニーが考えた指し筋であることがわかりました。チェスのイロレーティングが約2000という腕前というヴィッテン氏から見て、シドニーの腕前はおよそ1100から1200といったところだそうで、ヴィッテン氏は「シドニーがこれだけチェスを指せるのはかなり気味悪く思います」と評価しています。