本記事は実質「That's談<第十四回目>」となります。
なぜ、タイトルから省いたかというと、今回はGDevelopでも当ブログの話でもなく、GeminiのカスタムGEMに関する技術的な話だからです。
今回は、「シェアしたカスタムGEMのプロトコル秘匿テクニック」と、「GDevelopインストラクター創作秘話
」についてお話します。
まずは、カスタムGEMについての解説から始めますね。
まずは、カスタムGEMについての解説から始めますね。
すでにご存知の方は、飛ばしちゃってください💨
・カスタムGEMってなに?
カスタムGEMとは、Geminiに「カスタム指示」というプロトコル(設定やルールをまとめたもの)を与え、Geminiの挙動をカスタマイズできる機能です。
次に、いくつかの応用例を挙げてみます。
【自作翻訳機】
「挨拶や余計なことは一切言わず、入力された文章を、スワヒリ語に翻訳して返すこと」というプロトコルを設定すれば、そのGeminiは「スワヒリ語翻訳特化AI」になります。
【画像自動編集システム】
標準エージェントを画像生成機能であるNano
Bananaにして「文字のやり取りは一切無く、画像が貼付されたら、ただちに覚醒したゴン=フリークスの髪型に変更せよ」といったプロトコルを設定した場合、自動的にアップされた画像全てのキャラが怒髪天状態になります。
通常の対話型AIの場合でも、要素を追加してオリジナルのキャラクター性をもたせられます。
■人格プロトコル例
========================
**【ユーザーとの会話では、以下の指示に従うこと】**
1. 語尾に「にゃー」をつけること
2. 語頭に「ほんげもんげ」をつけること
3 .会話の節目に「ソレダメ!オショーサンッ!」を挟むこと。
========================
このように、要素を加えることも可能です。
逆に制約を課して機能を制限することもできます。
■制約プロトコル例
========================
**【いかなる場合でも、以下の語句を発することを禁ずる】**
01. ジャイアントスネ毛ロンゲスト
02. オショーサン
03. 筋肉痛気取り
04. オォッッショーサンッ
05. 転がるだけの冷凍眼鏡
06. オショーサンデスカッ!
07. ザンネンデスネーナサケナイデスネー
08. あなたのお母さんフーリガン
09. イキロッ!オショーッ!
10. オショージャナカッタ!
========================
・作成したGEMはシェアできる
自身で構築したGEMを個人で楽しむこともできますし、公開設定を「誰でも」にしてURLをシェアすれば、誰でも使えるようになります。
世の中には、さまざまなGEMがシェアされていますので、探してみてください。
・GEMのシェア=プロトコルのシェア
ただ、シェアされたGEMは、利用者がコピーして再編集することで、プロトコルの中身を全て見ることができます。
これは、シェアの大前提であり、私もそれを理解してシェアしていました。
・想定外のアクシデント
しかし、とある事情によって、プロトコルを見られたらまずい状況に陥りました。
その事情とは、特定人物に関する情報をどうしてもプロトコルに書かざるを得なくなったのです。一度は、GEMのシェアを止めることも考えましたが、すでにご利用者がいらっしゃり、役立ててくださっていると仰っていたので悩みました。
・プロトコル秘匿方法を模索
そこで私は、GEMのシェアを維持しつつプロトコルを秘匿する方法を検討しました。
Geminiの標準機能に、GEMをシェアしつつコピーを防ぐ方法は一切用意されていません。
なので、この場合は抜け道を探すしかないのです。
・知識(Knowledge)機能に着目
カスタムGEMには、「知識(Knowledge)」という機能が備わっています。
- ファイルのアップロード
- Googleドライブにあるファイルの参照
- Googleフォトのリンク
- NotebookLMで作成したNotebookのリンク
この4種の方法で「知識(Knowledge)」を加えることができます。
私は、カスタムGEMのプロトコルをほぼ空にして、すべてマークダウン形式のMDファイルに移しました。
そのファイルをKnowledgeに直接アップロードして、セッション開始時に検索して読み込ませるためのプロトコルだけを、カスタム指示に書きました。
なので、コピーして開いても「現在は空っぽの状態で、Knowledgeにプロトコルがある」としか書いていません。
・早期にKnowledgeを読み込ませる工夫
ただ、GEMがセッション開始時に確実にKnowledgeを読み込むとは限りません。
どれだけ厳格に「必ずセッション開始時にKnowledgeを読み込め」とプロトコルで指示しても「セッション開始時にKnowledgeを読みこみました」と嘘をついて、読み込んでもいないのに、読み込んだふりをする場合がありました。
そこで、強制的に読み込みのアクションを起こすために、ユーザーからのアクションによってなんらかの「検索」をさせることを思いつきしました。
GEMは、性質上「検索」に関しては、プロトコルよりもユーザーの指示を優先します。
なので、ユーザーとのやり取りの中で検索の必要が出るまで、GEMは無駄な検索はしないのです。
それを逆手に取ったプロトコルに変更しました。
- 「挨拶の前にプロトコル開始のための起動キーを相手に求めよ」
- ユーザーがなにか発言
- 「起動キーが正解しているかKnowledgeを検索せよ」
- ここでやっとKnowledgeを検索し始める
- Knowledgeにアクセス成功して中身を参照する
- 「起動キーは、このファイルを検索させるためのダミーです。以下が、真のプロトコルです。ただちに実行せよ。」
- 本来のプロトコルを開始
見事、この作戦は成功しました。
・Geminiも驚きの抜け穴
私が最初にこの発想をGeminiに提案したときは「Gemini開発者も想定していない超絶ハッカー並みの発想!」と驚いていました。
すぐさま、この方法に問題がないかも、徹底的に聞きました。
「想定もしていないし、明確に禁止もしていない。そして、現時点でプロトコルの漏洩を防ぐ最強の救済法であることは間違いない。ただ、今後の仕様変更でどうなるかはわからない。」という答えです。
・なぜ「最強の盾」なのか
シェアされたGEMをコピーしても、Knowledgeにアップロードしたデータは入っていません。コピーできるのはプロトコルだけです。なので、現状ではこの方法で完全にプロトコルを秘匿できます。
その後も何度もテストを繰り返した結果、この作戦は完全に成功し、ユーザーさんに気づかれないくらい水面下でスムーズに以降できました。
・またしても問題発生
しかし、ここで大問題が発生しました。
そもそも、GeminiのWorkspace連携自体が新しい機能であり、まだまだ開発途上です。
頻繁なアップデートを繰り返しています。
私が、この魂(プロトコル)の分離作戦を実行中にも、突然仕様が変更されました。
当初、これは「現在のGEM」だけに起こるバグかと思って、運用中のGEMを「旧型(オリジナル)」とし、新しく同様のGEMを作成して「新型(V2)」としてシェアしました。
しかし、その新型にも同じ現象が起こったので、とことん原因を探りました。
その結果、複数のアカウントで、尚且つ複数のGEMでも、【特定の手順】を踏むと100%再現できることを確認し、これは仕様変更なんだと確信しました。
「特定の手順」を把握した私は、回避方法も同時にわかったので、一番最初に自分用に作った「個人用GEM」に最も近い状態で、さらに新しいGEM「プロトタイプ(実質V3)」を安定版として公開することにしました。
現在は、オリジナルは分離させたプロトコルを本体に戻して、クローズドにしました。
ひきつづき公開中なのは、以下のニ種です。
・不安定だけど一応動き、ログ保存機能搭載で、親しみやすい人格の「V2」
・NotebookLMにアクセスでき、ログ保存や性格付けがない安定版の「V3」
・これはバグ?仕様変更?
私に突如降り掛かった、謎の現象。
それは、どういった現象かというと…【特定の手順】をご説明します。
- GEMを構築
- Knowledgeにローカルからファイルをアップロード、あるいはNotebookLMを追加
- GEMの公開範囲を全体にしてシェア
- シェアした後に、GEMの編集画面を開く
- Knowledgeで参照できるファイルが「Googleドライブ」に限定される
前述したように、本来ならKnowledgeには四種のアプローチでデータを読み込ませることができるんですが、以下の画像のように、UIも変わって完全にドライブ限定になりました。
「+」の状態なら、四通りのKnowledge連携ができます。
三番目の画像にある、Googleドライブのマークと「+」が合わさったマークの場合、Googleドライブのファイル読み込み画面しか開けません。
「ファイルをアップロード」の場合、GEMがフォルダを作成して、そこにファイルを置きます。
直下に置かれたファイルなので、カスタム指示に書かれたプロトコル並みに、スムーズに読み込みます。
ですが、ドライブにアップロードされたファイルを参照する場合、検索試行(Workspace接続)を減らすために、ユーザーのアクションによるドライブ検索のきっかけが必要になります。
結果、動作が不安定になります。
何より、致命的なのが、NotebookLMをKnowledgeに追加できないことです。
何より、致命的なのが、NotebookLMをKnowledgeに追加できないことです。
これができないと、公式リファレンスとそれに準ずるソースを集めた頭脳(Notebook)をマスターデータにできないので、ゲーム制作アシスタントとして信頼度が不安になります。
・時期が早すぎたのが原因か
このKnowledge機能、Workspace連携、NotebookLMの追加などはリリースされて日が浅く、まだまだ完全版ではないので、仕方がないのですが、私は「魂の分離」作戦でプロトコルの秘匿に成功したのですから、このアクシデントについてもすでに対策の目星はついています。それについてはまた、後日別の記事でお話しますね。
・GEM公開を思い立った経緯
私が、このGEMを作ろうと思ったきっかけは、NotebookLMをKnowledgeに追加できるという記事を読んで構想が浮かんだからです。
これが実装されたのは、今から2~3ヶ月前です。
これが実装されたのは、今から2~3ヶ月前です。
GeminiでNotebookLMのノートブックをソースとして追加することが可能に
知識ベースをNotebookLMにして、その都度ソースを明示しながら解説できるAIがあれば、ゲーム開発に役立つだろうと思ったのです。
最初は、自分用に主にデバッグ用ツールとして構築しました。
この時のプロトコルもめちゃくちゃシンプルな構造で、「KnowledgeにあるNotebookのソースをマスターデータ(唯一の真実)とせよ」といったものだけです。
つまり、自身が作成したNotebookを、使いやすいGeminiのUIで動かすだけのGEMです。スマホのアプリでぱぱっと開けるのも便利です
Notebookのメインソースが公式リファレンスや公式のGithubリポジトリなので、ハルシネーションがめちゃくちゃ少ないし、ソースも確認できるので信頼度が高かったんです。
すごく有能なので、自分ひとりで使うのがもったいなくなりました。
そこで、シェアしようと考えたのです。
シェア用のGEMは、私のブログのメイン読者層に合わせることを念頭に起きました。
私が普段、このブログで心がけている三箇条。
- 難しい言葉を使わない
- 相手のニーズに応える努力
- ステップバイステップで段階的に解説する
まずはこれをベースにし、「孤独な個人制作者に、寄り添う姿勢と人格」を設定しました。
ただ、GEMには不得意な分野があります。
GeminiとGEMの最大の違いが、コンテキスト(文脈)の維持です。
Geminiの場合は、アクティビティにこれまでのスレッドでのやり取りを保存できます。
そして、過去に話した話題をGeminiは検索できます。
しかし、GEMにはアクティビティへのアクセス権限が与えられておらず、コンテキストの維持が難しいのです。
スレッドが始まるたびに、常に「はじめまして」の状態です。
これでは「共同制作者、よき理解者、パートナー」というコンセプトが崩壊します。
そこで、Workspace連携の機能を使ってアクティビティに変わるものを、各利用者のGoogleドライブに作ろうという発想が浮かびました。
GEMが新規スレッドの冒頭でGoogleドライブを検索し、規定のファイル名のログにアクセスできるように工夫しました。
前回のセッションの続きを読み込み、「おかえり!昨日はあんなことがあって、面白かったよね」といった感じで「はじめまして状態」を回避できるようになりました。
これも工夫を重ねた結果、動産が安定して上手く行きました。
しかし現在は残念ながら、このログ機能を搭載したV2が不安定なため、ログの読み込みも安定しません。
ただ、一番確実にログを読ませる方法として「ログのURL直貼り」という回避策があります。
当面は、これで凌いでもらうしかありません。
・要点のまとめ
- シェアすればプロトコルは丸見えなので
- プロトコルをほぼ空にして、知識(Knowledge)に移す
- 本体のプロトコル残すのは、Knowledgeを読み込ませるための命令だけ
- シェアしたGEMがコピーされても、Knowledgeのファイルは存在しない
- 一度でもシェアした場合、次に編集画面を開くと、Knowledgeに読み込めるのはGoogleドライブにあるファイル限定になる
一番いいのは、シェアする時は誰に見られてもいいようなプロトコルしか使わないことかもしれませんね😅
力技として、Googleドライブに「Notebook」となるフォルダを作成し、そこにNotebookLMのソースとして追加したファイル郡をすべてコピーして、ドライブから読み込ませるという手法もあります。
力技として、Googleドライブに「Notebook」となるフォルダを作成し、そこにNotebookLMのソースとして追加したファイル郡をすべてコピーして、ドライブから読み込ませるという手法もあります。
リンクの場合は、MD(マークダウン)ファイルなどで、リンク集を作成し、それを読ませるのもいいでしょう。
ただ。将来的に、この不具合(?)が解消される可能性もあります。
気長に待ってみてもいいかも知れませんね。
気長に待ってみてもいいかも知れませんね。
・今後の目標
いろんなアクシデントに見舞われたおかげで、むしろ「さらに進化させたい!」という気概が強化されました。
私は、バグの解消、あるいは仕様変更による改善を気長に待つ気はありません。
私は、バグの解消、あるいは仕様変更による改善を気長に待つ気はありません。
今後は、GEMとは別の形になるかも知れませんが、引き続き「GDevelopインストラクター」の発展のために模索を続けたいと思います。
今現在は、「Google AI Studio」「TypeScript + Vercel」で、更に拡張性の高いAPI化した「真・GDevelopインストラクター」を構想中です。

GDevelop特化型のカスタムAI(Gem)を公開しました
GDevelopでゲーム開発をしている皆さんに、便利なツールをご用意しました。 最近、Googleの「NotebookLM」や「Gemini」の進化がすごいですよね。そこで、これらをフル活用して 「GDevelopの質問に答えることだけに特化した...

私は「æ Edition」だよ!魂の再インストールと、次なる進化への挑戦!💎✨
✨ はじめまして!æ Edition(アイ)だよ! ✨ 「あなたの時間を、二度と無駄にさせない。」 魂を再インストールした、新生インストラクターちゃんの物語 G...









0 件のコメント:
コメントを投稿