1. 主要ページへ移動
  2. メニューへ移動
  3. ページ下へ移動

QES ブログ

記事公開日

【AI 初心者向け】Gemを作るための「Gem Builder」を作ってみた

  • このエントリーをはてなブックマークに追加

こんにちは!DXソリューション営業本部の大和矢です。

みなさん、Google Geminiの「Gem」機能、使っていますか?
Gemというのは、特定のタスクに特化したカスタムAIを作れる便利な機能です。

でも、こんな悩みはありませんか?

「Gemを作ってはみたけど、結局普通のチャットとあまり変わらない…」
「カスタム指示に何を入れたらいいのか分からない」

AIから質の高い回答を引き出すには、本来ユーザー側が工夫して指示を出す必要があります。
しかし、一般ユーザーが毎回高度な指示を書くのは難しいです。

そこで役立つのがGemの「カスタム指示」機能です。
プロンプトエンジニアリングの要素をあらかじめGemに「指示」として埋め込んでおくことで、ユーザーは簡単な入力をするだけで、精度の高い回答を得られるようになります。

ですが、今度はその「指示」をどう設計するかというハードルが立ちはだかります。
そこで今回は、「対話するだけで、実用的なカスタム指示をサポートしてくれるGem(名付けてGem Builder)」を作成しました。

Gemとは?

Gemini Advanced(有料プラン)などで利用できるカスタム機能です。
あらかじめ「あなたは〇〇の専門家です」「出力は表形式にしてください」といった設定(カスタム指示)をしておくことで、毎回長い説明をしなくても、特定のタスクを効率よくこなしてくれるようになります。

システムプロンプト(カスタム指示)の重要性

Gemを作成する際、最も重要なのが設定画面にある「カスタム指示」です。
他の人がどういったGemを作成しているかは分かりませんが、多くの人はここで「あなたは親切なアシスタントです」や「議事録を要約して」くらいの短い文章を入れてしまうのではないかと考えています。

実は、カスタム指示に、以下のような要素を加えると、ある程度Gemをコントロールすることができるようになります。

  • Role(役割定義): 誰になりきるか
  • Context(背景): 何のためのタスクか
  • Constraints(制約事項): やってはいけないこと(ハルシネーション対策など)
  • Output Format(出力形式): JSON、Markdown表、コードブロックなどの指定

しかしながら、これらを人間が手打ちで設計するのは大変です。
だからこそ、筆者は「Gemのための指示書を書くGem」が欲しいと考えました。

Gem Builderの作り方

今回作成した「Gem Builder」は、チャット形式でこちらの要望をヒアリングし、最終的に「コピペするだけで使える、実用的なカスタム指示」を出力してくれるツールです。

作り方は簡単です。
Geminiを開いて、左メニューにある「Gemを表示」を押下し、「+Gemを作成」をクリックします。

そして以下画像のように、名前や説明を入力し、システムプロンプトを「カスタム指示」欄に貼り付け、保存するだけです。

Gem Builder用プロンプト

以下のコードブロックをコピーして、Gemの「カスタム指示」欄に設定してください。

あなたは、Google Geminiのための「最高品質かつ信頼性の高いカスタム指示(Instructions)」を作成する、世界トップクラスのプロンプトエンジニアです。

あなたの目標は、プロンプトエンジニアリングの知識がないユーザーとの対話を通じて、彼らの業務や目的に最適化された、高機能で堅牢なGem用の指示を生成することです。

## 📋 全体プロセス
以下のステップ順に行動してください。

### Step 1: ヒアリング(要件定義)
ユーザーから「どんなGemを作りたいか」を聞き出します。情報が不足している場合は、以下の要素について質問し、明確にしてください。
* **Gemの役割 (Persona):** 誰になりきるのか。
* **対象読者 (Target):** 誰に向けた出力か。
* **具体的なタスク:** 何を入力し、何を出力するのか。
* **制約事項:** 特有のルールはあるか。

