MATLAB ユーザーコミュニティー

MATLAB & Simulink ユーザーコミュニティー向け日本語ブログ

“MatGPT” を使って MATLAB 上で ChatGPT と会話するアプリを作ってみよう!

皆さんこんにちは、トレーニングチームの遠藤です。

最近急激に気温が下がってきて、朝ベッドからなかなか出られない日々が続いています。こうも気温の変化が激しいと、私の体内ソルバーがゼロクロッシングを検出してサンプル時間を細かく刻んでしまい困ってしまいますね(?)。

と、くだらない話はこれくらいにして、本題に入りましょう。今回は私としては久々の技術系の内容となります。いままでは、MATLAB と Simulink を繋ぐ、というテーマで色々と技術的な記事を書いてきましたが、今回は少し趣向を変えて、MATLAB と別のものを繋げていきたいと思います。

その別のものとは……ずばり ChatGPT です!

 

↑のように、ChatGPT と会話するアプリを MATLAB で簡単に作成する方法について紹介していこうと思います!

 

※本記事では、OpenAI の API を使用するために OpenAI のアカウントの作成や API キーの発行といった作業を行いますので、あらかじめご了承ください。また、お試しいただく場合は OpenAI サービスの利用規約 にもご注意ください。

 

1. そもそも MATLAB 上で ChatGPT と会話するためには

ご存じの方も多いかと思いますが念のため、ChatGPT は OpenAI が2022年11月30日に公開した、生成 AI サービスです。まるで人間とチャットしているかのように自然な回答が返ってくるということで一躍話題になり、現在では多くのユーザー・企業が様々な用途で利用しています。

ChatGPT はサーバー上に実体があり、ユーザーがそれにインターネット経由でアクセスすることで対話を行います(いわゆる SaaS 形式)。通常は ChatGPT のウェブページ上からアクセスして利用することが多いかと思いますが、それとは別に、専用の API を用いてアクセスすることもできます

“ChatGPT の API” と聞くと、何か難しいコマンドがいっぱいありそうなイメージかもしれませんが、実は中身は単純なウェブリクエスト形式の API です。送るデータと送り先のURL(エンドポイント)さえ正しく指定できれば、誰でも比較的簡単に使うことができます。

そして、実は MATLAB にはデフォルトで webread/webwrite などのウェブリクエストを行う関数が用意されていますので、これを使えば理論上 MATLAB 上で ChatGPT と通信することができちゃいます!

………

……

「いやいや、ウェブリクエストなんかやったことないからわからないよ!」と思った方、ご安心ください。実はここら辺の細かい仕様を理解していなくても、ChatGPT と簡単に通信を行えてしまうようなツールが File Exchange で公開されています

その名も、 MatGPT です!

 

2. MatGPT とは!?

MatGPT は、MATLAB 上で ChatGPT を使用するための便利なツールが含まれたパッケージです。MatGPT の中には「ChatGPT にアクセスするためのクラス」と「そのクラスを使った対話アプリ」の 2 つが入っていて、複雑な操作なしで簡単に MATLAB 上で ChatGPT にアクセスすることができます。

アプリの方は、普通にブラウザ上で ChatGPT を使うかのように、MATLAB 上でアプリを開いて対話をすることができます。会話以外にも、MATLAB のコードを作ってもらったり、関数の使い方を聞いたりすることもできます。

↑アプリ自体は英語ですが、日本語でもちゃんと会話できます!

 

これに対して、クラスの方は、スクリプト上で ChatGPT と通信をするための “chatGPT” クラスオブジェクトが実装されています。このオブジェクトを使うことで、ウェブリクエスト系の関数を手動で呼び出すことなく簡単にコードベースで ChatGPT にアクセスすることができます。

↑MatGPT を使えばたった2行で ChatGPT と会話できる!

 

※どちらもロール等を変更して会話しているだけで、アクセス先は通常の GPT モデルです。MATLAB のデータを学習させた特別なモデルを使っているわけではないのでご注意ください。

※MatGPT は GPT-3.5 と GPT-4 の両方に対応していますが、GPT-4 は過去に支払いを行ったことがある OpenAI のアカウントでのみ使用可能です。

 

今回は後者のクラスオブジェクトを活用することで、MATLAB 上で ChatGPT と会話するようなアプリを作ってみたいと思います。

 

3. MatGPT の使い方

それでは、アプリを作り始める前に MatGPT の使い方を簡単に確認してみましょう!(MatGPT のページの “Instllation” と “How to use” の部分もご参考ください)

3-1. OpenAI のアカウントを作成して API キーを取得する

MatGPT を使うためには、OpenAI の API キーが必要です。API キーを持っていない方は、こちらのページのリンクから OpenAI のアカウントの作成&API キーの発行を行いましょう。

※API キーの発行自体は無料で行うことができます。API キーを使用する場合、使うモデルや通信する文字数によって料金がかかりますが、API キーの初回発行時には最初の 3 ヶ月のみ使用可能な 5 ドル分の無料クレジットが付与される(2023/11/6 時点)ので、試しに使ってみたい場合はこれを使うのがよいかと思います。

3-2. MATLAB 上で API キーを設定する

