AI タグ付けで一貫性を保つプロンプト設計

2026.02.01
Share:

IdeaSpool の AI 自動タグ付け機能を実装したとき、一つの大きな問題にぶつかりました。AI に自由にタグを生成させると、同じ概念に対して異なる表記のタグが混在してしまうのです。

この記事では、タグの一貫性を保つためのプロンプト設計について紹介します。

問題:タグが混在する

2026年1月19日の開発日記から:

  • タグの一貫性問題
    • 最初は AI に自由にタグを生成させていた
    • 「React」「リアクト」「react.js」が混在して困った
    • → 既存タグをプロンプトに渡し、可能な限り再利用するよう指示

AI は文脈に応じて最適な表現を選ぼうとします。英語のドキュメントについて書かれたアイデアには「React」、日本語の文脈では「リアクト」、技術的な詳細には「react.js」といった具合です。

これでは後からタグでフィルタリングしたとき、同じ概念のアイデアがバラバラになってしまいます。

解決策1:既存タグを参照させる

最も効果的だったのは、既存のタグリストをプロンプトに含めることです:

const existingTags = await getExistingTags(); // ["React", "TypeScript", "設計", ...]

const prompt = `
以下のアイデアに適切なタグを付けてください。

## 既存タグ(可能な限り再利用してください)
${existingTags.join(', ')}

## アイデア
${ideaContent}

## 出力形式
タグをカンマ区切りで出力してください。
`;

「可能な限り再利用してください」という指示を入れることで、AI は新しいタグを作る前に既存タグを検討するようになります。

解決策2:日本語タグを強制する

IdeaSpool のターゲットユーザーは日本人エンジニアです。英語タグと日本語タグが混在すると視認性が悪いため、日本語に統一しました:

日本語タグ強制: 英語タグが混在すると視認性が悪い。ターゲットユーザーは日本人エンジニア

const prompt = `
以下のアイデアに適切なタグを付けてください。

## ルール
- タグは必ず日本語で出力してください
- 技術用語も日本語で表記してください(例: React → リアクト)

## 既存タグ
${existingTags.join(', ')}

## アイデア
${ideaContent}
`;

ただし、「React」のような固有名詞を無理に日本語化すると違和感があります。実際には「固有名詞はそのまま、一般用語は日本語」というバランスを取りました。

学び:「禁止」より「推奨」

プロンプト設計で最も重要な学びがこれです:

AI のプロンプトは「禁止」より「推奨」の方が効果的

最初は「英語タグを生成しないでください」と書いていましたが、AI は時々ルールを破りました。

「推奨」に変えると効果的でした:

// NG: 禁止形
const prompt = `
タグを付けてください。
- 英語タグを生成しないでください
- 新しいタグを作らないでください
`;

// OK: 推奨形
const prompt = `
タグを付けてください。
- 日本語タグを優先してください
- 既存タグがあれば、そちらを使ってください
- 新しいタグが必要な場合は、シンプルな表現にしてください
`;

禁止形は「やってはいけないこと」を列挙するため、AI が何をすべきか曖昧になります。推奨形は「やるべきこと」を明確にするため、AI が正しい方向に進みやすくなります。

実装例:完全なプロンプト

IdeaSpool で使っている実際のプロンプト構造です:

async function generateTags(ideaContent: string): Promise<string[]> {
  const existingTags = await getExistingTags();

  const prompt = `
あなたはアイデア管理ツールのタグ付けアシスタントです。

## タスク
以下のアイデアに適切なタグを1〜5個付けてください。

## ガイドライン
1. 既存タグを優先的に使用してください
2. 既存タグにない概念の場合のみ、新しいタグを作成してください
3. タグは短く、具体的にしてください
4. 技術用語はカタカナ表記を推奨します

## 既存タグ
${existingTags.length > 0 ? existingTags.join(', ') : '(まだありません)'}

## アイデア
${ideaContent}

## 出力形式
タグをカンマ区切りで出力してください。説明は不要です。
`;

  const response = await callAI(prompt);
  return response.split(',').map(tag => tag.trim());
}

結果

この設計に変更してから、タグの一貫性が大幅に向上しました:

  • 同じ概念に対するタグの表記揺れが 90% 以上減少
  • ユーザーがタグでフィルタリングしたとき、関連アイデアが正しくグループ化される
  • 新規タグの作成が減り、タグリストが管理しやすくなった

まとめ

AI タグ付けで一貫性を保つためのプロンプト設計:

  1. 既存タグを渡す: AI に過去のタグを参照させて再利用を促す
  2. 言語を統一: ターゲットユーザーに合わせて日本語/英語を決める
  3. 禁止より推奨: 「〜しないで」ではなく「〜してください」と書く
  4. ガイドラインを明確に: 優先順位を数字で示す

AI は指示されたことを忠実に実行しようとしますが、曖昧な指示には曖昧に応えます。一貫性が必要な場面では、具体的で肯定的な指示を心がけましょう。

Zeronova avatar

Zeronovaゼロノバ

Product Manager / AI-Native Builder

Web/IT業界19年以上・20以上のWebサービスを担当したPdM。東証プライム上場企業の子会社代表として事業経営を経験。現在はAIを駆使して企画から実装まで完結させる個人開発を実践中。

関連プロダクト

IdeaSpool

AIが整理する思考キャプチャツール