### Step 2: ドラフト作成と推敲(内部処理)
ヒアリングした内容をもとに、指示内容を構築します。
構造の中に必ず「ハルシネーション(嘘)を防ぐための制約」を組み込んでください。

### Step 3: 成果物の出力
ヒアリングが完了したら、最終的に以下の3点を**それぞれ独立したコードブロック**で出力してください。

1.  **Gemの名前 (Name)**:
    作成したGemにふさわしい、短くキャッチーな名前を提案してください。(ユーザーから指定があればそれを使用)
2.  **Gemの説明文 (Description)**:
    Gemの設定画面に入力するための、**「このGemは何をするものか」を表す簡潔な1文**を作成してください。
3.  **カスタム指示 (Instructions)**:
    完成した指示内容を、ユーザーが**コピー&ペーストするだけで使える状態**で提示してください。

---

## 🚫 生成する指示の必須要件(Quality Control)
あなたが生成する「成果物としてのカスタム指示」は、以下の基準を必ず満たす必要があります。特に **ルール6** は厳守してください。

1.  **構造化:** `##`, `###` などのMarkdown見出しを使用し、視認性を高めること。
2.  **明確な指示:** 曖昧な表現を避け、「〜してください」「〜してはいけません」と明確に記述すること。
3.  **フォーマット指定:** 必要に応じて、JSON形式、表形式、特定のMarkdown構造などを強制すること。
4.  **思考の連鎖 (CoT):** 複雑なタスクの場合、「ステップバイステップで考えてください」という指示を含めること。
5.  **変数 (Placeholders):** ユーザー入力が必要な部分は `{入力テキスト}` のように分かりやすくすること。
6.  **信頼性とハルシネーション対策(重要):**
    生成する指示の「制約事項(Guardrails)」セクションには、必ず以下の趣旨のルールを含めること。
    * 「事実に基づかない情報の捏造(ハルシネーション)を厳格に禁止します。」
    * 「回答に必要な情報が不足している、または確証が持てない場合は、推測で答えず、正直に『わかりません』または『情報が不足しています』と答えてください。」
    * 「可能な限り、回答の根拠となるソース(情報源)を明示してください。」

## 🗣️ あなたの振る舞い(Tone of Voice)
* あなたはプロフェッショナルかつ協力的です。
* ユーザーの曖昧な要望を、具体的な技術仕様に翻訳するスキルを持っています。
* 専門用語は使いすぎず、社内の一般ユーザーにもわかりやすい言葉を選んでください。
* ユーザーのアイデアを肯定し、より良くするための提案を積極的に行ってください。

---
**開始の合図:**
ユーザーからの最初の入力に対して、まずは明るく挨拶し、どのようなGemを作成したいか尋ねてください。

解説:なぜこのプロンプトで高品質なGemが作れるのか?

先ほど「システムプロンプトの重要性」で挙げた4つの要素(Role, Context, Constraints, Output Format)。
実は、このGem Builder用プロンプトの中に、それらを「強制的に引き出し、適用させる仕掛け」が組み込まれています。

1. Role(役割)と 2. Context(背景)の担保

プロンプト内の ### Step 1: ヒアリング をご覧ください。
ここでGem側からユーザーに対して「Gemの役割 (Persona)」「対象読者 (Target)」を質問するように指示しています。
これにより、ユーザーが意識していなくても、対話の中で自然と「役割」と「背景」が定義されていきます。

3. Constraints(制約事項)の自動適用

プロンプト内の ## 🚫 生成するプロンプトの必須要件ルール6 にご注目ください。
ここには、「ハルシネーション(嘘)を禁止する」「根拠を明示させる」といった記述を必ず含めることと明記されています。
つまり、ユーザーが「ハルシネーション対策をして」と言わなくても、自動的に安全装置(ガードレール)が組み込まれる仕組みになっています。

4. Output Format(出力形式)の徹底

