プロンプト
シンプルな質問でも答えは得られるが、「質の良い答え」を得るために
人も「いい質問」を工夫するといいでしょう。
良い質問とはモデルに答えに必要な情報を渡して、より良い結果を得るよう
個人的には必須とオプションがあると思います。
良い質問と答えに必要な情報
項目 | 説明 | 必要 or 不要 | 備考(理由) |
---|---|---|---|
指示 | 質問の意図 | 必須 | 会話が山に行くので |
情報 | あった方がいい | あった方がいい | 効率がいい |
文脈 | あった方がいい | あった方がいい | 効率がいい |
詳細 | +@のdetail | 不要かと | 結局、話し合いながら詰めていく |
出力指示子 | 出力のタイプや形式のこと | 必要な場合 | csv,yaml,JSONなど |
例えば次の何の「さくら」というシンプルすぎる質問を投げると
何かしら結果は得られるが、意図したものではない可能性が高い
例)
意図
花見でみた桜の種類について調べたい
プロンプト
さくら
出力
桜が満開の季節、公園には人々が花見をしながら・・・
⇒桜を素材に短い文を書いてもらえました笑
ここで足りないのは指示と情報かと思いいます。
例えば
プロンプト
私が花見でみた桜は何でしょうか。白い花と葉っぱがありました。
出力
花見で花と葉っぱが同時に見えた場合、おそらく見た桜の品種は「ヤマザクラ(山桜)」である可能性が高いです。・・・ 理由とヤマザクラへの説明が続く
どうでしょう? どのような桜なのか聞く(指示)また、葉っぱがあるという(必要な情報)を渡すことで意図通りだと思う可能性が高い回答が得られました。このように、タスクを実行するために最適なプロンプトを設計するアプローチをプロンプトエンジニアリングと呼びます。
よく言われる zero-shot? few-shot?とは
zero-shot prompting
最初から質問をするパタン。これは文字通り一発芸みたいなものです。
質問するから答えて、LLMモデルは色は引き出し中一つを出します。
(直前の質問履歴と関連する可能性が高い)
Q: <質問>?
A:
few-shot prompting
いくつかの質問と答えをベースに答えるパタン
Q: <質問>?
A: <答え>
Q: <質問>?
A: <答え>
Q: <質問>?
A: <答え>
プロンプト:
リンゴ // 赤
バナナ // 黄色
ブルーベリー // 青
この場合、壁の色は
この壁はブルーベリーのようだ //
出力:
文脈から青色とみえますね。
few-shot promptingにより、文脈に沿った学習が可能になります。
言語モデルがタスクを学習するために、わずかなサンプルを提供することができます。
まとめ
いかがでしょうか。難しく思うかもしれませんが、
日常で行われる人とのコミュニケーションと同じだと思いませんか。
私はよく 「zero-shot prompting」 で妻に質問をしてしまうので 「は?」 って顔で見られたりします。それに比べたら、LLMはなんて優しいんだ💛
要は
3つのルール
- 質問の意図を明確する
- 必要な情報を渡す
- (必要であれば例え話も混ぜる)
これでよき答えを得るようにしましょう。
参考
<プロンプトの基礎>
https://www.promptingguide.ai/jp/introduction/basics