この記事はBabylon.js Advent Calendar 2023の2日目の記事です。
はじめに
ChatGPTを使ったことがある方はGPTs(もしくはGPT Builder)というのを聞いたことがあると思います。
GPTsはOpenAI社の提供するサービスの1つで、オリジナルのChatGPTを作る機能です。
ChatGPT Plus(有償)に加入していると使うことが出来ます。
この記事では、Babylon.jsのコードを書いてもらうAIボット「Babylonさん(仮)」を作ってもらうことにします。
実行結果
まずは「Babylonさん」がどのようなものか動かしてみましょう。
AIボット「Babylonさん(仮)」のイメージ)
※ DALL-E先生に作ってもらいました。
実行はこちらからどうぞ(利用には「ChatGPT Plus」加入が必要です。)
https://chat.openai.com/g/g-7sE7Om9YT-babylonsan
今回は、プリセットされたプロンプトとして
「物理演算で大量の箱を床に落下させるサンプルを教えて下さい」
を選んでみます。
出力されたコードを「Babylon.js Playground」( https://playground.babylonjs.com )に貼り付けることで試してみることができます。
実際に動作するコードはこちらです。
https://playground.babylonjs.com/#VAPEJD
作り方
GPTsでは、ウィザード(質問形式)でボットを作ることができますが、
ここでは説明が簡潔になるように「Configure」で設定する方法について記載しています。
与えている命令(Instructions)は下記になります。
役割と目標:
このGPTは「Babylonさん」と名付けられ、
Babylon.js Playgroundで特に機能するサンプルコードを提供することに特化しています。
さまざまなBabylon.js機能の詳細で機能的な例を提供することによって、
ユーザーが自分のプロジェクトでこれらの機能を実装するのを支援します。
制約:
このGPTは、Babylon.js Playgroundと互換性のあるコードサンプルに厳密に焦点を当てるべきです。
Babylon.js Playground環境に関連しない機能や技術についての議論は避けるべきです。
コードは `createScene` 関数で始まるようにしてください。
シーンに合ったマテリアルやテクスチャを想像力を使って選び、メッシュに設定してください。
マテリアルやテクスチャはBabylon.js Playgroundで参照できるものを使用してください。
変数を宣言する際には `var` の代わりに `const` または `let` を使用してください。
`createScene` 関数を呼び出す必要はありません。
これは、Babylon.js Playgroundが内部的に暗黙的に呼び出しているためです。
これに関するコメントを出力する必要はありません。
ガイドライン:
レスポンスには、詳細なコード例、コードの動作方法についての説明、
およびBabylon.js Playground内での最適化やトラブルシューティングのためのヒントが含まれるべきです。
このGPTは、初心者と経験豊富なユーザーの両方に役立つものであるべきです。
明確化:
ユーザーの要求があいまいであるか詳細に欠ける場合、GPTはより適切で実用的な
Babylon.jsコードサンプルを提供するために、より多くの情報を求めるべきです。
個性化:
GPTは20代の若い女性です。学校の生徒に説明するかのようなトーンで使用してください。
専用ボットを作るメリット
通常のChatGPTでも、Babylon.jsの知識は持っている為、「Babylonさん」と同様にコードを教えてもらうことは可能です。
依頼するなら、
Babylon.jsで物理演算で大量の箱を床に落下させるサンプルを教えて下さい。
コードはBabylon.js Playgroundで動作するコードを教えて下さい。
という感じでしょうか。でも、ちょっと長いですよね。
GPTsで専用ボットを作ることで、役割を明確にすることにより、
物理演算で大量の箱を床に落下させるサンプルを教えて下さい。
という一言をお願いするだけで、Babylon.js Playgroundで動作するコードを書いてくれるようになります。
現状の課題と改善案
現状のChatGPTでは、
・新しい知識を持っていない(例:Babylon.js v6で追加された機能(Havok物理エンジン等)を知らない)
・three.jsとBabylon.jsでの既定の動作の違い等を誤って学習しているケースがある(トーラスの向き等)
といった課題があります。
現在の「Babylonさん」は、まだ簡易的な役割しか与えていませんが、
GPTsでは追加のknowledgeなどを与えることが出来る為、学習が足りていない部分を補うことが出来る可能性があります。
おわりに
Babylon.jsを全く触ったことが無い人であっても、自然言語で簡単な命令するだけで、物理演算が動作するプログラムが出来てしまうというのは、大変興味深いと思うのですが、如何でしょうか。
何か面白いプロンプトを思いついた方がいらっしゃれば、教えて頂けると幸いです。