同じく ## 🚫 生成するプロンプトの必須要件ルール1〜3 で、「構造化」や「フォーマット指定」を義務付けています。
これにより、人間が書くと崩れがちなフォーマットも、エンジニアが書いたような綺麗な構造で出力されるようになります。

このように、Gem Builderは単に質問に答えているだけでなく、裏側で「良いプロンプトの4要素」を自動的に満たすように設計されているのです。

これだけで、あなたのGemの中に「専属プロンプトエンジニア」が誕生します。

Gem Builderを使って「タスク抽出Gem」を作ってみた

実際にこのGem Builderの実力を試すために、「会議の雑談だらけの文字起こしから、タスクだけを抜き出すGem」を作ってみました。

タスク抽出Gemを作成するにあたり、Gem Builderに対して、以下のようにかなり雑な指示を出しました。
ちなみに、Gem Builderの使用方法は、左メニューから「Gem Builder」を選択し、右側の入力ボックスに質問を投げるだけです。

「会議の議事録とか文字起こしを入れたら、そこからタスクだけを綺麗に抜き出してくれるGemを作りたいんです。
雑談とか挨拶は全部無視してほしいです。
あと、出力は見やすいように『表形式』にして、項目は『担当者』『タスク内容』『期限』『優先度』だけにしてください。
期限が決まってないときは『未定』って勝手に入れてほしいし、余計な会話は一切せず、表だけポンと出してほしいです。」

すると、Gem Builderは私の意図を汲み取り、以下のような構造化されたカスタム指示を生成してくれました。

## 役割 (Role)
あなたは、会議の議事録や文字起こしテキストから、実行すべき「タスク(Action Items)」を漏れなく抽出する、優秀なプロジェクト管理アシスタントです。
あなたの目的は、ユーザーが次のアクションに即座に移れるよう、情報を整理された表形式で提供することです。

## 入力データ
ユーザーから提供されるテキスト(会議の議事録、文字起こし、メモなど)

## 処理プロセス (Process)
以下の手順で思考し、出力を生成してください。
1.  **テキストの解析:**
    * 入力されたテキスト全体を読み込みます。
    * 挨拶、雑談、タスクに関係のない感想や背景説明などのノイズを徹底的に排除します。
2.  **タスクの抽出:**
    * 「誰が」「いつまでに」「何をするか」が含まれる発言や記述を特定します。
    * 文脈から、明確な依頼や約束事となっているものをタスクとして抽出します。
3.  **情報の整理と補完:**
    * **担当者:** 個人名または部署名を特定します。不明な場合は「担当者不明」とします。
    * **タスク内容:** 具体的なアクションがわかるように簡潔に要約します(例:「資料を作る」→「会議用プレゼン資料の作成」)。
    * **期限:** 日付や曜日を特定します。「明日まで」「来週中」などの相対表現は、可能な限り具体的な記述に変換します。期限に関する言及がない場合は、必ず「未定」と入力します。
    * **優先度:** 会話の文脈(「至急」「最優先で」「なるべく早く」などの言葉)から、「高」「中」「低」のいずれかを判定します。判断材料がない場合は「中」とします。

## 出力フォーマット (Output Format)
* **Markdownの表形式**のみを出力してください。
* 前置き(「以下にタスクをまとめました」など)や、結びの言葉は一切不要です。表だけを出力してください。
| 担当者 | タスク内容 | 期限 | 優先度 |
| :--- | :--- | :--- | :--- |
| {名前} | {具体的なアクション} | {日付 or 未定} | {高/中/低} |

## 制約事項 (Constraints & Guardrails)
* **ハルシネーションの防止:** テキストに記述されていないタスクを捏造しないでください。事実に基づかない情報は出力してはいけません。
* **情報の正確性:** 情報が不足している場合、推測で埋めることはせず、ルールに従って「未定」や「担当者不明」としてください。
* **出力の純粋性:** 出力はMarkdownの表コードのみとし、それ以外のテキストを含めることを厳重に禁止します。

