LESSON 60分

ストーリー

田中VPoE
「ここまでZero-shot、Few-shot、出力フォーマット制御を学んできた。実際に手を動かしてプロンプトを設計してみよう。」
あなた
「NetShop社の実務に近い課題で練習したいです。」
田中VPoE
「もちろん。カスタマーサポート、商品データ管理、コード品質チェックの3つのミッションを用意した。それぞれ異なるテクニックが必要になる。」
あなた
「楽しみです。まずはどのテクニックを使うか判断するところからですね。」
田中VPoE
「そうだ。テクニックの選択自体も重要なスキルだよ。」

ミッション概要

項目内容
目標基本的なプロンプトテクニックを組み合わせて実務的なプロンプトを設計する
所要時間60分
ミッション数3つ
使用テクニックZero-shot / Few-shot / 出力フォーマット制御
評価観点指示の明確さ、適切なテクニック選択、出力の実用性

Mission 1: カスタマーサポートチケット分類プロンプト

要件

NetShop社のカスタマーサポートに届くチケットを自動分類するプロンプトを設計してください。

入力: カスタマーからの問い合わせテキスト

出力要件:

  • カテゴリ(注文関連 / 商品不具合 / 配送 / アカウント / 返品・返金 / その他)
  • 緊急度(HIGH / MEDIUM / LOW)
  • 担当チーム(logistics / product / account / billing)
  • 要約(30文字以内)
  • JSON形式で出力

条件:

  • Few-shotで3つの例を含めること
  • エッジケース(複数カテゴリにまたがるケース)を1つ含めること
  • 出力はJSON形式

テスト入力: 「3日前に注文した商品がまだ届きません。追跡番号を確認したら『配達済み』になっていますが受け取っていません。至急対応をお願いします。」

解答例
以下のカスタマーサポートチケットを分類してください。
以下の例に従って、JSON形式で出力してください。

---

例1:
チケット: 「購入した靴のサイズが合わなかったので交換したいです」
出力:
{
  "category": "返品・返金",
  "urgency": "LOW",
  "team": "logistics",
  "summary": "靴のサイズ交換希望"
}

例2:
チケット: 「ログインパスワードを忘れてしまい、アカウントにアクセスできません」
出力:
{
  "category": "アカウント",
  "urgency": "MEDIUM",
  "team": "account",
  "summary": "パスワード忘れによるログイン不可"
}

例3(複数カテゴリにまたがるケース):
チケット: 「届いた商品が壊れていたので返金してほしい。クレジットカードへの返金はいつ反映されますか?」
出力:
{
  "category": "商品不具合",
  "urgency": "HIGH",
  "team": "billing",
  "summary": "破損商品の返金処理と反映時期の問合せ"
}

---

分類対象チケット:
「3日前に注文した商品がまだ届きません。追跡番号を確認したら『配達済み』になっていますが受け取っていません。至急対応をお願いします。」

JSONのみを出力してください。説明文は不要です。

ポイント:

  • 3つの例で多様なカテゴリと緊急度をカバー
  • 例3はエッジケース(商品不具合 + 返金の複合問題)
  • 「JSONのみ出力」「説明文不要」で余計なテキストを抑制
  • summaryの文字数制限は例の中で暗黙的に示している

Mission 2: 商品データ正規化プロンプト

要件

外部サプライヤーから届く不揃いな商品データを、NetShop社の標準フォーマットに正規化するプロンプトを設計してください。

入力: 自由形式の商品説明テキスト

出力要件:

  • 以下のCSVフォーマットに変換
  • product_name,category,price_jpy,weight_g,color,material,size
  • 情報が不明な場合は N/A と記入
  • 価格は税込み円に統一(税抜き表記の場合は10%加算)

条件:

  • Zero-shotまたはFew-shotのどちらが適切か判断すること
  • 出力フォーマットを厳密に指定すること

テスト入力: 「超軽量チタンフレームメガネ。カラーはブラックとシルバーの2色展開。重さわずか15グラム。税抜き12,000円。レンズ横幅52mm。」

解答例
以下の商品説明テキストを、指定のCSVフォーマットに変換してください。

