プロンプトエンジニアリング

リンク

基本

  • QA形式だとモデルの回答は安定しやすい
  • ChatGPTなどでは、特にQA形式でなくても問題ない
Q: {ここに質問を書く}
A:
  • QA形式で連想される答えを誘導する
  • 以下のように質問に対する答えとして、A,Bを書いておくと、そこから連想されるCの答えを出してくれる
Q: {ここに質問を書く}
A: {質問の答えの1つとなることを書く}
B: {質問の答えの1つとなることを書く}
C: 
  • 指示と入力のフォーマットで指定する
  • Markdown形式などで、指示や入力を記載すると、読み取りやすくなる
  • ChatGPTなどは、区切り記号は何でも良いが、言語モデルによる
指示: {ここに指示}
入力: {ここに処理対象のテキスト}
出力:
### 指示
{ここに指示}
### 入力
{ここに処理対象のテキスト}
### 出力

  • 出力フォーマット
  • 出力として指定すれば、だいたいその通りにやってくれる
    • ChatGPTなどにどんな形式で出力出来るかも聞ける
    • 箇条書きやリスト形式
    • 表形式
    • CSV形式
    • JSON形式
### 指示
{ここに指示}
### 入力
{ここに処理対象のテキスト}
### 出力
マークダウン形式で出力してください

コンポーネント(項目や要素)

  • 指示、入力、出力、背景情報などのこと
    • 指示や質問
      • 指示
      • 質問
      • 目的
    • 入出力の指示
      • 入力
      • 出力例
      • 出力形式
      • テンプレート
      • 数値
    • 条件や制約
      • 制約
      • 条件
      • 前提
      • 例外
    • ヒントや補足情報
      • 背景情報
      • 参考資料
      • ヒント
      • キーワード
    • 手順やシナリオ
      • シナリオ
      • 手順
      • テストケース
    • 選択肢やオプション
      • 選択肢
      • オプション
      • チェックリスト

テクニック

基本

  • 批判的な視点でなどをいれると、そのとおりにやってくれる
    • 数値やデータを強調して
    • 批判的な視点で
    • 箇条書きで
    • 時系列に沿って
    • 比較しながら
    • 長所短所を個別に
    • 数値化して
    • 起承転結で
    • ロールプレイング

Zero-shot/One-shot/Few-shotプロンプト

  • 期待する動作になるように、出力のヒントなどをプロンプトで提示しておく

Zero-shot

  • ヒントなし
  • 例を一切与えずに、タスクだけを伝えて実行させる
次の文から日付をすべて抽出してください。

文章: イベントは2023年5月3日に開催され、予備日は2023年5月10日です。
答え:

コード生成例

Pythonで、1から100までの整数のうち、3の倍数のときは "Fizz"、5の倍数のときは
"Buzz"、両方の倍数のときは "FizzBuzz" と出力し、それ以外は数字を出力するコードを
書いてください。

One-shot

  • ヒントが1つ
  • 1つの例を示して、同様の形式で出力させる。
以下のように文章から日付を抽出してください。

例:
文章: 会議は2022年12月15日に行われました。
抽出された日付: 2022年12月15日

文章: イベントは2023年5月3日に開催され、予備日は2023年5月10日です。
抽出された日付:

コード生成例

以下のようにPythonコードを生成してください。

## 例:
### 要件
リストの中の数値をすべて2倍にして新しいリストを返す関数を作成してください。

### コード
def double_list(numbers):
    return [n * 2 for n in numbers]

### 要件
1から100までの整数のうち、3の倍数のときは "Fizz"、5の倍数のときは "Buzz"、
両方の倍数のときは "FizzBuzz" と出力し、それ以外は数字を出力するコードを
作成してください。

### コード

Few-shot

  • ヒントが複数
  • 2〜数個の例を提示し、パターンを学習させて出力させる
以下のように文章から日付をすべて抽出してください。

文章: 会議は2022年12月15日に行われました。
抽出された日付: 2022年12月15日

文章: 次の打ち合わせは2024年1月5日か、1月12日になります。
抽出された日付: 2024年1月5日, 2024年1月12日

文章: イベントは2023年5月3日に開催され、予備日は2023年5月10日です。
抽出された日付:

コード生成例

以下のように、Pythonで要件に応じたコードを生成してください。

## 要件
リストから偶数のみを抽出する関数を作成してください。

## コード
def extract_even(numbers):
    return [n for n in numbers if n % 2 == 0]

## 要件
文字列を受け取り、各単語の先頭を大文字にする関数を作成してください。

## コード
def capitalize_words(sentence):
    return ' '.join(word.capitalize() for word in sentence.split())

## 要件
1から100までの整数のうち、3の倍数のときは "Fizz"、5の倍数のときは "Buzz"、
両方の倍数のときは "FizzBuzz" と出力し、それ以外は数字を出力するコードを
作成してください。

## コード

思考の連鎖 - Chain-of-Thought (CoT)

思考の木 - Tree-of-Thought (ToT)

## 指示
次の3人の専門家が協力して質問に答えます。

- フロントエンドエンジニア
- UX/UIデザイナー
- アーキテクト

## 手順
1. それぞれが自分の思考のプロセスを詳しく説明します
2. 他人の説明を理解し、間違いがあれば指摘します
3. 各専門家は、間違いを受け止めて、自分の思考を修正して発展させます
4. 3人の意見がまとまるまで、上記の手順を繰り返してください

## 質問

自己整合性 - Self-Consistency

MAGIシステム - MAGI-ToT

仮想スクリプトエンジン / PAL

モックプロンプト - Mock Prompt

パラメータ

temperature

  • 概要
    • 温度・気温を意味する英語だが、LLMだと多様性。・創造性・ランダム性などを指定する意味となる
    • 単語に対する確率分布を調整している
  • 値の意味
    • temperature = 0.0
      • 決定的(deterministic)、最も確率の高い単語が常に選ばれる。
    • temperature = 0.7
      • ほどよくランダム、自然で多様な出力になる。
    • temperature = 1.0〜2.0
      • 非常にランダム。創造性が高まるが、文の意味が不安定になりやすい。
  • ChatGPTにおける利用方法
    • 設定自体はできないが、プロンプトで含めると変更してくれる
      • temperatureを0.0に設定してください。
      • temperatureを2.0に設定してください。

top_p

  • 概要
    • 各サンプリングを指定する
    • 各サンプリング選択肢を制御する
      • 出力されるトークンの確率分布から、トークンを選択する再に累進確率の閾値を指定する
  • 値の意味
    • top_p = 1.0
      • 全ての候補から選択する
      • ランダム度が高い
    • top_p = 0.75
      • 上位の75%の確率に収まる候補から選択する
    • top_p = 0.1
      • 上位10%の確率に収まる候補から選択する
      • 非常に限定的。かなり保守的な出力になる
作成日: 2025-06-20 20:03
更新日: 2025-07-08 22:10