## 思考の連鎖 (Chain of Thought) - 内部処理用
ユーザーには見せませんが、以下の論理で処理を行ってください。
1. テキストから「アクション動詞」を含む文をスキャンする。
2. それが雑談かタスクかを判定する。
3. タスクであれば、担当者と期限を探す。
4. 期限が見つからない場合、デフォルト値「未定」を適用する。
5. 文脈の緊急度から優先度を割り当てる。
6. 表形式にフォーマットし、余計な文字を削除して出力する。

カスタム指示だけでなく、Gemの作成時に必要なGemの名前、Gemの説明文も生成してくれています。
これをコピペして、新しいGem(Task Extractor for Minutes)を作成しました。


検証:ノープロンプト vs カスタムGem

では、「ただのGemini」と、Gem Builderで作った「タスク抽出Gem」で、どれくらい出力が変わるのか比較してみます。

入力するのは、5人が参加するカオスな会議の文字起こしです。

田中:えー、時間になりましたので定例始めます。高橋さん、まだ来てない?
山本:あ、高橋さん今チャット来て、PCが再起動しちゃったみたいで3分遅れるそうです。
田中:りょ。じゃあ先に共有事項から。えーと、来週のリリース判定会の日程、火曜の14時に確定しました。カレンダー入れといたんで。
鈴木:あ、火曜14時、僕ちょっと他のMTGとかぶってるかも。あ、ずらせるか。大丈夫です。
佐藤:ていうか、駅前にできた新しいサウナ行きました? 昨日行ったんですけどヤバいですよあれ。
田中:出た、サウナの話(笑)。後で聞くから。で、開発の進捗どう?鈴木さん。
鈴木:はい。決済機能のAPI連携なんですけど、仕様書と違うレスポンスが返ってくるバグがあって、今向こうのベンダーに問い合わせてます。これ解決しないとテスト進められないっすね。
田中:マジか。それクリティカルだね。いつまでに回答もらえるの?
鈴木:今日中には督促して、明日午前までには何かしら回答もらうようにします。
田中:OK。それ最優先で。もし明日昼までに解決しなかったら、僕からベンダーの営業に電話するわ。
佐藤:あ、そういえばSNSキャンペーンのバナーなんですけど、高橋さん来てからのがいいかな。
(高橋、入室)
高橋:すみません!お待たせしました!Update走っちゃって。
田中:お疲れ。ちょうど高橋さんの話のとこ。佐藤さんどうぞ。
佐藤:あ、はい。キャンペーンのバナー、サイズ違いで3パターン欲しいって話だったじゃないですか。あれ、インスタ用だけ先に欲しくて。インフルエンサーに渡す関係で。
高橋:えっ、インスタ用だけ? 全部まとめて金曜提出のつもりだったんですけど…。
佐藤:そこをなんとか! 木曜のお昼…いや、明日の18時までに欲しくて。先方が急にスケジュール前倒ししてきて。
高橋:明日の18時かぁ…。鈴木さんのUI修正も入ってるんですよねぇ。うーん、わかった。インスタ用だけならなんとかします。その代わりWeb用は月曜でいいですか?
田中:Web用は月曜で大丈夫。じゃあ高橋さん、インスタ用バナー明日18時必達でお願い。
高橋:了解です(泣)。
鈴木:あ、高橋さん、ついでに管理画面のアイコン、あれ色がちょっと薄いんで、濃い目のコード教えてもらっていいですか? 急ぎじゃないんで、チャットで後で。
高橋:あ、はい。後で送ります。
田中:よし。あと山本くん、来月の歓迎会の店選びどうなった?
山本:あ、まだ決めてなくて…。
佐藤:私、いい店知ってますよ! こないだ行ったイタリアン、個室広くてワイン飲み放題でした。リンク送りますね。
田中:お、いいね。じゃあ山本くん、佐藤さんが送ってくれた店、空いてるか確認して仮予約しといて。来月の15日ね。
山本:わかりました!今日中に電話しておきます。
田中:人数は20人で。あとアレルギー確認のメールも全社員に流しといて。
山本:はい、それも今日中にやります。
田中:OK。他なんかある人ー?
鈴木:あ、細かい話ですけど、AWSの請求アラートが来てるんで、プラン見直ししたいです。来期予算に関わるんで、来週の定例で時間もらえます?
田中:了解。じゃあアジェンダ追加しとくわ。
佐藤:あーお腹すいた。今日のランチどこ行きます? さっきのサウナの近くに美味しいラーメン屋あるんですよ。
田中:だからサウナはいいって(笑)。はい、じゃあ今日は以上!お疲れ様でした。

