Re Reference AI

技術

プロンプトとは

Prompt

LLMに入力する指示・質問・文脈などのテキスト

LLM入力設計

ひとことで言うと

AIに何をしてほしいか伝える、入力する文章のこと。

概要

プロンプトとは、LLMに対して入力するテキストそのものを指す。 質問・指示・例示・文脈情報などから構成され、モデルはこのプロンプトに続くテキストを予測・生成する形で応答する。 LLMは事前学習によって獲得した知識やパターンをプロンプトに応じて引き出す仕組みであるため、同じモデルでもプロンプトの書き方次第で出力の質・形式・精度が変わる。 チャット形式のインターフェースでは、システムプロンプト・ユーザープロンプト・過去の応答履歴を組み合わせて1つの入力として扱われることが多い。 少ない例も与えない「zero-shotプロンプト」、いくつかの例を示す「few-shotプロンプト」など、与える情報量によって呼び方が変わることもある。

背景

LLMはタスクごとに再学習しなくても、入力の与え方(プロンプト)を変えるだけで様々なタスクをこなせる汎用性を持つ。 この性質により、モデルの重みを変更せずに振る舞いを制御する手段としてプロンプトが重要な役割を担うようになった。

歴史

「プロンプト」自体はコマンドラインが入力を促す記号を指す語として以前から使われていたが、GPT-2・GPT-3(2019-2020年)の登場以降、few-shot学習の文脈でLLMへの入力テキスト全般を指す用語として広く定着した。

アーキテクチャ

プロンプトは最終的にトークン列としてモデルへ入力される。 チャット形式のモデルでは、役割(システム・ユーザー・アシスタント等)ごとにメッセージを分けて構造化し、モデル固有のテンプレートに従って1つのトークン列に変換してから入力する。

ワークフロー

タスクに応じてプロンプトを作成 → システムプロンプトや会話履歴と結合 → トークン化してLLMへ入力 → モデルが後続テキストを生成 → 出力を確認し、期待と異なれば指示や例示を調整して再実行。

コード例

プロンプトを与えて応答を得る基本例

from openai import OpenAI

client = OpenAI()
prompt = "次の文章を3行で要約してください。\n\n(本文をここに挿入)"
response = client.chat.completions.create(
    model="gpt-4o-mini",
    messages=[{"role": "user", "content": prompt}],
)
print(response.choices[0].message.content)

利点

  • モデルの重みを変更せずに、入力の工夫だけで出力を制御できる
  • 少数の例示(few-shot)を含めることで、追加学習なしにタスク性能を高められる場合がある

欠点

  • プロンプトの書き方次第で出力品質が変動し、再現性を担保しにくい場合がある
  • 長いプロンプトはコンテキストウィンドウを消費し、コスト・レイテンシに影響する

比較

  • プロンプトエンジニアリングプロンプトエンジニアリングは、望む出力を得るためにプロンプトを設計・改善する手法や実践を指す
  • システムプロンプトシステムプロンプトは、プロンプト全体のうちモデルの振る舞いを規定する特別な部分
  • コンテキストウィンドウプロンプトの長さはコンテキストウィンドウの制約を受ける
  • Few-shotfew-shotプロンプトは、いくつかの入出力例をプロンプトに含めてタスクを示す与え方

関連用語

プロンプトエンジニアリングシステムプロンプトLLMコンテキストウィンドウFew-shotIn-Context Learning

よくある質問

プロンプトとクエリは同じ?

検索の文脈での「クエリ」は検索キーワードを指すことが多いのに対し、「プロンプト」はLLMへの入力全体(指示・文脈・例示等を含む)を指す、より広い概念。

参考文献

関連Zenn記事