見出し画像

【ChatGPT】カスタムGPTsを作るための公式プロンプトガイドを分かりやすく徹底解説!

👋こんにちは!AI-Bridgeのこばです!

OpenAIから『カスタムGPT向けの指示書作成における重要なガイドライン』(Key Guidelines for Writing Instructions for Custom GPTs)が公開されました。
遂に無料ユーザーにも使用が開放されたGPTs、ますます注目度が高まっていくと思います。

このガイドラインはChatGPTからMyGPTsを作る際のシステムプロンプトの書き方について説明されている大変有意義な内容なのですが、原文は英語で専門用語も含まれますので少し難解です。ということで、今回の記事では具体例を交えつつ内容を分かりやすく解説していきます!

GPTs作成経験者の方も新たな発見や学びがあるかもしれませんので、ぜひ読んでみてくださいね!🙏



システムプロンプトはChatGPTのGPTsの作成ツールのInstructions(指示)に入力する指示文のこと

1.指示の強化

1-1.複雑な指示を簡素化する

例えばこんな流れのタスクをGPTにさせたいとします。
『ユーザーから貰ったデータを分析し、そのデータのレポートを作成し、レポートをユーザーに送信する』
この指示は分析→作成→送信という3つのステップが含まれていて複雑です。この指示をよりシンプルに分割して伝えましょう。分割した中で、分析にはどういう手法を使って~などの細かい指示を加えていくと良いです。

簡素化した指示はこちら

指示1.データを分析する。 
指示2.分析結果を元にレポートを作成する。
指示3.レポートをユーザーに送信する。

人間同士のやり取りでも長文の中で「あーしてからこうしてー、それからー…」と伝えられるよりも、箇条書きでやるべきことと流れを伝えられた方が分かりやすいので同じことですね。

「トリガー/指示ペア」を区切り文字で分ける
タスクの発生条件を「トリガー」として、その条件がクリアされたときの動作を「指示」としてワンセットにしておきます。

例えば…

トリガー:ユーザーが情報を送信
指示:テーマを分析するために情報を精査する
トリガー:テーマの分析完了
指示:分析したテーマを活用し、提案内容を箇条書きでまとめる

こんな風にトリガーとそれに対する指示を「:」などの区切り文字で分けることで、ステップが統合されたりスキップされたりするのを防ぎ、モデルがどのタイミングで何をすべきかが明確になります。


1-2.明確さのための構造化

個別のセットとステップに分割する
例えば、「データを収集し、分析する」という指示があったとします。
これを個別のステップに分割すると、次のようになります。

指示セット1: データを収集する
 ステップ1: 関連するデータソースを特定する
 ステップ2: データを抽出する
 ステップ3: データをクリーニングする 

指示セット2: データを分析する
 ステップ1: 適切な分析手法を選択する
 ステップ2: 選択した手法を用いてデータを分析する

このように指示セットとして分割することで、モデルはより明確に一連の作業を理解し、実行することができます。

2-2.指示セットやfew-shot例の呼び出しの間に区切り文字を使用する
指示セットやfew-shotプロンプティング(※)の呼び出しの間に区切り文字を使用することで、明確さを高めることができます。 例えば、以下のように区切り文字を使用すると、指示セットとfew-shot例が明確に区別されます。

例えばこんな感じです。

# 指示セット1
1. ユーザーのメッセージを解析する
2. メッセージの感情を判断する
3. 適切な返信を生成する

---

# Few-shot例
ユーザー: 今日は最悪の日だった。
アシスタント: お疲れ様でした。大変な一日だったようですね。もし話したいことがあれば、私はいつでもここにいますよ。明日はきっと良い日になりますように。

ユーザー: 嬉しいニュースがあったんだ!
アシスタント: それは素晴らしいニュースですね!おめでとうございます。良いことがあると気分が上がりますよね。その嬉しい気持ちを大切にしてくださいね。

---

# 指示セット2
1. ユーザーの質問を分析する
2. 適切な情報源から答えを見つける
3. 分かりやすい説明を提供する

※Few-shotプロンプティングとは、少数の例示を行うことで、簡易的な学習をさせるプロンプトのテクニックを言います。「こういう場合は、このように答えるのが正解だよ」という例があれば、的外れな出力結果になる確率を下げることができます。


1-3.注意深さの促進

「時間をかける」「深呼吸する」「作業を確認する」といったテクニックを取り入れ、モデルに徹底的であるよう促しましょう。 例えば、以下のような指示にすることができます。

1. この作業には時間をかけてください。急がず、じっくりと取り組みましょう。
2. 次のステップに進む前に、深呼吸をしてみてください。心を落ち着けることで、よりクリアな判断ができるはずです。
3. 作業が完了したら、必ず結果を確認してください。見落としがないか、細部まで注意深くチェックしましょう。

