ストーリー
出力フォーマットの種類
JSON出力
最もプログラムとの連携に適したフォーマットだ。
以下のレビューテキストを分析し、JSON形式で出力してください。
レビュー: 「配送は早かったが商品に傷があった」
出力形式:
{
"sentiment": "mixed",
"aspects": [
{"topic": "配送", "sentiment": "positive", "score": 0.8},
{"topic": "商品品質", "sentiment": "negative", "score": 0.3}
],
"summary": "1行の要約"
}
CSV出力
表形式データの生成やスプレッドシート連携に便利だ。
以下の商品リストをCSV形式で出力してください。
ヘッダー行を含めてください。
商品: ノートPC(15万円、在庫30)、マウス(3千円、在庫200)、キーボード(1万円、在庫80)
出力形式:
product_name,price,stock
Markdown出力
ドキュメント生成や表示用途に適している。
以下の技術スタックについてMarkdown形式で比較表を作成してください。
比較対象: React, Vue, Svelte
比較観点: 学習コスト、パフォーマンス、エコシステム、採用企業数
出力形式: Markdownの表(|区切り)
構造化出力のテクニック
テクニック1: スキーマを明示する
以下のJSON Schemaに準拠した出力を生成してください。
{
"type": "object",
"properties": {
"title": {"type": "string", "maxLength": 100},
"tags": {"type": "array", "items": {"type": "string"}, "maxItems": 5},
"priority": {"type": "string", "enum": ["HIGH", "MEDIUM", "LOW"]},
"description": {"type": "string"}
},
"required": ["title", "tags", "priority"]
}
テクニック2: 区切り文字を指定する
回答を以下の区切り文字で構造化してください。
===ANALYSIS_START===
(分析内容をここに記述)
===ANALYSIS_END===
===RECOMMENDATION_START===
(推奨事項をここに記述)
===RECOMMENDATION_END===
テクニック3: 出力の制約を加える
以下の制約に従って出力してください:
- JSONのみを出力(説明文や前置きは不要)
- 文字列値はダブルクォートで囲む
- 数値はクォートなし
- null値は使用しない(空文字列で代替)
- 配列は最大10要素
パーサーとの連携
AIの出力をプログラムで処理する際の実践的なパターンを紹介する。
TypeScriptでのJSON出力パース
// プロンプトで指定した型定義
interface ReviewAnalysis {
sentiment: "positive" | "negative" | "mixed" | "neutral";
confidence: number;
topics: string[];
}
// AIからの出力をパース
function parseAIResponse(response: string): ReviewAnalysis {
// JSON部分を抽出(余計なテキストが含まれる場合の対策)
const jsonMatch = response.match(/\{[\s\S]*\}/);
if (!jsonMatch) {
throw new Error("JSON not found in response");
}
const parsed = JSON.parse(jsonMatch[0]);
// バリデーション
if (!["positive", "negative", "mixed", "neutral"].includes(parsed.sentiment)) {
throw new Error(`Invalid sentiment: ${parsed.sentiment}`);
}
return parsed as ReviewAnalysis;
}
出力の堅牢性を高めるプロンプト
重要: 出力はJSON形式のみにしてください。
コードブロック(```json)で囲まないでください。
説明文や前置きは一切不要です。
JSONオブジェクトの { から始めてください。
よくある問題と対処法
| 問題 | 原因 | 対処法 |
|---|---|---|
| JSONに余計なテキストが付く | 指示が不十分 | 「JSONのみ出力」を明記 |
| フィールドが欠落する | required指定がない | JSON Schemaでrequiredを明示 |
| 型が一致しない | 型制約が曖昧 | 具体例で型を示す |
| 配列が空になる | データ不足 | 最低要素数を指定 |
| ネストが深すぎる | 構造指定が曖昧 | フラットな構造を指示 |
実践例: NetShop社の商品分析
以下の商品レビュー群を分析し、指定のJSON形式で出力してください。
レビュー:
1. 「軽くて持ち運びやすい。バッテリーも長持ち」
2. 「価格は高いが、品質は確か」
3. 「初期不良で交換してもらった。対応は迅速だった」
出力形式:
{
"product_summary": {
"overall_sentiment": "positive/negative/mixed",
"average_score": 0.0-1.0,
"review_count": 数値
},
"aspects": [
{
"name": "カテゴリ名",
"sentiment": "positive/negative/mixed",
"mentions": 数値,
"representative_comment": "代表的なコメント"
}
],
"action_items": ["改善提案1", "改善提案2"]
}
まとめ
| 項目 | ポイント |
|---|---|
| JSON出力 | スキーマ明示+制約指定で精度向上 |
| CSV出力 | ヘッダー行の指定とデリミタの明示が重要 |
| Markdown出力 | 表・見出し・リスト形式を具体的に指示 |
| パーサー連携 | 余計なテキスト除去とバリデーションを実装 |
チェックリスト
- JSON/CSV/Markdownの出力指定ができる
- JSON Schemaを使った構造化出力を実践できる
- 区切り文字による出力構造化を理解した
- パーサー連携時の堅牢性対策を把握した
次のステップへ
次は演習として、これまで学んだ基本テクニックを組み合わせてプロンプトを設計してみよう。
推定読了時間: 30分