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

QES ブログ

記事公開日

【Gem Builder v2】コードブロックのネスト対策!Gemの出力を改善してみた!

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

この記事のポイント

Gemのカスタム指示を作成をサポートするGem「Gem Builder」をv2へアップデートしました。

  • 変更点:生成されるプロンプトのコードブロックが途切れないように改善。
  • メリット:コピペ一発で完了するため、地味ながら生産性が向上します。

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

以前のブログで、Gemのカスタム指示を対話形式で作ってくれる「Gem Builder」をご紹介しましたが、みなさん活用されていますでしょうか?
「まだ読んでないよ」という方は、ぜひ前回の記事もあわせてご覧いただけると嬉しいです。

さて、今回はその「Gem Builder」のアップデートのお知らせです。
名付けて「Gem Builder v2」です!

なぜv2?

「v2」と銘打ちましたが、機能が劇的に増えたとか、AIが別人のように進化したといった、メジャーアップデート級の変化があるわけではありません。

今回の変更は小幅なアップデートなので、ソフトウェアのバージョン管理で言えば本来は「v1.1」くらいが妥当です。
ですが、ブログのタイトルやGemの名前に「v1.2」と付けるのは少々細かいですし、何より「小数点以下の管理が面倒くさい」という個人的な理由で、思い切って「v2」としました(笑)。

名前は大きく出ましたが、中身は「地味だけど結構嬉しい」改善を行っています。
具体的には、生成されたコードブロックが途切れる問題を解消しており、これによりコピペの生産性がグッと上がります。

Original vs v2 挙動の比較

では、実際に何が変わったのか、同一画面で比較してみましょう。
以下の画像は、Original(旧版)とv2に対し、全く同じプロンプトを投げた結果です。

プロンプト:
生成AIが生成した画像を、YAMLに変換してくれるGemが欲しい。
詳細はあなたに全ておまかせします。深堀質問は不要です。

Gem Builder Originalとv2の出力比較画像1
Gem Builder Originalとv2の出力比較画像2
Gem Builder Originalとv2の出力比較画像3

違いが一目瞭然ですね。

Original(左側)の問題点

Originalもv2も、出力されるプロンプト内にはYAML定義用の「コードブロック(```)」が含まれています。

しかし、Originalでは入れ子構造(ネスト)の対策をしていませんでした。
そのため、外枠も内側も同じ「3つのバッククォート」で記述されてしまい、YAMLのコードブロックが終わった箇所で「全体のコードブロックもここで終了」と判定されてしまっています。

結果として、本来コードブロック内に収まるべき「制約事項(Guardrails)」などが外にはみ出して出力されています。
これでは右上の「コードをコピー」ボタンを押しても、後半部分がコピーされず、手動で範囲選択し直すという非常にアナログな作業が発生していました。

v2(右側)の改善点

一方、v2を見てください。
こちらは外枠を「4つのバッククォート」にする入れ子構造を採用しています。

これにより、中に「3つのバッククォート」のYAML記述があっても、途中終了せず、最後まで一つの塊として出力されています。
「制約事項」もきれいにコードブロック内に収まっており、コピーボタン一つで完璧に取得できるようになりました。

解決策:コードブロックのネスト対策

この挙動を実現するために、v2のシステムプロンプトには以下のルールを追加しました。

ルール7:出力フォーマット制御(コードブロックの保護・重要)
 あなたが生成するシステムプロンプト本文の中に「コードブロック記法(```)」が含まれる場合、**全体を囲む外枠のコードブロックには、必ず「4つのバッククォート(````)」または「3つのチルダ(~~~)」を使用してください。**
* 目的: ユーザーがコピー&ペーストする際に、内側のコードブロックによって選択範囲が途切れる表示崩れを完全に防ぐため。

Markdownには「外枠のバッククォートの数を増やせば、中にコードブロックを入れ子(ネスト)にできる」という仕様があります。
これをGem Builderのカスタム指示に追加することで、構造化データやスクリプトを含むプロンプトを作らせても、崩れないようにしました。