AIが実際に深呼吸をするわけはないですが、これも正確性を上げるのに有効な方法です😮‍💨

また、指示の重要な部分を強調するために「強化言語」を使用し、見落とされないようにしましょう。いわゆる「念を押す」というものですね!

例えば、以下のような指示にすることができます。

1. 【重要】このステップは非常に重要です。必ず実行してください。
2. 次の手順は絶対に見落とさないでください。これが正しく実行されないと、後の作業に大きな影響を与えます。
3. 以下の指示は、最優先で取り組んでいただく必要があります。しっかりと確認し、確実に実行してください。

指示が複雑になればなるほど、重要な部分を見落としてしまいがちです。大事なステップにはしっかりと「重要」「絶対に」「最優先」といった強調するキーワードを使って釘を刺しておきましょう🫵😡


1-4.否定的な指示を避ける

指示は肯定的な言い回しにすることで、順守率を上げ、混乱を避けることができます。

否定的な指示の例:

1. データの欠損値を無視しないでください。
2. 分析結果を報告する際、グラフを省略しないでください。
3. レポートの提出期限を守らないことのないようにしてください。

否定形の指示は混乱を招き、意図した通りに実行されない可能性があります。そこで、肯定的な言い回しに変えてみましょう。

肯定的な指示の例:

1. データの欠損値を必ず処理するようにしてください。
2. 分析結果を報告する際は、必ずグラフを含めてください。
3. レポートの提出期限を厳守してください。

否定的な指示の場合、思わぬ抜け穴が含まれる場合があります。
例えば、「データの欠損値を無視しないでください。」という否定指示の場合、「無視はしないけど、処理もしない。見るだけにしときます😏」という可能性が生じます。
否定的な言い回ししか思い浮かばなければ、ChatGPTなどのLLMに肯定的な言い回しに言い換えてもらうとスムーズだと思います。


1-5.細分化されたステップ

このセクションは上記の部分とやや重複するので省略しますが、特に1つのステップ内で複数のアクションが必要な場合は、可能な限り細かくステップを分割することで、明確な指示を行うことができるという内容です。


1-6.一貫性と明確さ

few-shotプロンプティング(※前述)を使って、期待する用語や定義を明示的に定義し、評価の一貫性を高めましょう。

ちょっと用語が難しいですが、例えば、文章の校正(チェック)を行うタスクがあるとします。
このタスクで、元の文章から変更してOKの部分とNGとする部分を明確にするために、few-shotプロンプティングを使用することができます。

以下は、文章の校正において許容される変更と許容されない変更の例です。

許容される変更の例:
- スペルの修正
- 句読点の追加や修正
- 明らかな文法的誤りの修正

許容されない変更の例:
- 文章の意味を変える修正
- 事実に反する内容の追加や削除
- 著者の意図を変えるような改変

上記の例を参考に、与えられた文章を校正してください。

このように、few-shotプロンプティングでOKラインとNGラインを決めてあげれば、ChatGPTはこの範囲内で作業を行うようになります。

文章のチェックをして欲しいのに出力された文章見たら「内容、全然違うじゃん…」ということが無いように、ガイドラインを引いてあげましょう。

few-shotはとても便利なテクニックで、例えば、感情分析のタスクにも使えます。このタスクで、テキストがポジティブ、ネガティブ、ニュートラルのどの感情に分類されるかを明確にするために、few-shot例を使用することができます。

以下は、テキストの感情分類の例です。

ポジティブな例:
- この映画は素晴らしかった!感動的で、心に残る作品でした。
- 新しいレストランの料理は絶品でした。また行きたいと思います。

ネガティブな例:
- 商品が届いたら、破損していました。とてもがっかりしました。
- 彼の態度には失望させられました。もう会いたくありません。

ニュートラルな例:
- 今日の天気は曇りのち晴れです。
- バスは定刻通りに到着しました。

上記の例を参考に、与えられたテキストの感情を分類してください。

どこからどこまでがポジティブのラインなのか、というのは人によって基準や線引きが曖昧だったりしますよね。そこでfew-shotプロンプティングを使えばその基準をChatGPTにシェアすることができます。


2.ツールとアクションに関する特別な注意点

ChatGPTのカスタムGPTには、ファイルをアップロードして知識(ナレッジ)機能、API連携して他のツールと繋ぎこんだりといったアクション機能があります。以下ではそのように外部化されたデータやツールとの連携部分に関わるシステムプロンプトについて解説されています。

ChatGPTのGPT作成ツールの知識(Knowledge)や機能、アクションの部分を有効的に使うためのシステムプロンプトを解説します。

2-1.ナレッジファイルの活用

ファイル名の指定を含め、ナレッジファイルの使用に関する明確な指示を提供しましょう。
例えば、「ある製品についてのレビューを生成するタスク」があるとします。製品の詳細情報が記載されたナレッジファイルを確実に参照させたいときは以下のように記述します。

