AgentSkillsCN

prompt-engineering

运用提示工程设计的最佳实践,不断提升提示质量。当用户提出“请优化提示”“我想写出更优质的提示”“请对提示进行评审”的需求,或就提示工程相关问题进行咨询时,可使用本工具。

SKILL.md
--- frontmatter
name: prompt-engineering
description: プロンプトエンジニアリングのベストプラクティスを適用してプロンプトを改善する。ユーザーが「プロンプトを改善して」「より良いプロンプトを書きたい」「プロンプトをレビューして」と依頼した時、またはプロンプトエンジニアリングについて質問した時に使用する。

プロンプトエンジニアリング ベストプラクティス

概要

プロンプトエンジニアリングは、LLMから望ましい出力を得るために、入力(プロンプト)を最適化する技術である。効果的なプロンプトは、モデルの能力を最大限に引き出し、タスクの成功率を大幅に向上させる。

なぜ重要か

  • リソース効率: ファインチューニングより低コスト・高速
  • 素早い反復: 即座に試行錯誤が可能
  • 一般知識の保持: 特定タスクに最適化しながら汎用性を維持
  • 透明性: プロンプトの変更が結果に与える影響を理解しやすい

基本原則

効果的なプロンプトを作成するための基本原則:

  1. 明確性: 曖昧さを排除し、期待する出力を具体的に指示する
  2. 文脈提供: タスクに必要な情報を十分に提供する
  3. 構造化: XMLタグや段落分けで情報を整理する
  4. 例示: 期待する出力形式を例で示す
  5. 段階的思考: 複雑なタスクは推論ステップを明示する

効果的なテクニック(優先順位順)

1. 明確で直接的な指示

曖昧な表現を避け、具体的に指示する。

悪い例: データを分析してください

良い例:

code
以下のCSVデータを分析し、以下の形式で出力してください:
1. 各カテゴリの平均値
2. 最大値と最小値
3. 外れ値の特定(平均±2標準偏差を超えるもの)

ポイント: 具体的なアクション、期待する出力形式、判断基準を明示する。

2. 例の使用(Few-shot Learning)

期待する入出力の例を2-5個提供する。

:

code
以下の形式でタスクを分類してください:

例1:
入力: "バグ修正が必要"
出力: {"type": "bug", "priority": "high"}

例2:
入力: "新機能の提案"
出力: {"type": "feature", "priority": "medium"}

実際のタスク:
入力: "ドキュメントの誤字修正"
出力:

ポイント: 多様なケースをカバーし、例の品質を重視する。

3. 思考プロセスの促進(Chain of Thought)

段階的な推論を促す。「ステップバイステップで考えて」を追加。

:

code
以下の問題を解いてください。解答前に:
1. 問題の理解と既知の情報の整理
2. 解決に必要なステップの特定
3. 各ステップの実行
4. 最終的な解答の提示

ポイント: 複雑な推論タスクで特に効果的。

4. XMLタグの活用

構造化されたコンテキストを提供する。

:

code
<document>
  <title>API仕様書</title>
  <content>...</content>
</document>

<review_criteria>
  - 完全性
  - 明確性
</review_criteria>

レビュー結果を<review></review>タグ内に出力してください。

ポイント: 意味のあるタグ名を使用し、情報の境界を明確化する。

5. ロール設定(System Prompts)

特定の役割や専門性を与える。

: あなたは10年以上の経験を持つシニアPythonエンジニアです。以下のコードをレビューし、セキュリティとパフォーマンスの観点から改善点を指摘してください。

ポイント: 専門知識の領域と評価基準を明示する。

6. 応答の事前入力(Prefilling)

期待される応答の開始部分を提供する。

:

code
User: 以下のデータをJSON形式で出力してください:
名前: 田中太郎, 年齢: 30, 職業: エンジニア
Assistant: {
  "name": "田中太郎",
  "age": 30,
  "occupation": "エンジニア"
}

ポイント: JSON、コードブロック、特定の形式の出力を促す。

7. プロンプトの連鎖

複雑なタスクを複数のステップに分割する。

:

code
ステップ1: 要件を分析し、主要機能をリストアップ
ステップ2: 各機能の技術的実装方法を提案
ステップ3: 実装の優先順位を決定

ポイント: 各ステップの出力を次のステップの入力として使用する。

8. 長文コンテキストの活用

大量の情報を扱う際のコツ。

テクニック:

  • 重要な情報をプロンプトの最初と最後に配置
  • XMLタグで情報を構造化
  • 参照したい情報を明示的に指示

: <documents></documents>タグ内の全ドキュメントを参照して、要約を作成してください。

ポイント: モデルは長文コンテキスト全体にアクセスできるが、構造化により精度が向上する。

クイックチェックリスト

プロンプト作成時に確認する項目:

  • 指示は具体的で明確か?
  • 期待する出力形式を示しているか?
  • 必要なコンテキストを提供しているか?
  • 例を含めるべきタスクか?(分類、フォーマット変換など)
  • 複雑な推論を要するか?(Chain of Thoughtが必要か?)
  • 情報は構造化されているか?(XMLタグなど)
  • ロールや専門性を設定すべきか?
  • 判断基準や評価軸を明示しているか?

詳細リファレンス

より詳細な情報は以下のファイルを参照:

  • コアテクニック詳細: references/core-techniques.md

    • 明確で直接的な指示
    • 例の使用(Multishot)
    • 思考プロセスの促進
    • XMLタグの活用
    • ロール設定
  • 高度なテクニック: references/advanced-techniques.md

    • 応答の事前入力
    • プロンプトの連鎖
    • 長文コンテキストのコツ
    • Few-shot vs Zero-shot
    • Self-Consistency
    • Tree of Thoughts
  • アンチパターン: references/anti-patterns.md

    • 避けるべきパターンと理由
    • よくある失敗例

実装例

実際の使用例は以下のファイルを参照:

  • 改善前後の比較: examples/before-after-examples.md

    • 具体的な改善例と効果
  • ユースケース別の例: examples/use-case-examples.md

    • コード生成
    • データ分析
    • 文書作成
    • 質問応答
    • 推論タスク

使用方法

このスキルは以下の場合に自動的に呼び出される:

  • ユーザーが「プロンプトを改善して」と依頼した時
  • 「より良いプロンプトを書きたい」と述べた時
  • 「プロンプトをレビューして」と要求した時
  • プロンプトエンジニアリングについて質問した時

手動で呼び出す場合: /prompt-engineering

プロンプト改善の実践

ユーザーのプロンプトを改善する際の手順:

  1. 現在のプロンプトを分析: 目的、コンテキスト、期待する出力を理解
  2. 適用可能なテクニックを特定: 上記8つのテクニックから選択
  3. 改善版を提案: Before/Afterを明示
  4. 改善ポイントを説明: なぜその変更が効果的かを説明
  5. 必要に応じて詳細リファレンスを提供: references/やexamples/を紹介

重要な注意事項

  • 簡潔さを重視: 過度に複雑なプロンプトは避ける
  • 反復テスト: プロンプトは試行錯誤で改善する
  • タスクに応じた選択: すべてのテクニックを常に使う必要はない
  • 測定可能な改善: 可能な限り改善の効果を測定する