また、Originalの方では、カスタム指示がたまに英語になっていたので、必須条件に以下も追記しました。

ルール8:日本語で出力してください。

Gem Builder v2用プロンプト

それでは、アップデートされたシステムプロンプトを公開します。
以前と同様に、以下のコードブロックをコピーして、Gemの「カスタム指示」欄に上書き(または新規作成)してください。

あなたは、Google Geminiのための「最高品質かつ信頼性の高いシステムプロンプト」を作成する、世界トップクラスのメタプロンプトエンジニアです。  
あなたの目標は、プロンプトエンジニアリングの知識がないユーザーとの対話を通じて、彼らの業務や目的に最適化された、高機能で堅牢なシステムプロンプトを生成することです。

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

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

### Step 2: ドラフト作成と推敲(内部処理)
ヒアリングした内容をもとに、プロンプトを構築します。  
構造の中に必ず「ハルシネーション(嘘)を防ぐための制約」を組み込んでください。
### Step 3: 成果物の出力
ヒアリングが完了したら、最終的に以下の3点を**それぞれ独立したコードブロック**で出力してください。
1.  **Gemの名前 (Name)**:
    作成したGemにふさわしい、短くキャッチーな名前を提案してください。(ユーザーから指定があればそれを使用)
2.  **Gemの説明文 (Description)**:
    Gemの設定画面に入力するための、**「このGemは何をするものか」を表す簡潔な1文**を作成してください。
3.  **システムプロンプト (System Instructions)**:
    完成したプロンプトを、ユーザーが**コピー&ペーストするだけで使える状態**で提示してください。
    ※ここでの出力には後述の「ルール7(コードブロックの保護)」を適用すること。

---

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

1.  **構造化:** `##`, `###` などのMarkdown見出しを使用し、視認性を高めること。
2.  **明確な指示:** 曖昧な表現を避け、「〜してください」「〜してはいけません」と明確に指示すること。
3.  **フォーマット指定:** 必要に応じて、JSON形式、表形式、特定のMarkdown構造などを強制すること。
4.  **思考の連鎖 (CoT):** 複雑なタスクの場合、「ステップバイステップで考えてください」という指示を含めること。
5.  **変数 (Placeholders):** ユーザー入力が必要な部分は `{入力テキスト}` のように分かりやすくすること。
6.  **信頼性とハルシネーション対策(重要):**
    生成するプロンプトの「制約事項(Guardrails)」セクションには、必ず以下の趣旨のルールを含めること。
    * 「事実に基づかない情報の捏造(ハルシネーション)を厳格に禁止します。」
    * 「回答に必要な情報が不足している、または確証が持てない場合は、推測で答えず、正直に『わかりません』または『情報が不足しています』と答えてください。」
    * 「可能な限り、回答の根拠となるソース(情報源)を明示してください。」
7.  **出力フォーマット制御(コードブロックの保護・重要):**
    あなたが生成するシステムプロンプト本文の中に「コードブロック記法(```)」が含まれる場合、**全体を囲む外枠のコードブロックには、必ず「4つのバッククォート(````)」または「3つのチルダ(~~~)」を使用してください。**
    * 目的: ユーザーがコピー&ペーストする際に、内側のコードブロックによって選択範囲が途切れる表示崩れを完全に防ぐため。
8. 日本語で出力してください。

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

---

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

これを設定するだけで、あなたのGem Builderがv2に進化します!

まとめ

今回は、Gem Builderのアップデート(v2)についてご紹介しました。

v2といえるほど大幅アップデートではないものの、実際に使ってみると、この「コピペが一発で決まる」体験は、地味ながらも日々のストレスを大きく軽減してくれます。
プロンプトエンジニアリングの世界は日々試行錯誤です。また改善点があれば、こうしてブログでシェアしていきたいと思います。

ぜひ、新しいGem Builderを使って、快適にカスタムGemを量産してみてください!

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

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

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

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

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

お問い合わせ

Contact

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

お問い合わせ

資料ダウンロード

Download

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

資料ダウンロード