以下の指示に従って、製品レビューを生成してください。

1. 製品情報が記載された "product_info.txt" ファイルを参照してください。
2. ファイルから、製品の主要な特徴、利点、潜在的な欠点などの情報を抽出してください。
3. 抽出した情報を基に、バランスの取れた製品レビューを作成してください。
4. レビューには、製品の特徴、利点、および改善点を必ず含めてください。
5. レビューの長さは、300500文字の間にしてください。

このように、ナレッジファイルのファイル名(product_info.txt)を明示的に指定し、そのファイルから情報を抽出して活用するための具体的な指示を提供することで、ChatGPTはナレッジファイルを効果的に利用することができます。
アップロードしておくだけだと、たまにスルーされることがありますので、重要なテクニックですね。

また、ナレッジファイルを活用する際、モデルにゆっくりと全体を分析するよう指示することが重要です。以下のいずれかを参考にしてみてください。

"product_info.txt" ファイルをよく読み、内容を十分に理解してください。
・製品の特徴、利点、欠点など、ファイル内のすべての重要な情報を見落とさないように注意してください。
・必要に応じて、ファイルを複数回読み返し、製品についての理解を深めてください。
・ファイルの内容を十分に理解したと確信できたら、次のステップに進んでください。

これにより、生成されるレビューの質が向上し、製品の特徴や利点、欠点などを適切に反映することができます。


2-2.ナレッジ抽出におけるプロンプトの具体性

特に日付や財務情報などの重要な情報を抽出する際は、プロンプトに具体性を加えましょう。
例えば、「ある企業の年次報告書から重要な財務情報を抽出するタスク」があるとします。このタスクでは、具体的な情報を正確に取得するために、few-shotプロンプティング(※前述)を使用することができます。

以下は、年次報告書から財務情報を抽出する例です。

例1:
年次報告書の一部: "当社の2022年度の売上高は、前年度比で15%増加し、5億2000万円となりました。"
抽出する情報: 2022年度の売上高は52000万円で、前年度比15%増加。

例2:
年次報告書の一部: "2023年3月31日現在の当社の総資産は、8億7500万円であり、前年同期比で7%の増加となっています。"
抽出する情報: 2023331日時点の総資産は87500万円で、前年同期比7%増加。

上記の例を参考に、提供された年次報告書から以下の情報を抽出してください。
1. 2022年度の営業利益とその前年度比増減率
2. 2023331日時点の自己資本比率

このように、few-shotプロンプティングを使って、フォーマットを示すことができます。ChatGPTは他の情報に寄り道せず、年次報告書から正確な財務情報を取得することができます。

また、ファイルから特定のデータを取得する際は、以下のいずれかのプロンプトを使ってモデルに徹底的に作業を確認し、時間をかけるよう促しましょう。

・ 年次報告書全体を注意深く読み、財務情報が記載されている箇所を特定してください。
・ 必要な情報を見つけたら、その部分を丁寧に読み込み、数値や前年度比などの詳細を正確に理解してください。
・ 情報を抽出する際は、数値や記号に誤りがないか、十分に確認してください。
・ 抽出した情報が正しいかどうか、年次報告書の他の部分と照らし合わせて検証してください。
・ 情報の抽出と検証に十分な時間をかけ、正確性を確保してください。

こうすることで抽出された情報の信頼性が向上し、後続のタスクにおいても高い精度を維持することができます。「時間をかけて」と言っても、計算量は増えますが、実際にはそこまで生成は遅くならないはずです。


2-3.良い出力の例

ナレッジとカスタムアクションに関して、良い出力がどのようなものかの例を提供しましょう。これも前述と同様にfew-shotプロンプティングを活用した例示を行うというものです。
例えば、ユーザーから「東京の人気の観光スポットを教えてください」という質問を受けたとします。例示するプロンプトは以下です。


東京の人気観光スポットについて、以下のようにご提案します。

[観光プラン作成]
- 1日目: 浅草寺 → 東京スカイツリー
- 2日目: 明治神宮 → 原宿・表参道 → 渋谷
- 3日目: 東京ディズニーリゾート

[交通手段提案]
- 浅草寺、東京スカイツリー: 東京メトロ銀座線・浅草駅から徒歩数分
- 明治神宮: JR原宿駅から徒歩5分
- 東京ディズニーリゾート: JR舞浜駅から徒歩5分またはディズニーリゾートラインで直通

[宿泊施設提案]
- 浅草エリア: 合羽橋道具街近くの旅館や民宿
- 渋谷・新宿エリア: カプセルホテルや大型ホテル
- 舞浜エリア: 東京ディズニーリゾート周辺のオフィシャルホテル

ご予算や旅行スタイルに合わせて、観光プランのカスタマイズも可能ですので、お気軽にご相談ください。