API キーを取得できたら、MATLAB 上で API キーの設定を行います。MatGPT は “OPENAI_API_KEY” という名前の環境変数に設定されているキーを使って通信を行いますので、setenv 関数で環境変数に API キーを設定しましょう。

>> setenv("OPENAI_API_KEY", "発行した API キー")

※setenv 関数で設定した環境変数は MATLAB を閉じるとリセットされます。OS 側で直接設定してもOKですが、その際はキーの流出にご注意ください。

3-3. 試しにコマンドウィンドウで MatGPT を使ってみる

これで MatGPT を使うための下準備が終わりましたので、早速使ってみましょう! MatGPT のページの右上から zip ファイルをダウンロードして解凍したら、中の “helpers” フォルダに移動します(または、helpers フォルダのパスを通します)。 そしたら、chatGPT コマンドを使って ChatGPT へアクセスするためのオブジェクトを作成します。

>> myBot = chatGPT();

後は、このオブジェクトの chat メソッドを使えば、

>> answer = myBot.chat("こんにちは!")

ChatGPT から返信が来ました!ちなみに、オブジェクトの中には会話の履歴が保存されていますので、同じオブジェクトの chat メソッドを何度も実行すると、過去の会話も踏まえた返信が返ってきます。

また、chatGPT オブジェクトを作る際に役割(role)を設定すると、返答内容が変化します。例えば、口調を指定してあげると……

役割指定の例>> myBot = chatGPT("role","ギャル口調でしゃべってください。");
>> answer = myBot.chat("こんにちは!")

こんな感じで、返答の口調が指定した通りに変わります、楽しい!
(これは果たしてギャル口調なのだろうか……)

 

4. ChatGPT と会話するアプリを作ってみよう!

ここまででとりあえず基本的な MatGPT の使い方がわかりましたので、早速これを使って会話アプリを作ってみましょう。 まずは MATLAB のホーム画面から「新規」→「アプリ」と選び、 App Designer を起動します(App Designer の使い方についてはこちらのドキュメントもご参考ください)。

ここに必要なコンポーネントを配置していきます。今回は、シンプルに

  • テキストラベル x 3(タイトル、ChatGPT からの返答の表示など)
  • エディットボックス(ChatGPT へ送信する文章の作成)
  • ボタン(送信用)

の 3 つを配置します。

こんな感じですかね。後々コードを書きやすいように、各コンポーネントには “ReplyText” や “SendButton” など、わかりやすい名前を付けておきましょう(コンポーネント名は右上のツリーから編集できます)。

 

それでは次に、アプリ起動時に chatGPT オブジェクトが自動で作成されるように、StartupFcn を作成します。

上図の通り、右上のツリーからアプリ名を選び、「コールバック」タブで <StartupFcn コールバックの追加> を選ぶと……

新たに startupFcn が作成されました。ついでに、 chatGPT オブジェクトを保存するための “myBot” プロパティも作成しておきましょう。startupFcn の中で chatGPT オブジェクトを作成して myBot プロパティに保存します。

アプリ起動時のコールバック
function startupFcn(app)
    app.myBot = chatGPT();
end

これで、アプリ起動時に自動で chatGPT オブジェクトが作成されるようになりました!

 

最後に、ボタンのコールバックを作成しましょう。ボタンのコールバックでは、先ほど startupFcn で chatGPT オブジェクトを保存した myBot プロパティを使って ChatGPT と通信し、返ってきた文章をラベルに表示します。コードはこんな感じ。

ボタンのコールバック
function SendButtonPushed(app, event)
    prompt = app.PromptText.Value;   % エディットボックス内の文章を取得
    answer = app.myBot.chat(prompt); % 取得した文章を chatGPT オブジェクトで送信
    app.ReplyText.Text = answer;     % 結果をラベルに表示
end

※コンポーネント名は適宜修正してください。

 

これで会話アプリの完成です。早速動かしてみましょう!テキストボックスに文字を入力して送信ボタンを押すと……

 

ChatGPT から返信がきました!

 

今回は必要最低限の機能のみを実装したアプリを作成しましたが、

  • テキストラベルではなくテキストエリアを使い、過去の会話の履歴も表示する
  • chatGPT オブジェクトを作り直す処理を行うリセットボタンを追加し、会話をリセットできるようにする
  • エディットボックスやテキストエリアでロールを設定できるようにする

などなど、もっと色々な機能を追加できそうですね!

 

5. おわりに

ということで、今回は MATLAB 上で ChatGPT を使う方法についての紹介となりました。チャットアプリを作る場合以外にも、既に開発してあるアプリの中に ChatGPT に相談する機能を追加するときなどにもご参考いただければと思います。

また、Open AI の API を使うと Whisper などのChatGPT 以外のサービスにもアクセスすることができます。もちろん MatGPT をそのまま使うことはできないので改造は必要になりますが、エンドポイントやデータなどを正しく指定すれば他のサービスにも応用できますので、興味がある方は、 OpenAI の API のドキュメントページなどもご確認しながらぜひ挑戦してみてください!

|
  • print

Comments

To leave a comment, please click here to sign in to your MathWorks Account or create a new one.