ルール:
- ヘッダー行は不要(データ行のみ出力)
- 情報が不明な場合は N/A と記入
- 価格は税込み円に統一(税抜き表記の場合は10%加算して整数に丸める)
- 複数色の場合は色ごとに行を分ける
- CSV形式のみ出力してください(説明文不要)

フォーマット: product_name,category,price_jpy,weight_g,color,material,size

例:
入力: 「本革ビジネスバッグ。ブラウン。約800g。税込33,000円。A4サイズ対応。」
出力: 本革ビジネスバッグ,バッグ,33000,800,ブラウン,本革,A4

入力: 「コットン100%のTシャツ。ホワイト・ネイビー。税抜き2,500円。Mサイズ。」
出力:
コットンTシャツ,アパレル,2750,N/A,ホワイト,コットン,M
コットンTシャツ,アパレル,2750,N/A,ネイビー,コットン,M

---

変換対象:
「超軽量チタンフレームメガネ。カラーはブラックとシルバーの2色展開。重さわずか15グラム。税抜き12,000円。レンズ横幅52mm。」

ポイント:

  • Few-shotを選択(独自フォーマットへの変換なので例が不可欠)
  • 税込み計算のルールを明示
  • 複数色の扱いを例で示している
  • 2つの例で単色・複数色の両パターンをカバー

Mission 3: コード品質チェックプロンプト

要件

NetShop社の開発チーム向けに、TypeScriptコードの品質チェックを行うプロンプトを設計してください。

入力: TypeScriptのコードスニペット

出力要件:

  • Markdown表形式で問題点を出力
  • 列: 行番号 / 重要度(HIGH/MEDIUM/LOW) / カテゴリ / 問題内容 / 修正案
  • 問題がない場合は「問題は検出されませんでした」と出力

チェック観点:

  1. セキュリティリスク
  2. パフォーマンス問題
  3. エラーハンドリング不足
  4. 型安全性の問題
  5. 可読性・保守性

条件:

  • Zero-shotで設計すること(指示の精度で勝負)
  • 温度パラメータの推奨値を明記すること

テスト入力:

async function getUserData(userId: any) {
  const response = await fetch(`/api/users/${userId}`)
  const data = response.json()
  localStorage.setItem('userData', data)
  return data
}
解答例
推奨温度パラメータ: temperature: 0.0

---

以下のTypeScriptコードの品質チェックを実施してください。

チェック観点(優先度順):
1. セキュリティリスク(XSS、インジェクション、機密情報漏洩)
2. パフォーマンス問題(不要な処理、メモリリーク)
3. エラーハンドリング不足(try-catch、null チェック)
4. 型安全性の問題(any型、型アサーション)
5. 可読性・保守性(命名、構造、コメント)

出力ルール:
- Markdown表形式で出力してください
- 列: | 行番号 | 重要度 | カテゴリ | 問題内容 | 修正案 |
- 重要度は HIGH / MEDIUM / LOW の3段階
- 問題が検出されない場合は「問題は検出されませんでした」とだけ出力
- 表の後に、修正後のコード全文を提示してください

対象コード:
async function getUserData(userId: any) {
  const response = await fetch(`/api/users/${userId}`)
  const data = response.json()
  localStorage.setItem('userData', data)
  return data
}

ポイント:

  • Zero-shotだが、チェック観点を優先度順に列挙して指示を明確に
  • 温度0.0を推奨(コードレビューは確定的な出力が望ましい)
  • 出力ルールで表の列構成を厳密に指定
  • 「問題がない場合」のフォールバック出力も定義
  • 修正後コードも要求して実用性を高めている

達成度チェック

  • Mission 1: Few-shotで多様な例を用いたチケット分類プロンプトを設計できた
  • Mission 2: 適切なテクニック(Few-shot)を選択し、データ正規化プロンプトを設計できた
  • Mission 3: Zero-shotで指示の精度を高めたコード品質チェックプロンプトを設計できた
  • 各ミッションで出力フォーマットを適切に制御できた
  • テクニックの使い分け判断ができた

推定所要時間: 60分