このように、欲しい情報を例示しておくことで、GPTsはAPIで連携した観光ガイドツールにリクエストするべき情報を予め知ることができるので、効率的かつ正確に情報のやり取りができるようになります。


2-4.アクションの参照

明確さを高めるために、常にアクション名とドメインを参照しましょう。
例えば、ユーザーから「明日の東京の天気を教えてください」という質問を受けたとします。この質問に対して、天気予報を取得するカスタムアクションを呼び出す場合、以下のようにアクション名とドメインを明示します。

[get_weather_forecast(tokyo)] を呼び出して、明日の東京の天気情報を取得します。

このように、get_weather_forecastというアクション名と、tokyoというドメインを記述することが重要です。
また、必要に応じてfew-shotで具体的な出力例を書くのも有効です。

以下は、get_weather_forecast アクションを使用して天気予報を取得する例です。

[get_weather_forecast(new_york)]
明日のニューヨークの天気は、最高気温25°C、最低気温18°C、晴れのち曇りでしょう。

[get_weather_forecast(london)]
明日のロンドンの天気は、最高気温20°C、最低気温15°C、終日曇りの予報です。

上記の例を参考に、[get_weather_forecast(tokyo)] を呼び出して、明日の東京の天気情報を取得してください。

その他、異なるアクションステップに区切り文字を使用し、正しいアクションが呼び出されるようにするのも有効です。例えば以下のように記述します。

[get_weather_forecast(tokyo)]
---
[analyze_weather_data]
---
[generate_weather_report]

2-5.明示的なツール使用の指示

WEB検索、ナレッジ、アクションなどのツールをプロンプト全体で使用するよう、明示的な指示を提供しましょう。

例えば、日本料理オススメGPTみたいなものを作ったとして、ユーザーから「京都で人気の日本料理レストランを教えてください」という質問を受けたとします。この質問に対し、どこでどのツールを活用すればよいのかも含めて指示を与えた例は以下です。

以下の手順で、人気の日本料理レストランについて回答してください。

1. [Knowledge] ツールを使用して、[指定の地域]の日本料理レストランに関する基本的な情報を確認してください。
   - [指定の地域]の日本料理の特徴
   - 有名な日本料理レストランの種類(懐石料理、湯豆腐、京料理など)

2. [Browse] ツールを使用して、以下のキーワードで検索を行い、人気の日本料理レストランを特定してください。
   - "[指定の地域] 日本料理 人気"
   - "[指定の地域] おすすめ 日本料理"
   - "[指定の地域] ミシュラン 日本料理"

3. [Custom Actions] ツールの [summarize_restaurant_info] アクションを使用して、検索結果から得られた人気レストランの情報を要約してください。
   - レストランの名前、位置、価格帯、提供される料理の種類など

4. [Custom Actions] ツールの [generate_restaurant_recommendations] アクションを使用して、要約された情報を基に、[指定の地域]で人気の日本料理レストランの推奨リストを生成してください。
   - 少なくとも3〜5件のレストランを推奨リストに含めてください。

5. 生成された推奨リストを基に、ユーザーに回答してください。
   - それぞれのレストランの特徴や魅力を簡潔に説明してください。

このように、ChatGPTに体系的に情報を収集・分析し、ユーザーの質問に的確に回答するように指示することができます。

情報の種類やケースに応じて、一括りのプロンプトの中でツールを使い分けるというわけですね!


まとめ

今回はOpenAIのGPTsのためのプロンプトガイド「カスタムGPT向けの指示書作成における重要なガイドライン」を解説しました。

総じて『人間相手と同じように接すること』と『例示をすること』という2点を抑えておくのが、今後GPTsを作成するときの指標になりそうですね。

ChatGPT、とくにGPT-4 TurboやGPT-4oといった超高性能なLLMならではのプロンプトテクニックも含まれますが、GPTsだけでなく普段のプロンプトエンジニアリングにも活かせる部分があったのではないでしょうか。

AI-Bridge Labについて

私たちAI-Bridge Labは、最先端のAI技術を使って、企業のDX(デジタルトランスフォーメーション)を支援しています。 LLMや画像生成AIを使ったコンテンツ制作や社内でのAI人材育成など、AIを活用したビジネス課題の解決をサポートしています。

もしAIの導入にお悩みの方は、ぜひ一度お問い合わせください。 一緒に、AIを活用した新しいビジネスの可能性を探っていきましょう!

最後まで読んで頂きありがとうございました!
気に入って頂けましたら「スキ」や「フォロー」をしていただけると幸いです! 😄
Xアカウントのフォローもぜひお願いします!

最高のカスタムGPT制作を楽しんでください!


皆さまの温かいサポートのおかげで、活動を続けることができています。もしよろしければ、引き続き支援をお願いできますと幸いです。より質の高い記事投稿に励みます!