[Minecraft] ChatGPTにマイクラコマンドを実行してもらう

Minecraft

マイクラで時刻を変更する時に「time set day」コマンドを打つのは面倒じゃないですか?
あと、度々コマンドを忘れたりしませんか?

ということで、チャット上で「昼にして」と入力するだけで実現できたら楽しいかなと思い、
この記事を書き始めています。

実際にChatGPTを利用することで実現できましたので参考にしてみてください。

りお
りお

かなり短いコードで動きました。
実際に試してみると結構感動するレベルです。

Python実行環境準備

マイクラ上でPythonスクリプトを実行できる環境を用意します。
環境準備についてはこちらの記事を確認してください。
できるだけ詳しく書いています。

ChatGPT API実行環境準備

PythonからChatGPT APIを利用するため準備を行います。
環境準備についてはこちらの記事を確認してください。
こちらもできるだけ詳しく書いています。

Pythonスクリプト作成

ここでは「my_chat.py」としてファイルを作成します。
場所は%appdata%\.minecraft\minescriptフォルダに保存します。

スクリプト全体

今回のソースコードは以下です。
まずはこちらをmy_chat.pyに貼り付けて保存します。
api_key="XXXXXXXX"部分は、ChatGPT APIで取得したAPI KEYに書き換えてください。

import minescript
import sys
from openai import OpenAI

if __name__ == "__main__":
    user_content = sys.argv[1]
    client = OpenAI(api_key="XXXXXXXX")
    response = client.chat.completions.create(
        model="gpt-4o",
        messages=[
            {"role":"system", "content":"あなたは優秀なマインクラフターです。"},
            {"role":"system", "content":"マイクラはJava版です。"},
            {"role":"system", "content":"回答文はマイクラ上のコマンドで返してください。"},
            {"role":"system", "content":"回答文にはコメント文を含めないでください。"},
            {"role":"user",   "content":user_content}
        ]
    )
    r = response.choices[0].message.content
    minescript.echo("ChatGPT Cmd -> %s" % r)
    minescript.execute(r)

スクリプト解説

簡単にスクリプトを解説していきます。

解説
    user_content = sys.argv[1]

プログラム引数として、ChatGPTに入力する文章を渡します。
半角スペースが含まれてしまうとsys.argv[1]に含まれなくなってしまうので繋げて入力します。
(このあたりは横着してます。。)

解説
    client = OpenAI(api_key="XXXXXXXX")
    response = client.chat.completions.create(
        model="gpt-4o",
        messages=[
            {"role":"system", "content":"あなたは優秀なマインクラフターです。"},
            {"role":"system", "content":"マイクラはJava版です。"},
            {"role":"system", "content":"回答文はマイクラ上のコマンドで返してください。"},
            {"role":"system", "content":"回答文にはコメント文を含めないでください。"},
            {"role":"user",   "content":user_content}
        ]
    )

ChatGPTのプロンプト文を設定しています。
“role”:”system”に前提条件を指定した上で、マイクラ上でのコマンドを回答してもらいます。

解説
    r = response.choices[0].message.content
    minescript.echo("ChatGPT Cmd -> %s" % r)
    minescript.execute(r)

ChatGPTから受けとったコマンドを、minescript.execute関数で実行しています。
分かりやすいように、コマンドそのものをminescript.echo関数で画面に表示するようにしています。

実際に試してみる

いくつか実際に試してみました。
まずは「昼にして」や「夜にして」を実行すると、/time set コマンドが実行されます。
「昼」や「夜」だけでも対応してくれます。

実際のコマンドは以下のような感じです。

\my_chat 昼にして

剣などのアイテムも呼び出せますし、さらにエンチャントも可能です。

「ダイヤの剣をちょうだい」でダイヤ剣を呼び出せます。

「持っている剣に攻撃のエンチャントをかけて」とすれば、意図したエンチャントを付与してくれます。

村人や狼なども呼び出せますし、マイクラのコマンドが分からなくても問題ないです。

まとめ

ChatGPTと連携させてマイクラのコマンドを実行させるスクリプトを紹介しました。
マイクラのコマンドは色々できるようにするために複雑なコマンドになっていますので、
チャット感覚で実行できたらコマンドを探すストレスからも解放されそうですね。

コメント

タイトルとURLをコピーしました