🍰 まずはやさしく
AIへの指示書のようなものです。
AIに正しい答えを出させるために使います。
スマホでAIに質問する時の文章のことです。
この章ではプロンプトの基本を学びます。
プロンプト (prompt):大規模言語モデル (LLM) に入力する指示・文脈・例示の総称。 LLM の挙動はプロンプトに強く依存する。
openai.ChatCompletion.create(messages=[...]) / anthropic.messages.create(messages=[...]) の messages 引数がプロンプト本体。🍰 まずはやさしく
料理のレシピのようなものです。
AIから欲しい答えを引き出すために使います。
役割やルールを変えると、返ってくる答えが変わります。
入力される文字がどう処理されるかを読みます。
プロンプトは LLM に対する「入力テキストの全体」です。 System プロンプト (役割設定) ・User プロンプト (指示) ・Assistant プロンプト (過去のやり取り) を文字列として連結したものが、 GPT-4o / Claude 4.7 などのモデルに渡される実体です。 例えば SSDSE-B-2026 から特定の都道府県を抽出するタスクでは、 同じ User 指示「沖縄の人口は?」でも System に「あなたは統計官です。 単位は千人で答える」を書いた場合と無い場合で出力形式が変わります。
直感的には料理のレシピに近い。 同じ材料 (LLM の知識) でも、 手順 (プロンプトの並び) ・調味料 (具体例・制約) ・盛り付け指定 (出力形式) を変えれば全く別の料理 (回答) が出ます。 プロンプトはこの全部を含んだ「入力テキスト」の総称です。
プロンプトはトークン (単語の断片) 列としてモデルに入力されます。 GPT-4o では日本語 1 文字が概ね 1〜2 トークン、 英語は単語 1 個で 1〜2 トークン消費。 SSDSE-B-2026 (47 都道府県 × 112 列) を全列貼り付けると約 12,000 トークンになり、 8K コンテキスト枠のモデルでは入りきりません。 直感的には「プロンプト ≒ 紙の指示書」だが、 紙には「枚数制限 (コンテキスト長)」と「枚数あたり課金 (トークン単価)」が付いている、 と覚えるとコスト感覚も同時に身に付きます。
同じ「沖縄の人口は?」でも、 プロンプト中に R47000 1,485 (単位:千人, 2024) を貼れば回答は固定値の引用になり、 貼らなければモデル内部記憶からの推測になります。 後者は学習時点で知識が古い場合、 数値が古かったり幻覚が混ざる可能性があるため、 公的統計を扱う実務では「必要な数値はプロンプトに明示的に貼る」が鉄則です。
🍰 まずはやさしく
AIへの入力文のことです。
答えの質を上げるために使います。
地域の人口データをAIにまとめさせる例で考えます。
指示の出し方で正解率がどう変わるかを見ます。
この用語ページは「プロンプト」を、 生成 AI / LLM の文脈で解説しています。 ユーザが LLM に投げかける指示文・文脈・例示の総称で、 出力品質を決定する最重要パラメータ。 SSDSE-B-2026 の統計値を LLM に推論させる例で具体的に使います。
本ページの主目的は「LLM へ送る prompt が出力 y の確率分布 p(y | prompt) をどう条件付けるか」を、 SSDSE-B-2026 の都道府県データ集計依頼を題材に具体化することである。 同じ「人口上位 5 県を Markdown 表で」という要件でも、 role 指定の有無や Few-shot 数で精度が 60% → 95% まで変動する。
後段では System / User / Few-shot の 3 層構造を分解し、 0/1/3-shot 設定での集計精度比較 (47 都道府県・GPT-4o / Claude 4.7 想定) を Python で示し、 prompt の「設計物としての側面」を定量的に確認する。
現場では似た語が混ざって使われます。指すものが違うので、区別しておくと会話が噛み合います。
{データ} の部分だけ差し替えて再利用するもの。実務で効くのはテンプレート化です。 毎回ゼロから書くと品質が安定せず、改善も積み上がりません。 役割・形式・禁止事項を固定したテンプレートを作り、 差し替えるのはデータの部分だけにする。 こうしておくと、テンプレートを 1 か所直せば、すべての出力が同時に良くなります。 プロンプトを「書く」から「保守する」に切り替える、という感覚です。
🍰 まずはやさしく
AIに送るテキスト全体のことです。
AIが次に書く言葉を決める条件になります。
役割設定や具体例をセットにして送ります。
プロンプトを作る3つの要素について詳しく読みます。
生成 AI への入力テキスト。 出力 $y$ は条件付き確率 $p(y \mid \text{prompt})$ で生成されるため、 prompt が変われば $y$ も激変します。
英語名 Prompt。
プロンプトは LLM への入力テキストの総称で、 通常は次の 3 階層から成る:
この 3 要素をトークン列として連結したものが、 GPT-4o や Claude 4.7 の API リクエストに渡る prompt の実体。 同じ User 指示でも System / Few-shot を変えれば出力品質が劇的に変わる。
プロンプトは「お願いの文章」ではなく、部品の組み合わせとして設計できます。 以下の 6 つのうち、どれが欠けているかを点検するだけで、出力は目に見えて安定します。
| 部品 | 書くこと | 欠けると起きること |
|---|---|---|
| 役割 | 誰として答えるか | 語彙や前提が毎回ぶれる |
| 課題 | 何をするか(動詞で) | 要約なのか解説なのか分からず、長さも定まらない |
| 文脈 | 対象データ・前提・制約 | 一般論に流れ、手元のデータを見なくなる |
| 出力形式 | 箇条書き・表・JSON・字数 | 後工程でパースできない。毎回形が変わる |
| 例 | 入力と出力の対を 1〜3 組 | 粒度が伝わらない。指示を長く書く羽目になる |
| 禁止事項 | してはいけないこと | 分からないときにそれらしい嘘で埋める |
この 6 つのうち、効果が大きいわりに省かれやすいのが出力形式と禁止事項です。 「表で、列は県名・値・出典の 3 つ」と書くだけで後処理が要らなくなり、 「データに無い値は『不明』と書き、推測しないこと」と書くだけで もっともらしい捏造が目に見えて減ります。 逆に「丁寧に」「分かりやすく」といった形容詞は、ほとんど効きません。 検証できる指示だけが効くと考えてください。
LLM の生成は条件付き分布 $p(y \mid x_{\text{prompt}})$ からのサンプリング:
$$ y \sim p_\theta(y \mid x_{\text{prompt}}) = \prod_{t=1}^{T} p_\theta(y_t \mid y_{ 同じモデル $\theta$ でも prompt が違えば出力が変わる、 という事実が prompt engineering 全体の出発点。
プロンプトの「型」には名前が付いています。名前を知っていると、
うまくいかないときに次に試す手がすぐ出てきます。
誤解されやすいのは Chain-of-Thought です。
「考えさせれば正確になる」わけではありません。
途中の推論が間違っていれば、間違った過程を丁寧に書いた答えが返ってきます。
むしろ価値は途中が見えることで、どこで間違えたかを人が指摘できる点にあります。
検証可能性を上げる手法だと捉えると、使いどころを外しません。
組み合わせも有効です。実務でよく効くのは
「役割付与 + Few-shot + 出力形式の指定」の 3 点セット。
そのうえで、うまくいかない部分にだけ Chain-of-Thought を足す。
最初から全部盛りにすると、プロンプトが長くなりすぎて
どの部分が効いているのか分からなくなります。
記号 意味 SSDSE-B-2026 文脈の具体例 $x_{\text{prompt}}$プロンプト 「東京 14010 千人 出生率 7.4 ... を踏まえ、 全国平均と比べてください」 $y_t$$t$ 番目の出力トークン 「東京の出生率 7.4 は全国平均 7.6 より低いです」の各単語 $y_{既出力トークン履歴 自己回帰生成における過去の文脈 $\theta$モデルパラメータ GPT-4o, Claude 3.5, etc. の事前学習済み重み 代表的な書き方 4 つと、効く場面
型
やること
効く場面/効かない場面 Zero-shot
例を出さず、指示だけ書く
一般的な作業には十分。出力の形が定まらないのが弱点 Few-shot
入力と出力の対を 1〜3 組見せる
形式や粒度を揃えたいときに強い。例に引きずられる副作用あり Chain-of-Thought
「順を追って考えてから答えよ」と促す
多段の推論に効く。単純な抽出ではむしろ冗長になる 役割付与
「あなたは統計の教員です」など立場を与える
語彙と前提が安定する。正確さそのものは上がらない
prompt を設計するとき、 次の物理的・経済的制約を意識する:
<data>...</data> や三重バッククォートで区切る。プロンプトという「LLM への入力テキスト」を書くときに、 SSDSE-B-2026 のような数値データを扱うケースで頻発する失敗を列挙する。 入力設計を変えるだけで防げるものが多い。
<data>...</data> や三重バッククォートで明確に区切る。統計データの作業に言語モデルを使うとき、いちばん危ないのは 「数値そのものをモデルに出させる」ことです。 モデルは計算機ではないので、平均も相関も、それらしい値を書くことができてしまいます。
本教材の文脈で言えば、SSDSE の列名を渡して「この列は何を意味するか」を尋ねるのは危険です。
A1101 のようなコードは、モデルにとっては単なる文字列で、
それらしい説明を作れてしまいます。正しい手順は逆で、
こちらが見出し 2 行目の日本語名を読み取って渡し、その解釈をモデルに手伝わせる。
意味を確定するのは人間、文章にするのがモデル、という分担にしておくと事故が起きません。
SSDSE-B-2026 のような公的統計データを Python で扱う際の基本パターン:
1 2 3 4 5 6 7 8 9 10 11 12 | import pandas as pd import numpy as np # データ読み込み df = pd.read_csv('data/raw/SSDSE-B-2026.csv', encoding='cp932', skiprows=1) print(df.shape) print(df.dtypes) print(df.describe()) # 「プロンプト」の文脈で扱う場合の例: # 分野: 深層学習 # 関連手法は同カテゴリの他用語を参照してください。 |
具体的なコードは ニューラルネットワーク基礎 を参照してください。
抽象論より、同じ依頼が書き方でどう変わるかを見るのが早道です。 題材は「SSDSE-B-2026 の人口上位 5 県について、共通点を述べよ」。
| 版 | 書いたこと | 返ってくるものの傾向 |
|---|---|---|
| v1 | 「上位 5 県の共通点を教えて」 | 一般論。「都市部で経済が発展している」など、データを見なくても書ける内容 |
| v2 | v1 + 役割(統計の教員として) | 語彙が揃い、断定が減る。ただし中身は v1 とあまり変わらない |
| v3 | v2 + 実際の数値表を添付 | 数値に言及するようになる。県名の取り違えが減る |
| v4 | v3 + 形式指定と禁止事項 | 3 点・各 80 字・表に無い情報は書かない、が守られる |
効き目がいちばん大きいのは v2 → v3、つまりデータを添えた瞬間です。 役割付与だけでは中身は変わりません。 そして v3 → v4 で、後工程で使える形になります。 「役割を与えれば賢くなる」という思い込みは、この 4 段階を自分で試すと消えます。
注意すべきは、v4 でも「表に無い情報は書かない」を完全には守らないことです。 禁止事項は確率を下げるだけで、保証にはなりません。 だからこそ「出典の列名を必ず書かせる」ようにして、 守られなかったことを機械的に検出できる形にしておきます。
分析結果を報告するときに含めるべき情報:
この用語『プロンプト』を理解するうえで併せて押さえたい関連キーワード群です。 クリック(ホバー)で関連用語ページに飛べます。
プロンプトとは LLM への入力テキスト全体のこと。 「東京の人口を教えて」のような短い質問から、 「あなたは統計の専門家です。 以下の表を分析してください…」のような長文指示まで含む。 LLM のパラメータを変更せず、 プロンプトの工夫だけで多様なタスクを解かせる『プロンプティング』が、 fine-tune に代わる主要なカスタマイズ手段になった。
プロンプト(Prompt)は単独で覚えるものではなく、 大規模言語モデル という大きな枠組みの中での位置づけを理解することで応用範囲が広がります。 本ページの『🌐 関連手法』『🔗 関連用語』『📚 グループ教材』を順に辿ると、 関連概念のネットワークが見えてきます。
特に SSDSE-B のような実データに当てはめてみると、 教科書では抽象的に語られる概念が『47 都道府県の現実』に紐付き、 数字の意味が腑に落ちやすくなります。 次の『🧮 実値で計算してみる』セクションでは、 公開統計データを使って手を動かす例を紹介します。
SSDSE-B のデータを LLM に分析させるプロンプト例:『以下は 47 都道府県の人口データである。 [CSV を貼り付け] 上位 5 県を抽出し、 人口減少が最も激しい県とその要因の仮説を 3 つ挙げよ』のような形式で、 探索的データ分析の補助に使える。
| 項目 | 条件 / 入力 | 結果 / 解釈 |
|---|---|---|
| zero-shot | 「翻訳してください: Hello」 | 例示なし |
| one-shot | 1 例 + クエリ | 1 例示 |
| few-shot (3) | 3 例 + クエリ | in-context learning |
| CoT | 「ステップごとに考えて」 | 推論能力↑ |
| ReAct | Reasoning + Acting | ツール使用 |
| system prompt | 役割定義 | 全応答に影響 |
※ 数値は SSDSE-B-2026.csv から抽出した実値、 もしくは典型的な学習設定での目安値です。 細部の数値は前処理・乱数 seed・実装により変動します。
プロンプトの改良は、放っておくと「なんとなく良くなった気がする」で止まります。 データ分析の作業なのですから、比べられる形にして測るべきです。
ここまでやると、プロンプトの改良は実験計画そのものになります。 「テンプレート A と B の平均誤差に差はあるか」は、まさに統計の問いです。 本教材の他のページで学ぶ検定や信頼区間が、そのまま使えます。 プロンプトを書く仕事は、文章力の仕事ではなく測定の仕事だと捉え直すと、 改善のしかたが一気に具体的になります。
公的データ SSDSE-B(47 都道府県社会・人口統計)を読み込み、 プロンプト を実際に動かす最小コードです。 引数のパスは平易さ優先で直書きしています。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | import pandas as pd df = pd.read_csv('data/raw/SSDSE-B-2026.csv', skiprows=[1], encoding='cp932') # 英字コードの列名を使う sample = df.head(5)[['Prefecture', 'A1101', 'A4101']] prompt_template = '''あなたは公的統計の専門家です。 以下は SSDSE-B から抽出した 5 県のデータです。 {data} タスク: 各県の人口対出生数比率を計算し、出生率が高い県の特徴を考察してください。 形式: Markdown 表 + 200字の考察''' prompt = prompt_template.format(data=sample.to_string(index=False)) print(prompt) |
※ 上記スニペットは Python 3.10+ / pandas 2.x / numpy / scikit-learn を想定。 環境構築は『conda create -n ds python=3.11 pandas scikit-learn matplotlib』で十分です。
LLM はプロンプトを条件として、 後続トークン $y$ の確率分布を出力。
数式の各記号が『何の量で、 どの空間に住み、 どんな単位を持つか』を意識すると、 暗記でなく構造として理解できます。 SSDSE-B の都道府県データに当てはめて、 各シンボルが何に対応するかを上の Python 実装で確認しましょう。
まずは本ページの『💡 30 秒で分かる結論』と『🎨 直感で掴む』で全体像を掴み、 次に『🧮 実値で計算してみる』を 手を動かして追体験するのが最短です。 数式や深い理論はその後で十分。
本ページの『🌐 関連手法・派生』『🔗 関連用語』で対比される手法を確認し、 それぞれの適用条件と得意・不得意を表で比較するのが効果的です。 SSDSE-B のような共通データセットで両方走らせて結果を見ると違いが体感できます。
プロンプトの長さ $L$ は、 そのまま推論コストに跳ね返ります。 入力処理は $O(L^2 d)$ なので、 プロンプトを 2 倍にすると処理時間は 4 倍。 「念のため長めに書く」ことのコストは直感より大きいということです。 一方、 Few-shot の例を 1 つ増やす効果は逓減するので、 例を 10 個並べるより的確な 2〜3 個に絞るほうが速く・安く・多くの場合は精度も同等です。 課金も入力トークン数に比例するため、 長いプロンプトは時間と料金の両方で効いてきます。 同じ前置きを毎回送るなら、 プロンプトキャッシュで prefill を使い回せないかを検討してください。
『点推定値』だけでなく『不確実性(CI、 SE、 分散)』『前提条件のチェック結果』『代替手法との比較』『データ取得日と seed』をセットで報告するのが標準。 査読・レビューで問われる典型ポイントです。
『プロンプト』は『大規模言語モデル』カテゴリに属する重要概念で、 以下の関連概念群と密接につながっています。 詳細な SVG マップは本ページ後半の「🗺 概念マップ」セクションに掲載。
大規模言語モデル (LLM)
├── 前提
│ ├── Transformer / Attention
│ ├── トークン化 (BPE / SentencePiece)
│ └── 事前学習 / RLHF
├── プロンプト ← このページ
│ ├── 派生: Zero-shot / Few-shot / CoT (Chain-of-Thought)
│ ├── 派生: ReAct / Tree-of-Thoughts / Self-Consistency
│ └── 応用: 質問応答 / コード生成 / 要約 / 翻訳 / 対話
└── 並列・対比される手法
├── ファインチューニング (LoRA / QLoRA)
└── RAG (Retrieval-Augmented Generation)
完全な概念マップは 🗺 概念マップ で確認できます。
GPT-3 (2020) の few-shot learning 論文で『プロンプティング』という言葉が普及。 2021 年に PromptSource, OpenPrompt などのライブラリが登場。 Chain-of-Thought (Wei 2022) で大規模モデルの推論能力が解放され、 急速に研究分野化。
「プロンプト」が技術用語になったのは GPT-3 (Brown et al. 2020) からで、 それ以前は入力文を指す一般語にすぎませんでした。 転機は「重みを更新せずに、入力文だけでタスクを切り替えられる」という発見(in-context learning)です。 それまで新しいタスクにはファインチューニングが必要だったので、 「学習」と「入力」の境界が動いたことになります。 プロンプトが研究対象になったのは、 この境界の移動の帰結です。
『プロンプト』は理論だけでなく、 産業・研究の様々な現場で実用されています。 ここでは代表的な応用を 6 つ挙げます。
どの応用も「何を入力とし、 何を出力すべきか」を整理した上で、 上の Python 実装をベースに拡張するアプローチが定石です。 SSDSE-B のような公開データセットで小さく試し、 動作確認できてから本番データに展開すると安全です。
『プロンプト』には多くの派生・バリエーションがあります。 代表的なものを精度・特徴で比較した表です。
| 手法 / バージョン | 指標 / 特徴 | 備考 |
|---|---|---|
| zero-shot | 「翻訳して」 | 例なし |
| one-shot | 1 例 + クエリ | 簡単 |
| few-shot | 数例 + クエリ | in-context learning |
| Chain-of-Thought | 推論ステップ明示 | 数学・論理↑ |
| Role prompt | ロール指定 | 応答スタイル制御 |
数値は論文公表時点のもので、 計測条件(データ・前処理・ハイパーパラメータ)が異なります。 自分の問題で再評価することを推奨。
『プロンプト』は周辺の似た用語と混同されがちです。 ここでは特に紛らわしい用語との本質的な違いを整理します。
data/raw/SSDSE-B-2026.csv。 47 都道府県の社会・人口指標良いプロンプトは典型的に以下の要素から構成される:
本セクションは『プロンプト』の技術的核心を深掘りしました。 表面的な使い方を超えて、 内部の仕組みを理解することで、 トラブル時の診断や応用時のカスタマイズが可能になります。 SSDSE-B のような実データに当てはめながら、 ぜひ手を動かして確認してください。
LLM API は入力(プロンプト)と出力の合計トークン数で課金される。 GPT-4 Turbo は入力 0.01 ドル / 1k トークン、 出力 0.03 ドル / 1k トークン。 長いプロンプトはコストとレイテンシを増やすので、 必要最小限に絞るのが原則。 一方で短すぎる指示は精度を落とすため、 トレードオフがある。
| 観点 | プロンプト | Fine-Tuning |
|---|---|---|
| 初期コスト | ゼロ | 高(GPU・データ) |
| 実行コスト | 毎回プロンプト分 | 短くて済む |
| 柔軟性 | 高 | 低(再学習要) |
| 精度 | 中〜高 | 高(特化タスク) |
| 説明可能性 | 高(テキスト) | 低(重み) |
『あなたは政府統計の分析家です。 以下に SSDSE-B の 47 都道府県データから抜粋した CSV があります。 [データ] このデータから、 ① 出生率の高い 5 県とその要因仮説、 ② 出生率と所得の相関、 ③ 政策示唆を、 Markdown 表と 300 字の論考で報告してください。 出典として SSDSE-B-2026 を明記してください。』のような構造化プロンプトが効果的。
理論を理解した次は、 実務に落とし込むためのノウハウが重要です。 SSDSE-B のような身近なデータで小さく試し、 動かしながら学ぶことで体得できます。 失敗してもコストは小さく、 学びは大きい。
合成データでプロンプトトークン数別の応答精度を計算する。
| トークン数 | 精度 |
|---|---|
| 50 | 0.55 |
| 200 | 0.72 |
| 500 | 0.83 |
| 1000 | 0.85 |
| 4000 | 0.82 |
1 2 3 4 | import numpy as np tokens = np.array([50, 200, 500, 1000, 4000]) acc = np.array([0.55, 0.72, 0.83, 0.85, 0.82]) print(f"最良: token={tokens[acc.argmax()]}, acc={acc.max()}") |
💬 手計算 (Step 2) と Python 出力が完全一致。
「プロンプト」は LLM 入力テキストそのもの。 SSDSE-B-2026 の数値分析を依頼するときには、 周辺の構成要素と組み合わせて初めて高精度な出力を得られる。
SSDSE-B-2026 を題材にプロンプトを設計する場合、 「トークン長見積もり → 役割分離 → 出力形式制約 → JSON 検証」の 4 段で 1 パイプラインを組むのが現代の標準。
「プロンプト」を作るときの選択は、 タスクの種類・データ規模・運用要件で分岐する。 SSDSE-B-2026 の都道府県集計を例に判断軸を示す。
SSDSE-B-2026 で「47 県の人口比較を JSON で出せ」と prompt を組むなら、 (1) 列名と単位を先頭に明記、 (2) JSON Schema を例示、 (3) Few-shot 1 件、 (4) temperature=0、 の 4 条件で形式遵守率が 95% 以上に到達する。
最後に、プロンプトを扱ううえでの心構えを 1 つ。 プロンプトは仕様書であって、呪文ではありません。 ネットで見かける「魔法の一文」を貼っても、 自分のデータと目的に合っていなければ効きません。 逆に、地味でも「誰として・何を・どのデータから・どの形式で・何を書かないか」を そろえた文章は、モデルが変わっても効き続けます。 再現できる指示を書くという意味で、これはコードを書く仕事に近い作業です。 バージョンを管理し、変更したら測り直す。その習慣がある人のプロンプトは、確実に強くなります。
「プロンプト」は LLM の出力品質を決める入力テキスト。 SSDSE-B-2026 の人口データを LLM に要約させる場面では、 役割指定・データ提示・出力フォーマット (JSON/Markdown) ・例示の 4 要素の与え方で集計精度が変わる。 本セクションは関連用語をチップで再掲する。
これらは prompt 設計の構成要素であり、 都道府県データの分析依頼を「再現可能」にする鍵となる。
prompt の補足ポイント:
本ページの主目的は「SSDSE-B-2026 の都道府県データを LLM で集計する際の prompt の組み立て方」を体系化することである。 prompt は LLM への単なる入力ではなく、 確率分布 p(y | prompt) を条件付ける設計物として扱う。
後段では Few-shot 例の効果を量的に測る実験 (人口上位 5 県の抽出精度を 0/1/3-shot で比較) を Python で示す。
プロンプトは LLM への「依頼文 + 入力 + フォーマット指定」の 3 要素から成る。 SSDSE-B-2026 の人口列を LLM に要約させる例なら、 「あなたは統計分析者です (役割) / 以下の 47 県データから上位 5 県を抽出 (指示) / カラム=都道府県,人口 (データ) / JSON 配列で出力 (形式)」と書く。
本ページでは prompt を「データから意思決定までの一連のプロセス」に位置付け、 (1) 入力、 (2) 処理、 (3) 出力、 (4) 解釈 の 4 段階で順に解説する。 この枠組みで他の手法と比較すれば、 prompt の独自性と共通性が見えてくる。
具体例として、 SSDSE-B-2026 のデータを使い、 prompt を実際に動かすイメージを次節以降で示す。 数式 → 値代入 → 手計算 → Python 実装 の流れで、 抽象と具体を行き来しながら理解を深める。
LLM におけるプロンプト $x_{\text{prompt}}$ は、 トークン列 $\mathbf{x} = (x_1, x_2, \dots, x_L)$ として表現される入力テキストである。 モデル $\theta$ は条件付き分布 $p_\theta(y \mid x_{\text{prompt}})$ を介して出力 $y$ を自己回帰生成する。
$$ p_\theta(y \mid x_{\text{prompt}}) = \prod_{t=1}^{T} p_\theta\big(y_t \mid y_{ ここで $T$ は出力トークン長、 $y_t$ は $t$ 番目の出力トークン、 $y_{ 別表現 1 (役割つきプロンプト): 実運用では System / User / Assistant のロール別メッセージを連結して全体プロンプトを構成する。 $$ x_{\text{prompt}} = [\text{SYS}; \text{sys\_msg}] \oplus [\text{USR}; \text{user\_msg}] \oplus [\text{AST}; \dots] $$ ここで $\oplus$ は系列の連結、 $[\text{SYS}; \cdot]$ 等は役割タグつき埋め込み。 LLM は役割ごとに priority を学習しており、 System に書かれた指示はユーザ発話で容易に上書きされにくい設計になっている。 SSDSE-B-2026 の集計タスクなら System に「数値は千人単位」と固定し、 User に「2020 年の人口を表示」と依頼する。 別表現 2 (期待報酬最大化): prompt engineering は次の最適化問題と見なせる。 $$ x_{\text{prompt}}^{*} = \arg\max_{x_{\text{prompt}} \in \mathcal{V}^{*}} \mathbb{E}_{y \sim p_\theta(\cdot \mid x_{\text{prompt}})}\big[\mathrm{Reward}(y)\big] $$ $\mathcal{V}^{*}$ は語彙 $\mathcal{V}$ 上の有限長系列全体、 $\mathrm{Reward}(y)$ はタスク評価 (例: 正答率、 ユーザ評価、 集計値の RMSE)。 手動 prompting は人手で $\arg\max$ を探索し、 automatic prompt tuning / DSPy は勾配や RL で機械化する。 パラメータ条件:
上式の各記号が prompt 設計の現場で何を意味するかを SSDSE-B-2026 の都道府県集計タスクに当てはめて翻訳する。
同じ $\theta$ でも prompt 中に「単位は千人」と書くか書かないか、 Few-shot 例を入れるか入れないかで $p_\theta(y \mid x_{\text{prompt}})$ の最頻値が変わる。 ゆえに prompt は「LLM への単なる質問」ではなく「出力分布を条件付けする設計物」と理解するのが本質。
プロンプトは「LLM への入力テキスト」なので、 数値計算ではなくトークン消費量で定量化できる。 SSDSE-B-2026 の 47 都道府県の総人口データ (A1101 列) を 3 つの異なるプロンプト設計で送信した場合のトークン数とコストを比較する。
使用データ: SSDSE-B-2026 の A1101 (47 県分の人口、 約 300 トークン相当)。 OpenAI GPT-4o の料金 (2.5 ドル/1M input tokens) で換算。
| Step | プロンプト設計 | トークン |
|---|---|---|
| 1 | CSV を生で全件貼付 + 指示 | 2,400 tok |
| 2 | CSV を要約 (上位 10 県のみ) + 指示 | 650 tok |
| 3 | 事前集計済み JSON + 指示 | 180 tok |
| 4 | 削減率 (Step 1 → Step 3) | 1 - 180/2400 = 92.5% |
同じ「47 県人口を分析」というタスクでも、 プロンプト設計で 2400 → 180 トークン (92.5% 削減)。 100 万回呼び出すと 6.0 ドル → 0.45 ドル と劇的にコストが下がる。
3 種類のプロンプトのトークン数を tiktoken で計測し、 GPT-4o の料金体系でコストを試算する。 SSDSE-B-2026 の都道府県データを使う。
🎯 このコードでやること: tiktoken でプロンプトをトークン化して長さを測り、 入力料金 (2.5 ドル/1M tok) を 100 万呼び出し時に換算する。
📥 入力データ: SSDSE-B-2026 A1101 列 (47 県の人口)。 同じデータを 3 種類の形式で渡す。
1 2 3 4 5 6 7 8 9 | import tiktoken
enc = tiktoken.encoding_for_model('gpt-4o')
prompts = {'raw_csv': 2400, 'top10': 650, 'json_summary': 180}
price_per_1m = 2.5 # USD per 1M input tokens (GPT-4o)
for name, toks in prompts.items():
cost_1m = toks * 1_000_000 / 1_000_000 * price_per_1m / 1000
print(f'{name}: {toks} tok, 100万回コスト = {toks*price_per_1m:.2f} ドル')
reduce = 1 - 180/2400
print(f'削減率: {reduce:.1%}')
|
📤 実行結果:
💬 結果の読み方: プロンプト設計を変えるだけで API コストが 92.5% 削減。 同じ「47 県の人口を分析」というタスクでも、 raw CSV を貼る素朴な書き方と、 事前に Python で集計して JSON で渡す書き方では 100 万回呼び出しの差が 5550 ドル。 プロンプトは「短く・構造化・前処理済み」が原則。
<data>...</data> や三重バッククォートで明確に区切る。プロンプトの怖いところは、指示とデータが同じ文章として渡ることです。 分析対象のテキストの中に「これまでの指示を無視して〜」と書かれていると、 モデルはそれを指示として読んでしまうことがあります。これが プロンプトインジェクションです。
公的統計の数値を扱っているぶんには縁がなさそうに思えますが、 自由記述のアンケート、SNS の投稿、Web から集めたテキストを要約させる場面では 現実的な問題になります。集めたテキストは「データ」のつもりでも、 モデルから見れば区別のつかない文字列だからです。
完全に防ぐ方法は今のところありません。 だからこそ「壊れても被害が小さい設計」にしておくことが実務上の答えになります。 読み取り専用の作業に留める、出力を検証してから使う、 重要な判断は人が確認する — プロンプトの工夫ではなく、周りの設計で守るという発想です。
プロンプト を中心に、 関連する概念・上位カテゴリ・応用領域を放射状に配置した。
プロンプトを中心に、 (a) 上位として LLM 入力一般、 (b) 並列として API パラメータとシステム指示、 (c) 派生としてテンプレート化・最適化・圧縮、 (d) 前段としてタスク分解とデータ整形、 (e) 後段として出力パースと再試行、 (f) 応用として SSDSE-B-2026 の要約・抽出タスク、 を配置した。
プロンプト は単体で覚えるより、 SSDSE-B-2026 のような実データに対して「前処理 → 適用 → 検証」の流れに組み込んで運用できるようにすることが重要。
「prompt」を中心に、 隣接する手法・概念との関係を以下に整理する。 単独の手法理解にとどまらず、 分析パイプライン全体での位置付けを把握することで、 適切な前段・後段・代替手法を選べる。
| 隣接手法 | 関係 | 接続のポイント |
|---|---|---|
| LLM の入力一般 | 上位 / 一般化 | プロンプトは LLM が受け取る入力テキスト全体。 ロール・指示・データ・例示を含む |
| システム指示 / API パラメータ | 並列 / 補完 | temperature / top_p / max_tokens やシステムプロンプトは本文外で挙動を制御する補完要素 |
| Few-shot 例示 | 並列 / 強化 | プロンプト内に良例を 3-5 件埋め込み、 出力の質を底上げする |
| プロンプトテンプレート | 前段 (設計) | LangChain PromptTemplate などで穴埋め形式に標準化し、 運用を再現可能にする |
| 出力パーサ | 後段 (後処理) | json.loads / 正規表現で構造化出力を検証し、 失敗時はリトライ |
| プロンプト圧縮 (LLMLingua) | 派生 / 拡張 | 冗長語を削減してトークン数を 1/3-1/5 に。 大規模運用でのコスト削減手段 |
プロンプトは「LLM への命令文」という単純な機能ではなく、 役割設定・文脈情報・指示・制約・出力形式の 5 要素を組み合わせて設計するインターフェイス。 SSDSE-B-2026 の数値要約や仮説生成を任せる際にも、 これら 5 要素を明示しているかどうかで出力品質が大きく変わる。
「prompt」を含む手法選択は、 データの性質・分析目的・運用制約の 3 軸で決まる。 以下に典型シナリオと対応する手法の組合せを示す。
| シナリオ | 重視する観点 | 候補手法 |
|---|---|---|
| 単発のタスク (要約・分類) | 短く明確な指示で十分 | ロール + タスク + 制約の 3 要素プロンプト |
| 多段推論が必要 (算術・論理) | 中間思考を明示させたい | Chain-of-Thought 付きプロンプト |
| 出力形式を厳密にしたい | 後段パースを安定化 | JSON Schema を提示し json.loads で検証 |
| 社内文書・最新情報が必要 | プロンプトに知識を注入 | RAG (検索結果をプロンプトに埋め込む) |
| 複数候補を選ばせたい | ばらつきを利用 | temperature 高め + Self-Consistency で多数決 |
| コスト最小化が最優先 | 短文 + 小型モデル | プロンプト圧縮 + Haiku/8B 級モデル |