生成AIを活用する上で、プロンプトの設計は非常に重要な要素です。特にプロンプトの構造化は、生成AIから望む結果を引き出すための鍵と言えるでしょう。
プロンプトを構造化する
構造化されたプロンプトでは、シンプルで読みやすいテキスト形式で文章を書くために#(シャープ)や*(アスタリスク)などの記号を使って、見出しや箇条書きなどを表現できます。
まずは、構造化されていないプロンプトの例を見てみましょう。
【構造化されていないプロンプトの例】
| プロンプト | あなたは栄養士です。 ダイエットのために、痩せやすい料理のメニューを考えてください。必要な素材も一緒に出力してください。小麦粉アレルギーなので小麦粉は使用しないメニューを提示してください。 |
| ChatGPTの回答 | ダイエットに効果的な、小麦粉を使わない食事メニューを提案しますね。 朝食 メニュー: スクランブルエッグとアボカドのトースト 材料: 卵 2個 アボカド 1個 グルテンフリートースト 2枚 塩、こしょう 少々 オリーブオイル 少々 トマト 1個 昼食 メニュー: サーモンとキノコのグリル 材料: サーモンフィレ 150g キノコ(しいたけやマッシュルーム)100g ブロッコリー 100g オリーブオイル 大さじ1 レモン汁 大さじ1 塩、黒こしょう 少々 夕食 メニュー: 鶏胸肉と野菜の炒め物 材料: 鶏胸肉 200g にんじん 1本 パプリカ 1個 ズッキーニ 1本 セロリ 1本 にんにく 1片 しょうゆ 大さじ1 オリーブオイル 大さじ2 塩、こしょう 少々 これらのメニューは、タンパク質を豊富に含みつつ、低カロリーで満足感があり、ダイエットに適しています。 各食事は簡単に調理できるので、日常的に取り入れやすいですね。どの料理も栄養バランスが考えられていて、ダイエットをサポートするのに役立ちます。 |
では、プロンプトを構造化してみます。 ここでは前のLessonでも学んだ5つの要素(役割・命令・文脈・制約事項・出力指示)を用いてプロンプトを構造的に記述してみましょう。
【構造化されたプロンプトの例】
| プロンプト | # 役割 栄養士 # 命令 痩せやすい料理のメニューを考えてください。 # 文脈 ダイエットのため # 制約事項 小麦粉アレルギーなので小麦粉は使用しないメニューを提示してください。 # 出力指示 必要な素材も一緒に出力してください。 |
| ChatGPTの回答 | 痩せやすい料理のメニューを考える際、バランスの取れた栄養素の摂取と小麦粉を使用しない点に注意して、以下のような1日のメニューを提案します。 朝食:スムージーボウル 材料 ベビースピナッチ: 1カップ 凍らせたミックスベリー: 1カップ バナナ: 1本 アーモンドミルク: 1/2カップ グラノーラ(小麦不使用): 1/4カップ チアシード: 1大さじ 昼食:サーモンとアボカドのサラダ 材料 生サーモン: 150g(刺身用) アボカド: 1個 ミックスリーフ: 2カップ ミニトマト: 1/2カップ オリーブオイル: 2大さじ レモン汁: 2大さじ 塩、こしょう: 少々 夕食:鶏胸肉のグリルと野菜のロースト 材料 鶏胸肉(皮なし): 200g ブロッコリー: 1カップ 人参: 1本 ズッキーニ: 1本 オリーブオイル: 1大さじ ローズマリー: 小枝2本 塩、こしょう: 少々 これらの料理はすべてバランスの取れた栄養素を含み、特に脂質の良質なソースであるオメガ3脂肪酸が豊富なサーモンや、食物繊維が豊富な野菜を多く使用しています。 加えて、すべての食事において、糖質の摂取を控えめにしており、ダイエット中の方にも適しています。 |
一般的にChatGPTは自然言語文で入力を与えるよりも、構造化されたテキストを与えるほうが出力結果の精度が向上することが知られています。
ただし、今回の例では出力結果の精度に差異は見えません。これはOpenAIのガイドラインにも記載されている通り、「単純タスクの場合には構造化されたプロンプトでも出力結果に差異が生じない」ためです。 単純なタスクであっても普段より構造化されたプロンプトを心がけることで、複雑なタスクへ取り組む場合でも問題ない出力精度を保てるようにしましょう。
参考:OpenAI「Tactic: Use delimiters to clearly indicate distinct parts of the input (日本語訳 : よい結果を得るための6つの戦略・戦術:区切り文字を利用して入力の異なる部分を明確に示します)」 https://platform.openai.com/docs/guides/prompt-engineering/tactic-use-delimiters-to-clearly-indicate-distinct-parts-of-the-input
構造化したプロンプトはテンプレート化できる
構造化したプロンプトをテンプレート化して再利用することで次のような利点があります。
1. プロンプトを作成する時間の効率化
テンプレート化されたプロンプトを用いることで、プロンプトの作成過程が標準化され、プロンプト作成にかかる時間を大幅に短縮できます。
2. 意図した出力が得られやすくなる
生成AIはプロンプトを少し変更しただけで、意図した出力が得られなくなる可能性があります。テンプレート化されたプロンプトを用いることで、記述すべき項目が明確に分かるため、記述漏れが少なくなり、結果的に出力結果の質の安定化に繋がります。
3.チーム内でプロンプトを共有しやすい
テンプレートを共有することで、チームメンバー間で一貫したプロンプトの品質と構造を維持することができ、新しいメンバーがプロジェクトに加わった際の教育コストも削減できます。また、予期せぬ誤解やミスのリスクを減らし、チーム内で生成AIの活用を促進する効果も期待できます。

コメント