🗯

統合版(教育版)マインクラフトで ChatGPT と会話する

2023/05/05に公開

はじめに

マイクラの世界で ChatGPT と会話してみたいなぁと思ったので、ライブラリごと作ってみました。

もともとは Java 版マイクラ向けに MinecraftConnection というC#でコマンドを操作するためのライブラリを開発していたのですが、統合版とは仕様が違うみたいで根本的に変更が必要でした。さらに、統合版のほうならサーバからのレスポンスを受け取れる仕組みが簡単にできるので、「これを活用すれば会話っぽいことができるのでは」と思いました。

そして作ったのがこちら。まだベータ版なので改善必須ですが、一応は使えるようにした感じです。(このライブラリは C# 向けです。)

https://github.com/takunology/MinecraftConnectionBE

2023年5月現在、ライブラリ依存によって警告などが表示されます。将来的にはライブラリ依存しないよう改善していく予定です。

実行環境

  • 最新の Minecraft 統合版(または教育版)
  • .NET SDK 7.0.300-preview.23179.2

実装

ここでは、コンソールアプリケーションで作成してみます。(dotnet コマンドが使える環境が前提です。)

1. コンソールアプリケーションのプロジェクト作成

dotnet new console -o <プロジェクト名>

2. MinecraftConnectionBE の導入

dotnet add package MinecraftConnectionBE -v 1.0.0-beta1

3. OpenAI のAPIキー発行
下記サイトからAPIキーを発行してください。必ず必要です。

https://openai.com/blog/openai-api

4. 実装(C#)
たった数行書くだけです!(今回はトップレベルステートメント)

コマンドを呼び出すために MinecraftCommands を使用します。引数にはIPアドレスとポート番号を入れてインスタンスをつくり、AIChat() メソッドを呼び出します。このメソッドの引数には OpenAI API のキーと、会話するプレイヤーのID(名前)を代入します。

あと ReadKey() を使用してサーバが秒で閉じるのを防ぎます。

using MinecraftConnectionBE;
using System.Net;

var address = IPAddress.Parse("127.0.0.1");
var port = 8080;
var apiKey = "<Your API key>";

var command = new MinecraftCommands(address, port);
command.AIChat(apiKey, "<Player ID>");
Console.ReadKey();

やってみよう!

まずはサーバ🐟を立ち上げます。

dotnet run

コンソール上でIPアドレスが表示されます。

Listening to 127.0.0.1:8080

次に、マイクラ統合版(or 教育版)を開き、設定から「暗号化されたWebSocketの要求」をオフにします。

そして、connect コマンドをしてサーバへ接続します。

/connect 127.0.0.1:8080

接続が確立されました の表示が出ればOKです!

あとは会話するだけですね!簡単!

30秒以上会話が返ってこない場合、APIキーを間違えているか、プレイヤーのIDが間違っていないかを確認してください!

Discussion