Unity + enebular + ChatGPT の中継 enebular サンプル

今回の Discover Flow

7152122f90e3440fb28c7b6834f43321

今回の Discover Flow はこちらです。

https://enebular.com/discover/flow/1fdd894d-20aa-4365-b714-78b4dea849ea

インポートボタンをクリックして、今回作業するプロジェクトを選択してプロジェクトにインポートします。

7a5f912b752213d3e41aae845633300e

インポートできたら編集ボタンをクリックして Web エディタを開きます。

96686f4f001a3f276276316cba67cc32

simple chatgpt ノードをダブルクリックします。

5615eb57610e79099f51597c22fd3e8c

プロパティを表示します。

Token 項目に、ChatGPT API の API キーを入力しましょう。設定できたら、完了ボタンをクリックしてワークスペースに戻りましょう。

デプロイ

19e98ad3d0ad7297e36ad4c035cb36c4

デプロイします。

サーバー公開

これで enebular による LINE BOT サーバーができました。

今回は、この一時的に使っているエディタそのもののサーバー URL で試してみます。

8355eb99ba9f5b82bf84301dbb7574ae

右上の i というアイコンをクリックします。

31d22a4c38d78b46dc9d6623573f5136

URL をテキスト選択してコピーします。

enebular からテストしてみる

eb18c017f0e3ebcb72e01c1f1961f595

こちらの inject ノードをクリックして ChatGPT に「こんにちは!」という質問を送ります。

1e339d4862403d37f4f7471b9dcd73ed

このように ChatGPT の回答が返ってきます。

No response object は、本来返答する http response ノードにデータが入っていないためにメッセージが出ますが Unity からリクエストされるときには問題なく動作するので、テストということで気にしなくて OK です。

ブラウザで動かしてみる

ブラウザで別タブを開いて API URL にアクセスしてみます。API URL はさきほどのサーバー URLに /api/unity/message?message=Hello! を加えたものです。

message=Hello! 部分が API に実際にデータを送って保存する message 値です。

もし https://hogehoge123456789.herokuapp.com/ がサーバー URL なら https://hogehoge123456789.herokuapp.com/api/unity/message?message=Hello! となります。

1901444e9e33d54bbe2ab01957383f8f

このように送られた message 値 Hello! の ChatGPT の回答が返ってきます。

これで enebular の準備が完了です。

Unity のバージョン

Unity の準備をします。

2020.3.48f1 のバージョンでプロジェクトを作成してます。

それ以降のバージョンでも動くプログラムのはずです。

Unity に Cube を準備

be9e58c3e9aa39df46fed6ea186ba072

Unity に Cube を準備します。今回は Play ボタンで起動するだけで動作を目指します。

Cube に CubeEvent.cs を割り当て

Cube に CubeEvent.cs を割り当てます。

using UnityEngine;
using System.Collections;       // IEnumerator のための参照
using UnityEngine.Networking;   // UnityWebRequest のための参照

public class CubeEvent : MonoBehaviour
{
    // アクセスする URL
    string urlAPI = "ここにURLを入れる";

    // 起動時の動作
    void Start()
    {
        // HTTP GET リクエストを非同期処理を待つためコルーチンとして呼び出す
        StartCoroutine("GetAPIData");
    }

    // GET リクエストする本体
    IEnumerator GetAPIData()
    {
        // HTTP リクエストする(GET メソッド) UnityWebRequest を呼び出し
        // アクセスする先は変数 urlGitHub で設定
        UnityWebRequest request = UnityWebRequest.Get(urlAPI);

        // リクエスト開始
        Debug.Log("リクエスト開始");

        yield return request.SendWebRequest();

        // 結果によって分岐
        switch (request.result)
        {
            case UnityWebRequest.Result.InProgress:
                Debug.Log("リクエスト中");
                break;

            case UnityWebRequest.Result.ProtocolError:
                Debug.Log("ProtocolError");
                Debug.Log(request.responseCode);
                Debug.Log(request.error);
                break;

            case UnityWebRequest.Result.ConnectionError:
                Debug.Log("ConnectionError");
                break;

            case UnityWebRequest.Result.Success:
                Debug.Log("リクエスト成功");

                // コンソールに表示
                Debug.Log($"responseData: {request.downloadHandler.text}");

                break;
        }


    }
}

Unity の CubeEvent.cs 変更

    // アクセスする URL
    string urlAPI = "ここにURLを入れる";

こちらの ここにURLを入れる の部分に、さきほどのサーバー URLに /api/unity/message?message=Hello! を加えたものを上書きします。

message=Hello! 部分が API に実際にデータを送って保存する message 値です。

もし https://hogehoge123456789.herokuapp.com/ がサーバー URL なら https://hogehoge123456789.herokuapp.com/api/unity/message?message=Hello! となります。

Unity を動かしてみる

ここまで設定できたら Unity で Play ボタンを押して動かしてみます。

fe962c615999ab288be9847865cb90f8

enebular 側で debug ノードでデータが受信されて、今回受け取ったパラメータが受け取れています。そして無事 ChatGPT からも Hi there! と返答が返ってきてます。

c96671650d9ddd7b4655d9aa3f84a162

Unity 側のコンソールで送受信が成功しています。ChatGPT から返答されます。

b70a37e3e775faac0efc91fce4f1cf1c

なお、message=Hello!message=こんにちは! と日本語に変更しても、うまくエンコードして伝わるので、日本語で届いて ChatGPT が日本語で回答してくれます。

results matching ""

    No results matching ""