統合版(教育版)マインクラフトで ChatGPT と会話する
はじめに
マイクラの世界で ChatGPT と会話してみたいなぁと思ったので、ライブラリごと作ってみました。
もともとは Java 版マイクラ向けに MinecraftConnection
というC#でコマンドを操作するためのライブラリを開発していたのですが、統合版とは仕様が違うみたいで根本的に変更が必要でした。さらに、統合版のほうならサーバからのレスポンスを受け取れる仕組みが簡単にできるので、「これを活用すれば会話っぽいことができるのでは」と思いました。
そして作ったのがこちら。まだベータ版なので改善必須ですが、一応は使えるようにした感じです。(このライブラリは C# 向けです。)
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キーを発行してください。必ず必要です。
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