mcpField
P
prompt-architecture

prompt-architecture

github.com/itallstartedwithaideaエージェントワークフロー4477 回インストール28 週間前に更新
リポジトリ

prompt-architecture について

prompt-architecture は、エージェントへの指示を構成する Agent Skills のスキルです。固定の制約、タスク内容、出力の誘導を層に分け、構造検証と動的な例の選択を行います。

主な機能

  1. 01system、user、assistant の各層を分離
  2. 02出力スキーマと制約を定義
  3. 03思考連鎖の足場を提供
  4. 04few-shot 例を動的に選択
  5. 05プロンプト構造を検証

活用シーン

  1. 01同じエージェントタスクの出力差を抑制
  2. 02JSON やスキーマ形式の出力を指定
  3. 03エージェントの動作制約を設定
  4. 04本番運用向けのシステムプロンプトを設計

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/itallstartedwithaidea/agent-skills --skill prompt-architecture

インストール後、Claude Code で/prompt-architectureを入力して読み込まれたか確認します。

詳細

プロンプトアーキテクチャ

googleadsagent.ai™ による Agent Skills™ の一部です

説明

プロンプトアーキテクチャとは、エージェントへの指示を構造的に設計することです。何気ないプロンプト作成では脆弱で一貫性のない結果になりがちですが、アーキテクチャに基づくプロンプト設計では、敵対的な状況にも耐え、何千回もの呼び出しにわたって安定する、決定論的で高性能なエージェントの動作を実現します。このスキルでは、googleadsagent.ai™ プラットフォームで開発されたプロンプトエンジニアリングの手法をまとめています。このプラットフォームでは、Buddy™ が細部まで緻密に階層化されたプロンプト構造を通じて、複雑な Google Ads 分析を行います。

基本原則は、プロンプトは文字列ではなく、プログラムであるということです。適切に設計されたプロンプトには、明確な実行モデルがあります。システムレベルの不変条件によってエージェントのアイデンティティと制約を定め、ユーザーレベルの指示で現在のタスクを定義し、アシスタントレベルのプライミングで出力形式と推論の流れを整えます。それぞれの層には固有の目的があり、組み合わせる前に個別に設計する必要があります。

高度なプロンプトアーキテクチャには、制約の伝播、出力スキーマの強制、思考の連鎖を導く足場、動的な少数ショット例の選択が含まれます。これらの手法により、同じ入力でも実行ごとに出力品質が大きくばらつく「プロンプトくじ」の問題を解消できます。

使用する場面

  • 同じ入力でも、エージェントの出力が呼び出しごとに一貫しない場合
  • 決定論的な形式(JSON、構造化レポート、特定のスキーマ)が必要な場合
  • 複雑な複数ステップの推論で、思考の連鎖を明示的に導く足場が必要な場合
  • エージェントが厳格な行動制約(安全性、トーン、範囲)を遵守する必要がある場合
  • ドメイン固有のパターンを確立するために、少数ショット例が必要な場合
  • 大規模な本番環境へのデプロイに向けて、システムプロンプトを設計する場合

仕組み

graph TD
    A[System Layer] --> B[Identity & Constraints]
    A --> C[Output Schema Definition]
    A --> D[Tool Definitions]
    B --> E[Prompt Assembly]
    C --> E
    D --> E
    F[User Layer] --> G[Task Specification]
    F --> H[Dynamic Few-Shot Examples]
    G --> E
    H --> E
    I[Assistant Layer] --> J[Reasoning Primer]
    I --> K[Format Enforcement]
    J --> E
    K --> E
    E --> L[Validation Gate]
    L -->|Pass| M[Agent Execution]
    L -->|Fail| N[Prompt Revision]
    N --> E

この3層アーキテクチャにより、関心事を分離できます。システム層では、エージェントが何者で、何ができるかを定義します。この層は呼び出しごとに変更されることはほとんどありません。ユーザー層には、タスク固有のペイロードと、動的に選択された例が含まれます。アシスタント層は「スタートダッシュ」を支え、モデルの生成の流れをあらかじめ整えます。検証ゲートでは、組み立てたプロンプトを実行前に構造ルールと照合し、不正な指示や矛盾する指示を検出します。

実装

3層プロンプトビルダー:

interface PromptLayer {
  role: "system" | "user" | "assistant";
  sections: PromptSection[];
}

interface PromptSection {
  name: string;
  content: string;
  priority: number;
  tokenBudget: number;
}

function assemblePrompt(layers: PromptLayer[], maxTokens: number): Message[] {
  const messages: Message[] = [];
  for (const layer of layers) {
    const sections = layer.sections
      .sort((a, b) => b.priority - a.priority)
      .reduce((acc, section) => {
        const currentTokens = countTokens(acc.map(s => s.content).join("\n"));
        if (currentTokens + section.tokenBudget <= maxTokens * 0.4) {
          acc.push(section);
        }
        return acc;
      }, [] as PromptSection[]);

    messages.push({
      role: layer.role,
      content: sections.map(s => s.content).join("\n\n"),
    });
  }
  return messages;
}

制約付き出力の強制:

SCHEMA_ENFORCEMENT_PROMPT = """
You MUST respond with valid JSON matching this exact schema:
{schema}

Rules:
- Every field is required unless marked optional
- String fields must not exceed {max_length} characters
- Numeric fields must be within specified ranges
- Do not include fields not in the schema
- Do not wrap the JSON in markdown code blocks

Begin your response with the opening brace {{.
"""

def build_constrained_prompt(schema: dict, task: str) -> list[dict]:
    return [
        {"role": "system", "content": SCHEMA_ENFORCEMENT_PROMPT.format(
            schema=json.dumps(schema, indent=2),
            max_length=500
        )},
        {"role": "user", "content": task},
        {"role": "assistant", "content": "{"}  # Prime the generation
    ]

動的な少数ショット選択:

class FewShotSelector:
    def __init__(self, examples: list[dict], embedder):
        self.examples = examples
        self.embedder = embedder
        self.embeddings = [embedder.encode(ex["input"]) for ex in examples]

    def select(self, query: str, k: int = 3) -> list[dict]:
        query_emb = self.embedder.encode(query)
        similarities = [
            cosine_similarity(query_emb, emb) for emb in self.embeddings
        ]
        top_indices = sorted(
            range(len(similarities)),
            key=lambda i: similarities[i],
            reverse=True
        )[:k]
        return [self.examples[i] for i in top_indices]

    def format_examples(self, examples: list[dict]) -> str:
        parts = []
        for ex in examples:
            parts.append(f"Input: {ex['input']}\nOutput: {ex['output']}")
        return "\n\n---\n\n".join(parts)

ベストプラクティス

  1. アイデンティティと指示を分ける — システムプロンプトの最初の段落でエージェントが何者かを定義し、以降のセクションで何をするかを定義します。アイデンティティは維持され、指示は変化します。
  2. セクションの境界に XML タグを使う — <task>、<constraints>、<examples> タグを使うと、モデルが確実に解釈できる明確なセクション区切りを作れます。
  3. 指示より前に制約を置く — モデルはシステムプロンプト内の前方にある情報をより強く重視します。交渉の余地がないルールを最初に置きます。
  4. アシスタントのターンをプライミングする — 望ましい形式の冒頭トークン(JSON の場合は {、markdown の場合は ## Analysis など)をアシスタントメッセージに事前入力すると、形式への準拠が大幅に向上します。
  5. プロンプトをバージョン管理し、A/B テストする — プロンプトをバージョン管理、自動評価、モデルのバージョンをまたいだ回帰テストの対象となるコード成果物として扱います。
  6. 層をまたぐ重複を最小限にする — システムプロンプトで出力形式を定義した場合、ユーザープロンプトで再度説明する必要はありません。重複はトークンを浪費し、矛盾を招く可能性があります。
  7. タスクの種類に合わせて温度を調整する — 決定論的な抽出には 0.0-0.3、分析的な推論には 0.5-0.7、創造的な生成には 0.8-1.0 を使用します。
  8. 敵対的な入力でテストする — ユーザーが不正な入力、矛盾する入力、またはプロンプトインジェクションを含む入力を与えた場合にも、プロンプトアーキテクチャが機能することを確認します。

プラットフォームの互換性

機能Claude CodeCursorCodexGemini CLI
システムプロンプトの階層化✅ フル対応✅ ルール+スキル✅ 指示✅ システムプロンプト
アシスタントのプレフィル✅ ネイティブ対応⚠️ 制限あり❌ 未対応⚠️ 制限あり
Few-shot の注入✅ フル対応✅ フル対応✅ フル対応✅ フル対応
XML セクションタグ✅ 推奨✅ 対応✅ 対応✅ 対応
Temperature の制御✅ API パラメーター⚠️ モデルのデフォルト✅ API パラメーター✅ API パラメーター

Mythos Preview の参考情報

Anthropic の Mythos Preview の記事では、ハーネスが適切であれば、短い単一段落のタスクプロンプトで、長く複雑な自律作業を実行できることが示されています。プロジェクトを含む分離されたコンテナを起動し、Mythos Preview を使って Claude Code を実行して、およそ1段落の指示(たとえば、セキュリティ上の問題を見つけるようモデルに依頼する)を与え、エージェントに実行を任せます。エージェントはコードを読み、実験し、反復しながら、人間による手順ごとの指示なしに作業を進めます。

このパターンは、プロンプト内ですべてのツール呼び出しを細かく指定しすぎずに、高い自律性を求める場合の参考になります。その段落は目標と制約として扱い、実行の詳細はランタイム(ツール、環境、検証)に委ねます。出典:Mythos Preview。

関連スキル

  • Cognitive Scaffolding - プロンプトの各レイヤーがモデルの注目を最大限に集める位置を決定する、注意領域の配置
  • Context Engineering - プロンプトの各レイヤーのサイズを制限し、圧縮を促すトークン予算の管理
  • Anthropic Tool Mastery - プロンプトアーキテクチャのシステムレイヤー内で動作するツール定義の設計
  • Verification Loops - プロンプトアーキテクチャで定義されたスキーマ制約を適用する出力検証

キーワード

prompt-architecture, system-prompt, few-shot, chain-of-thought, constrained-generation, output-format, prompt-layering, instruction-hierarchy, temperature-tuning, agent-skills


© 2026 googleadsagent.ai™ | Agent Skills™ | MIT License

コメント