ロブリックでロボホンからChatGPTを使ってみた
ロブリックって何?
ロブリックはロボホン用のノーコードツールです。ブロック型ビジュアル
プログラミングツールかな?ScratchやBlocklyみたいなものです。
ロブリックがWebAPIをサポートしたよ
2023年12月のアップデートでロブリックがWebAPIをサポートしました。
これによりロブリックで世の中の様々なWebサービスにアクセスして情報を取得、結果をロボホンが喋る、ってことができます。
ロブリックでChatGPTにアクセスしてみたよ
ChatGPT APIの仕様をまずは知ることから始める
CurlコマンドでChatGPT APIを使う方法を参考にしてみる。
$OPENAI_API_KEYはChatGPT API利用時のアクセスキーです。ChatGPT APIサイトで作成してください。無料枠(5$到達または3ヶ月使用)が利用できます。
ロブリックでChatGPT API呼び出し部分を作る
Headerは2つ用意します。
図2の"Authorization"と"Content-Type"と同じ内容を入力します。
・"Authorization"キーの値として"Bearer xxxxxxxxx"を設定します。
xxxxxxxx部分は、ChatGPT APIサイトで作成したChatGPT APIのAPIキーに
なります。
・"Content-Type"は、"application/json"を設定します。
「テキストの作成」はちょっと工夫が必要です。
ここは私の工夫です。全ての人に当てはまるわけではありません。
図2 のこの部分。
"ロボホンの魅力を教えて”が、ロボホンに向かって人が喋った結果です。
テキストを次のように分割して入力する形になります。
{"model":"get-3.5-turbo","messages":[{"role":"user","content":
+
「最後に聞こえた言葉」
+
。150文字単位でjson形式で回答してください。Jsonキーはkey1からナンバリングしてください
+
"}]}
なぜ「150文字単位でjson形式で回答してください.Jsonキーはkey1からナンバリングしてください」を付け加えているか?
ロブリックでは一度に200文字までしかロボホンに発話させられません。
ChatGPTの回答が200文字以上の場合に対応できるように回答そのものをJson形式で回答するようにお願いして対策しています。
例えば「ロボホンの魅了を教えてください」と聞くと次のようなJson形式で回答が生成されます。
「回答生成結果」
{
"key1": "ロボホンはコミュニケーションロボットであり、可愛らしい外見と豊富な表情で人々を魅了します。",
"key2": "音声やジェスチャーに反応し、会話や写真撮影、リマインダー設定などの便利な機能も備えています。",
"key3": "また、ロボホンは自己移動が可能であり、部屋の中で自由に動き回ることができます。",
"key4": "さらに、ロボホンは開発者向けのプラットフォームも提供しており、ユーザー自身で機能の拡張やカスタマイズが可能です。",
"key5": "これらの特徴に加え、ロボホンの独自の存在感と愛らしさが、人々を魅了する要素です。"
}
ロボホンに一度に喋らせるのではなく生成されたJsonのkey単位で喋らせることでロボホンの発話制限に対応できます。
ChatGPT APIのレスポンスから回答を取り出す
図3の例にならって、"choices"配列の最初のレコードの"message"連想配列(辞書型配列)の"content"キーの値を取得します。変数contentに格納します。
変数contentの内容はJson形式です。(Json形式で回答生成するように依頼したため)
このJson形式の内容を連想配列にします。
あとは、連想配列のkeyの数分、ロボホンに発話させればOKです。
ChatGPTの生成結果を発話させる
できあがり
動画はこれです。
おしまい
ロブリックでWebAPIがサポートされたのでロボホンからChatGPTやその他の外部サービスの活用ができるようになりました。ますます、ロボホンの魅力がアップしますね!