💭

LLMを用いて囲碁の着手

に公開

はじめに

今回は私の趣味である囲碁(アマ初段程度の実力です)とLLMを組み合わせて囲碁の着手を試みます.

LLMを用いて囲碁の棋譜解説において、いくつかのスクリプトを作成しましたが、その中に、次の着手をAIに尋ねるものがありました。AIは解説として「Dの4が良いです」などと言ってくるのですが、実際に打つ着手はまったく別のロジックで考慮しているため、Dの4ではなく別の場所に打ちます。
そこで私は考えました。この解説通りに囲碁を打てるんじゃないの?

着手の作成

下記のようなプロンプトを作成します。

あなたは囲碁のプロ棋士です。19路盤の囲碁の初手からの棋譜は、です。
この局面で、次に打つ場所はどこですか?
C3やD15のようにアルファベットと数値の座標で回答してください。
Iは使わないでください。

回答

私は19路盤の囲碁の初手からの棋譜を知りませんが、一般的には初手は4-4点や3-4点に打つことが多いです。
ですので、次に打つ場所としては、例えばD4やC4のような4-4点に打つのが一般的です。

この回答の文字列から、棋譜情報を正規表現で抽出して、着手とします。

正規表現

[ABCDEFGHJKLMNOPQRST]1?\d

結果として、D4が打たれます。

少し進んで5手目です。

あなたは囲碁のプロ棋士です。
19路盤の囲碁の初手からの棋譜は、黒Q16白D4黒D16白Q4です。
この局面で、次に打つ場所はどこですか?
C3やD15のようにアルファベットと数値の座標で回答してください。
Iは使わないでください。

回答

黒D15

結果としてD15が打たれます。
星に打ち合ったところから、鉄柱です。
囲碁の常識とはかけ離れてしまっています。

ただ、囲碁を打つことはできています。
このようにして、大変雑ではありますが、LLMを用いて囲碁を打つことを実現できました。

これで大会に参加しようとしたのですが、テストプレイをしていて弱すぎたため、2手に1手だけをこのLLMによる思考で打つようにして、残りは従来のAIで打つようにしました。従来のAIとLLMとのハイブリットにすることで、既存のAIだけではない独創的な手を打つようになりました。

GitHubで編集を提案

Discussion