はじめに
昨今、生成AI、エージェントが社内でも本格活用されてきている。
その波に乗り遅れないよう(既に乗り遅れている感は大いにあるが)に少しずつAIの勉強を始めている。
本ページは筆者の備忘用として残しているが、他の読者に少しでも参考になれば幸いです。
プロンプトエンジニアリングとは
AWSの下記リンクでプロンプトエンジニアリングについて解説されているので一読するのがおすすめ。
簡単にようやくすると
プロンプト
生成AIに特定タスクを実行するように要求する自然言語のテキスト
プロンプトエンジニアリング
生成AIに有用、または質の高い(=望ましい)回答を確実に出力させるために最適なプロンプトを発見する過程のこと
プロンプトエンジニアリングのベストプラクティス
| 名称 | 内容 |
|---|---|
| 明確なプロンプト | 希望する応答をプロンプトに明確に定義する ex. 要約して欲しい場合は「要約して」と明記する等 |
| プロンプトに適切なコンテキストを設定 | 制約や条件など適切なコンテキストをプロンプトに設定する ex.◯◯の情報を最新のものからX個出力して |
| ターゲットとなる情報と望ましいアウトプットのバランス | プロンプトの簡単さと複雑さのバランスを取り、曖昧な回答や予期しない回答を防ぐ。 AIに馴染みのない複雑なトピックや固有ドメインの言葉を使うときには簡単な単語に置き換えることで想定外の回答を防ぐ。 |
| プロンプトを試して改良する | 反復して改良し、よりベターなプロンプトを継続的に作成し続ける |
標準的なプロンプト生成手法
ゼロショットプロンプティング
事前に例などを使用しないプロンプト
フューショットプロンプティング
例を示すことで生成されるテキストの精度を上げる
ロールプロンプティング
特定の役割やキャラクターを与えて応答を生成させること。
特定の専門知識や応答スタイルを調整する場合に有用。
あなたは優秀なエンジニアです。
〜〜〜以下、オリジナルテキストを入力〜〜〜
対象を指定する
中学生にもわかるように説明してください、といったように具体的な対象者を指定する。
コンテキストを要求する
LLMがより質の高い回答を出すためには、どのような要件が必要なのかLLM自身に聞き、その要件に従って回答することで、LLMからの回答精度を上げる。
あなたはデータベースの知見を持つエンジニアです。
OracleとMongoDBのうちどちらが優れているか教えてください。
より質の高い回答を出すためにどのようなコンテキストが追加で必要か示してください。
〜〜〜以下、オリジナルテキストを入力〜〜〜
テキストスタイルを分解する
オリジナルのテキストを読み込ませ、そのトーン(全体的な雰囲気)、長さ、語彙、構造などを分析させる。オリジナルと同じ特徴で新たなテキストを生成させることで、コミュニケーションの一貫性を担保できる。
分解は次の2ステップで実行する。
1. オリジナルテキストを読み込ませ特徴を分析させる
次のテキストを分析し、今後の文書が同じスタイル、一貫性、出力形式を模倣できるようにする
ための主要な特徴を指定してください。
〜〜〜以下、オリジナルテキストを入力〜〜〜
2.抽出した特徴を利用して新しいコンテンツ生成
以前分析したテキストと同じ口調、スタイル、構造を用いて次の質問に回答してください。
〜〜〜以下、オリジナルテキストを入力〜〜〜
LLMに考える時間を提供する
結論を出す前に、自分で時間を使って考えて解決策を導き出すよう明示的に指示することで回答の質を上げることができる
まずはあなた自身で考えるプロセスを整理し、自身の考えをまとめてください。
〜〜〜以下、オリジナルテキストを入力〜〜〜
メタプロンプティング
LLMに他のテキストプロンプトを生成させるためのテキストプロンプトを作成する方法。
言い換えると、特定の情報を得るためのプロンプトをLLM自身に作成させることをいう。
メタプロンプティングを行うことで複雑で多方面なプロンプトの生成も容易にできるようになる。
あなたはGPTプロンプトエンジニアとして与えらたタスクに対して効果的なテキストプロンプトを作成する責任を持っています。
[タスク]
〜〜〜以下、オリジナルテキストを入力〜〜〜
その他参考