プロンプト Few‑Shot
軽量モデルへ代表的なプロンプト手法を実際のコードで試しモデルの反応を確認します
記事作成日:2025-12-06, 著者: Hi6
このガイドはなぜ必要か?
現代のLLM(大規模言語モデル)は、正しく誘導されて初めて複雑な推論タスクを解決できます。以下に示す手法は、信頼性・説明可能性・高性能システム構築の「標準的ケア」として確立されています。それぞれが、モデルへの指示量や内部で考えるか外部ツールと対話するかという点で異なります。
影響力が大きい6つの手法を深掘り:
Few‑Shot Promptingとは?
概要
Large Language Model (LLM) に対して「今回のタスクは○○です。以下に例を示します」と、数件だけ(通常 1〜5 件)の サンプル入力+出力 を与えてから、本番データを入力すると、モデルがそのパターンを学習しやすくなる手法です。
- 「Zero‑Shot」ではプロンプトに例は含めず、タスク定義だけで回答させる。
- 「Few‑Shot」では 1〜5 件の 実際の対話例 を挿入して「こんなやり取りをしたらこうなる」という期待値を明示する。
LLM はこれらのサンプルを自己教師として利用し、入力文に対して最適な出力を生成します。
2️⃣ 基本構造(テンプレート)
Task: [タスクの簡潔な説明]
Example 1:
Input: [例1 の入力]
Output: [例1 の出力]
Example 2:
Input: [例2 の入力]
Output: [例2 の出力]
...
Now solve:
Input: [ユーザーが入力する問題・データ]
Output:
Task:– タスクの定義(何をすべきか)。Example N:– 実際に「入力 → 出力」のペア。Now solve:– 本番入力(ユーザーが提供)とその答え。
3️⃣ 使い方のポイント
| ポイント | 詳細 |
|---|---|
| 例数 | 1〜5 件が最適。多すぎるとトークンオーバー、少なすぎると学習効果低下。 |
| フォーマット統一 | Input: / Output: を必ず揃える。モデルは「この構造で読む」ので、統一性が重要。 |
| 例の質 | 明確で代表的なケースを選ぶ。曖昧・矛盾した例は逆効果。 |
| タスク定義 | Task: で何を求めているかを短く明示。例があるときは必ず含める。 |
| トークン制限 | 例 + 本番入力の合計がモデルの最大トークン数(例:4096)を超えないように注意。 |
4️⃣ 実際の使い方例
📝 文書要約
Task: 次の日本語文章を1文で要約してください。
Example 1:
Input: 「東京は日本の首都であり、世界的にも有名な都市です。多くの観光客が訪れます。」
Output: 東京は日本の首都で、多くの観光客が訪れる都市です。
Example 2:
Input: 「宇宙には無数の星があります。地球はその中のひとつに過ぎません。」
Output: 宇宙には多くの星があり、地球はその一部です。
Now solve:
Input: 「日本の経済は世界第3位で、技術革新が進んでいます。しかし、少子高齢化という課題も抱えています。」
Output:
➕ 数値計算
Task: 以下の数式を計算し、答えを整数で返してください。
Example 1:
Input: 15 ÷ 3 + 4 × 2
Output: 13
Example 2:
Input: (9 - 2)² / 7
Output: 7
Now solve:
Input: 12 * 5 - 18 / 6
Output:
🔍 推論・質問応答
Task: 与えられた文章を読んで、質問に答えてください。
Example 1:
Input: 「ジョンは20歳です。メアリーはジョンより5歳年上です。」
Question: メアリーの年齢はいくつ?
Output: 25
Example 2:
Input: 「太郎は毎朝6時に起き、8時までに家を出ます。」
Question: 太郎が家を出る時間は何時?
Output: 8時
Now solve:
Input: 「佐藤さんは毎日9時に歯医者へ行き、10時に帰ります。彼は何時に家に着いたか?」
Question: 佐藤さんは何時に家に着いたか?
Output:
5️⃣ 実装例(Python + Ollama)
import ollama
# ---------- 入力データ ----------
task = "以下を日本語に翻訳してください。"
e1_in = "I love sushi."
e1_out = "私は寿司が好きです。"
e2_in = "The sky is blue."
e2_out = "空は青いです。"
# タスク内容
user_q = "Agent Chat UI is open source and can be adapted to your application needs."
# ---------- プロンプトテンプレート ----------
sys_template = """
Task: {task_description}
Example 1:
Input: {example1_input}
Output: {example1_output}
Example 2:
Input: {example2_input}
Output: {example2_output}
"""
user_prompt = """
Now solve:
Input: {user_input}
Output:
"""
sys_prompt = sys_template.format(
task_description=task,
example1_input=e1_in,
example1_output=e1_out,
example2_input=e2_in,
example2_output=e2_out,
)
user_prompt = user_prompt.format(
user_input=user_q
)
# ---------- Ollama へ送信 ----------
client = ollama.Client(host="http://127.0.0.1:11434")
response = client.chat(
model="qwen3-vl:8b",
messages=[
{"role": "system", "content": sys_prompt},
{"role": "user", "content": user_prompt}
]
)
print(response["message"]["content"])
出力結果: エージェントチャットUIはオープンソースで、あなたのアプリケーションの要件に応じて適応できます。
6️⃣ よくある質問と回答
| 質問 | 回答 |
|---|---|
| 例がない場合は? | Zero‑Shot で実行。精度は低いが、簡単タスクなら十分。 |
| トークン数オーバーしたら? | 例を短くするか、Task: を短縮。 |
| 複数言語に対応? | はい。例・入力・出力を同じ言語で統一すればOK。 |
| 例の中にミスがあるとどうなる? | モデルはその誤ったパターンを学習し、同様の間違いを返す可能性が高くなるので注意。 |
🎯 まとめ
- Few‑Shot Prompting は「例を数件示して学習させる」手法
- テンプレートは
Task → Example(s) → Now solveの構成 - 重要ポイント:例数・フォーマット統一・質の高い例・トークン制限
- 実装:OpenAI API などで簡単に組み込める
このテンプレートをベースに、タスクごとに適切な例を選び、モデルに「パターン」を学習させれば、Zero‑Shot よりも高精度・安定した応答が得られます。 🚀