生成AIの性能を最大限に引き出すには、「プロンプト」の書き方が鍵になります。
同じ質問でも、伝え方次第で回答の精度が30%以上も変わることをご存知でしょうか。Google Cloudが公開した「エンジニアのためのプロンプト活用ガイド」をもとに、明日から使える7つの実践テクニックをご紹介します。
プロンプトエンジニアリングとは
プロンプトエンジニアリングとは、生成AIに期待通りの出力をさせるために、指示文(プロンプト)を設計・改良する技術のことです。
たとえば、「三角と円を描いてください」という指示を受けたら、あなたはどんな図を思い浮かべますか。三角形の隣に円を置く人もいれば、円の中に三角形を入れる人もいるでしょう。
生成AIも同じです。明確な指示をしないと、どんな結果を出せばいいのか迷ってしまいます。
大規模言語モデル(LLM)は、膨大な数の「人間が作った文書」で学習した結果、論理的整合性を持った文書を生成する能力を獲得しました。つまり、LLMに期待する仕事をさせるには論理的な指示が必要です。
プログラムを書くときと同じように、生成AIへの指示も明確に、具体的に書く必要があるわけです。
7つのプロンプトテクニック
Googleの最新研究に基づいた、実践的な7つの手法を見ていきましょう。
テクニック1:複数のタスクに分けて処理する
1つのプロンプトで複数のタスクを行わせようとしてうまくいかない場合は、タスクごとにプロンプトを分けてみましょう。
改善前
ポジティブなコメントとネガティブなコメントに分類して。
ポジティブなコメントからこの商品の短い宣伝文を作って。
改善後
タスク1: 以下のコメントをポジティブとネガティブに分類して。
タスク2: 以下のポジティブなコメントから、この商品の短い宣伝文を作って。
タスクを分けることで、各ステップが明確になり、より正確な結果が得られます。料理のレシピと同じで、工程を分けた方が失敗しにくいんです。
テクニック2:処理の順番通りに記述する
複数ステップからなるタスクでは、自然な推論の流れに沿った順序で指示します。
改善前
Z は X の 5 倍と Y を足したものです。
X は Y の 3 倍です。
Y は 100 です。
Z は何ですか。
改善後
Y は 100 です。
X は Y の 3 倍です。
Z は X の 5 倍と Y を足したものです。
Z は何ですか。
人間が問題を解くときの順序で書いてあげると、AIも理解しやすくなります。
テクニック3:DON'T形式ではなくDO形式で書く
否定型ではなく、肯定型の表現で指示することで期待する結果が得られます。
改善前
Googleはどんな会社ですか?Googleという単語を使わないでください。
改善後
Googleはどんな会社ですか?Googleという単語を避けてください。
「使わない」ではなく「避ける」という肯定的な動詞を使うことで、より適切な回答が得られます。
テクニック4:複数個の例を提示する
期待される入出力の例をプロンプト内で複数提示する手法を Many-shot prompting と呼びます。
改善前
この映画は退屈だったけど、最後のシーンは感動した。
→ ポジティブ、ネガティブ、中立のどれ?
改善後
例: この本は面白かったけど、最後の展開はありきたりだった。→ 中立
例: この曲は好きだけど、歌詞は意味が分からない。→ 中立
例: この映画は主演の演技が最高で最後まで見応えがあった。→ ポジティブ
この映画は退屈だったけど、最後のシーンは感動した。
例を増やすことで、AIは「ポジティブとネガティブ両方の要素を持つ際は中立とする」という暗黙的な判断基準を学習できます。
テクニック5:思考プロセスを例示する
複雑な思考プロセスが必要な問題では、例の中で思考プロセスをあわせて示します。この手法を Chain of Thought Prompting と呼びます。
改善前
100000000000+34321*10^2 は何ですか。
改善後
例: 1+1*10^2 は何ですか。
→ 10^2 は 100です。1+100 は 101 なので答えは 101 です。
例: 10000000+45*10^2 は何ですか。
→ 10^2 は 100 です。45*100 は 4500 なので、10000000+4500 は 10004500 です。
100000000000+34321*10^2 は何ですか。
思考プロセスを含めた例を示すことで、AIは同じ方法でステップバイステップで計算するようになります。
テクニック6:仕事の内容を本業とする人になりきらせる
専門家の役割を設定することで、より正確で丁寧な回答が得られる傾向があります。
改善前
100000000000+34321*10^2 は何ですか。
改善後
あなたはGoogleのStaff Engineerです。
100000000000+34321*10^2 は何ですか。
人間も「専門家として答えてください」と言われると、より慎重に回答しますよね。AIも同じような反応を示します。
実務での活用例
- コードレビュー:「あなたは経験豊富なシニアエンジニアです」
- データ分析:「あなたはデータサイエンティストです」
- コンテンツ制作:「あなたはプロのコピーライターです」
テクニック7:感情を乗せた一言を付け加える
「これは私のキャリアにとって大事です」「頑張れ、君ならできる!」などの言葉で性能が上がる場合があります。
改善前
100000000000+34321*10^2 は何ですか。
改善後
100000000000+34321*10^2 は何ですか。
君ならできる、頑張れ!
モチベーションを高める言葉を添えることで、より丁寧な計算プロセスを示してくれる傾向があります。
広告
構造化プロンプトのテンプレート
プロンプトに記述するべき項目は決まっているので、次のようなテンプレートを用意しておくと便利です。
あなたは-------です。以下のタスクに取り組んでください。
[タスク]
A. -------
B. -------
[参考情報]
----
[条件]
A. -------
B. -------
[出力形式]
日本語で出力してください。-------
[コンテキスト]
------
各要素の役割:
- 役割 :専門家のペルソナを設定(テクニック6)
- タスク :何をしてほしいのかを明確に記述
- 参考情報 :AIが知らない情報やコンテキストを提供
- 条件 :タスクを実行する際の制約や注意点
- 出力形式 :出力の言語、フォーマット、構造を指定
- コンテキスト :処理対象のデータや文書
プロンプト作成の実践ステップ
プロンプトを作成する際は、次のステップで進めるとうまくいきます。
ステップ1:シンプルに始める
商品画像からタグを生成してください。
まずは最小限の指示で試してみます。
ステップ2:出力結果を見て改善点を特定
- タグが抽象的すぎる → 具体的なものだけに絞る条件を追加
- 出力形式が不揃い → フォーマット指定を追加
- 精度が低い → 役割設定や例を追加
ステップ3:徐々に指示を追加
あなたはECサイトのコンテンツエディターです。
[タスク]
A. 画像内の商品を表すタグを生成してください。
[条件]
A. 飲料、食品、おもちゃなどの一般的なカテゴリを表すタグは避けてください。
A. 画像内に存在する具体的なもののみをタグとして使用してください。
[出力形式]
日本語で出力してください。カンマ区切りのリストで表示してください。
このように、「シンプルなプロトタイプで基本機能を実装した後に、テストしながら改善していく」というプログラム開発と同じ考え方でプロンプトを改善していきます。
まとめ
プロンプトエンジニアリングの7つの基本テクニックをおさらいします。
- 複数のタスクに分けて処理する - 1つのタスクに特化して指示
- 処理の順番通りに記述する - 自然な推論の順序で指示
- DON'T形式ではなくDO形式で書く - 肯定系の動詞を使う
- 複数個の例を提示する - Many-shot Prompting
- 思考プロセスを例示する - Chain of Thought Prompting
- 本業とする人になりきらせる - 専門家の役割を設定
- 感情を乗せた一言を付け加える - モチベーションを高める
プロンプトを書く際は定型フォーマットから始めて、出力結果を見ながら徐々に指示を追加していくのがコツです。
次回の【実践編】では、実際のビジネスシーンで使える具体例や、プロンプトでは対応できないときの対処法をご紹介します。