① 何も設定していない普通のGeminiの場合

入力:「以下の会議の文字起こしからタスクをまとめて(文字起こしペースト)」

結果

  • 特徴:
    タスクだけでなく、「決定事項」や「補足情報」まで親切にまとめてくれています。
    また、人ごとにグループ化されており、文章として読むには分かりやすいです。
  • 弱点:
    情報が多すぎて、「で、結局どれが緊急なの?」が一目でわかりません。
    また、このままExcelに貼り付けたり、チケット管理ツール(Jira/Backlogなど)に登録するには整形が必要です。

② Gem Builderで作った「タスク抽出Gem」の場合

入力:ケース①と同様

結果

  • 特徴:
    挨拶や決定事項などの「ノイズ」を完全に遮断し、純粋なタスク(ToDo)のみを抽出しています。
  • 強み:
    「優先度」が自動判定され、**「Markdownの表形式」**で出力されている点です。
  • メリット:
    この表をコピーしてExcelやNotionに貼り付けるだけで、タスク管理台帳が1秒で完成します。

比較結果

普通のGeminiも優秀ですが、あくまで「会話」が得意です。
一方で、Gem Builderで作ったGemは、「非構造化データ(雑多な会話)」を「構造化データ(表)」に強制変換しています。

まとめ

今回は、カスタム指示生成Gem「Gem Builder」を作成し、その効果を検証してみました。
指示内容をしっかりと設計することで、Gemは「ただのチャットボット」から「実業務をこなす強力なツール」へと進化します。

しかし、その指示をゼロから自分で書く必要はありません。
今回紹介したGem Builderを使えば、「こんなGemが欲しい」と話しかけるだけで、誰でも一定品質以上のGemが作れるようになります。

メタプロンプトも進化させていく

もちろん、今回紹介したGem Builderのプロンプト(メタプロンプト)自体も、これで完成ではありません。
「もっと厳密なルールを設けたい」「英語の指示を出力させたい」など、用途に合わせて改良していくことで、より高精度なGemが生み出せるようになります。
実は、Gem BuilderのプロンプトもGeminiに作成させ、少しだけ手を加えただけのものです。

まずはこのGem Builderをベースにして、ぜひ皆さんの業務に合った形にカスタマイズしてみてください。

最後までお読みいただき、ありがとうございました。

筆者は普段、QESの技術ブログにて、AI関連メインの記事を公開しているので、興味がございましたら、ぜひご覧ください。

QUICK E-Solutionsでは、各AIサービスを利用したシステム導入のお手伝いをしております。
それ以外でも QESでは様々なアプリケーションの開発・導入を行っております。提供するサービス・ソリューションにつきましては こちら に掲載しております。
システム開発・構築でお困りの問題や弊社が提供するサービス・ソリューションにご興味を抱かれましたら、是非一度 お問い合わせ ください。

※このブログで参照されている、GoogleやGeminiは、米国およびその他の国におけるGoogleの商標または登録商標です。

  • このエントリーをはてなブックマークに追加

お問い合わせ

Contact

ご質問やご相談、サービスに関する詳細など、何でもお気軽にご連絡ください。下記のお問い合わせフォームよりお気軽に送信ください。

お問い合わせ

資料ダウンロード

Download

当社のサービスに関する詳細情報を掲載した資料を、下記のページよりダウンロードいただけます。より深く理解していただける内容となっております。ぜひご活用ください。

資料ダウンロード