prompt-engineering-patterns について
LLMプロンプトの性能、信頼性、制御性を高める手法をまとめたスキルです。プロダクションアプリや専門的なAIアシスタント向けに、少数例、構造化出力、最適化、テンプレート設計を扱います。
主な機能
- 01少数例の選定と構成
- 02思考連鎖と複数経路による検証
- 03JSONとPydanticによる構造化出力
- 04プロンプトの反復改善と評価
- 05再利用可能なテンプレートとシステムプロンプト
活用シーン
- 01プロダクションアプリのプロンプト一貫性の改善
- 02LLM向けの信頼できる構造化出力の構築
- 03一貫しないプロンプトのデバッグと改善
- 04専門AIアシスタント向けシステムプロンプトの作成
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ wshobson/ agents --skill prompt-engineering-patternsインストール後、Claude Code で/prompt-engineering-patternsを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
assets/few-shot-examples.jsonprompt-template-library.mdreferences/chain-of-thought.mddetails.mdfew-shot-learning.mdprompt-optimization.mdprompt-templates.mdsystem-prompts.mdscripts/optimize-prompt.py詳細
プロンプトエンジニアリングパターン
LLM のパフォーマンス、信頼性、制御性を最大化するための高度なプロンプトエンジニアリング技法を習得します。
このスキルを使用する場面
- 本番環境の LLM アプリケーション向けに複雑なプロンプトを設計する
- プロンプトのパフォーマンスと一貫性を最適化する
- 構造化された推論パターン( chain-of-thought 、 tree-of-thought )を実装する
- 動的な例の選択を伴う few-shot 学習システムを構築する
- 変数補間を備えた再利用可能なプロンプトテンプレートを作成する
- 一貫性のない出力を生成するプロンプトをデバッグおよび改善する
- 専門的な AI アシスタント向けのシステムプロンプトを実装する
- 信頼性の高い解析のために構造化出力( JSON モード)を使用する
中核となる機能
1. Few-Shot 学習
- 例の選択戦略(意味的類似性、多様性サンプリング)
- 例の数とコンテキストウィンドウの制約のバランス調整
- 入力と出力のペアを用いた効果的な実例の構築
- ナレッジベースからの動的な例の取得
- 戦略的な例の選択によるエッジケースの処理
2. Chain-of-Thought プロンプティング
- ステップバイステップの推論の引き出し
- 「Let's think step by step」を用いたゼロショット CoT
- 推論トレースを伴う few-shot CoT
- 自己一貫性技法(複数の推論経路のサンプリング)
- 検証および妥当性確認のステップ
3. 構造化出力
- 信頼性の高い解析のための JSON モード
- Pydantic スキーマの適用
- 型安全なレスポンス処理
- 不正な形式の出力に対するエラー処理
4. プロンプトの最適化
- 反復的な改善ワークフロー
- プロンプトのバリエーションの A/B テスト
- プロンプトのパフォーマンス指標(精度、一貫性、レイテンシ)の測定
- 品質を維持しながらトークン使用量を削減する
- エッジケースと障害モードの処理
5. テンプレートシステム
- 変数補間とフォーマット
- 条件付きプロンプトセクション
- マルチターン会話テンプレート
- ロールベースのプロンプト構成
- モジュール式のプロンプトコンポーネント
6. システムプロンプトの設計
- モデルの動作と制約の設定
- 出力フォーマットと構造の定義
- 役割と専門性の確立
- 安全性ガイドラインとコンテンツポリシー
- コンテキストの設定と背景情報
クイックスタート
from langchain_anthropic import ChatAnthropic
from langchain_core.prompts import ChatPromptTemplate
from pydantic import BaseModel, Field
# Define structured output schema
class SQLQuery(BaseModel):
query: str = Field(description="The SQL query")
explanation: str = Field(description="Brief explanation of what the query does")
tables_used: list[str] = Field(description="List of tables referenced")
# Initialize model with structured output
llm = ChatAnthropic(model="claude-sonnet-5")
structured_llm = llm.with_structured_output(SQLQuery)
# Create prompt template
prompt = ChatPromptTemplate.from_messages([
("system", """You are an expert SQL developer. Generate efficient, secure SQL queries.
Always use parameterized queries to prevent SQL injection.
Explain your reasoning briefly."""),
("user", "Convert this to SQL: {query}")
])
# Create chain
chain = prompt | structured_llm
# Use
result = await chain.ainvoke({
"query": "Find all users who registered in the last 30 days"
})
print(result.query)
print(result.explanation)
詳細なパターンと実例
詳細なパターンのドキュメントは references/details.md にあります。上記のナビゲーション層では不十分な場合は、そのファイルを参照してください。
ベストプラクティス
- 具体的にする: 曖昧なプロンプトは一貫性のない結果を生み出します
- 説明ではなく例を示す: 例は説明よりも効果的です
- 構造化出力を使用する: 信頼性のために Pydantic でスキーマを適用します
- 徹底的にテストする: 多様で代表的な入力で評価します
- 迅速に反復する: 小さな変更が大きな影響を与えることがあります
- パフォーマンスを監視する: 本番環境で指標を追跡します
- バージョン管理を行う: プロンプトをコードとして適切にバージョン管理します
- 意図を文書化する: プロンプトがそのように構成されている理由を説明します
よくある落とし穴
- 過剰な設計: シンプルなプロンプトを試す前に複雑なプロンプトから始める
- 例の汚染: 対象のタスクに合わない例を使用する
- コンテキストのオーバーフロー: 過剰な例でトークン制限を超える
- 曖昧な指示: 複数の解釈の余地を残す
- エッジケースの無視: 特殊または境界となる入力でテストしない
- エラー処理の欠如: 出力が常に整形式であると仮定する
- ハードコードされた値: 再利用のためにプロンプトをパラメーター化しない
成功指標
プロンプトについて以下の KPI を追跡します。
- 精度: 出力の正確さ
- 一貫性: 類似した入力に対する再現性
- レイテンシ: 応答時間( P50、P95、P99 )
- トークン使用量: リクエストあたりの平均トークン数
- 成功率: 有効で解析可能な出力の割合
- ユーザー満足度: 評価とフィードバック
コメント
Markdown 対応