これは、なにをしたくて書いたもの?
Anthoripic Claudeのプロンプトベストプラクティスを読んでみます。
Anthoripic Claude Prompting best practices
こちらのドキュメントのことです。Opus 4.6、Sonnet 4.5、Haiku 4.5時点のものですね。
Prompting best practices - Claude API Docs
モデルのラインナップが変わると、またベストプラクティスが変わるのだとは思いますが。
まずは自分が理解するために、要点を書いていきます。
一般的な原則
- 指示は明確にすること
- 望む結果を具体的に伝えること
- 曖昧な指示でモデルに推測させないこと
- コンテキストを追加すること(より意図を理解した動作が期待できる)
- なぜその行動が必要なのかを説明する
- 指示の背後にある背景や動機を伝える
- 例と詳細に注意する
- 例として挙げたものが期待する振る舞いに沿っているか注意すること
- 避けるべき行動例を挙げていないか注意すること
- 長期的な推論と状態の追跡
- コンテキスト制限の管理
- Claudeはコンテキスト制限に近づくとタスクを終了する場合があるので、プロンプトに終了しないように指示を追加する
- マルチコンテキストウィンドウワークフローの採用
- 状態管理のベストプラクティスに従う
- 状態データにJSONその他の構造化形式を使用する
- 進捗メモには非構造化テキストを使用する
- 状態追跡にはGitを使用する
- 段階的な進捗を強調する
- コンテキスト制限の管理
特定の状況に対するガイダンス
- 冗長さのバランスをとる
- ツールを使用した後に要約を報告せず次のアクションに進むことがあるので、情報提供して欲しい場合はプロンプトに追加すること
- ツールを使用して欲しい場合は明確に指示すること
- 「この関数についてなにか改善提案はありますか?」よりも「この関数のパフォーマンスを改善してください」の方がよい
- ツールの利用とトリガー
- ツールを使用して欲しいからといって強調しすぎる表現は避けること
- 「重要:このツールは〜の時に使用してください」よりも「このツールは〜の時に使用してください」の方がよい
- Ops 4.6を使っている場合は過剰な指示は避けること
- 回答の形式を制御する
- 調査と情報収集(エージェントの探索能力を使い、複数の情報源から適切な情報を発見するには)
- 明確な成功基準を提供すること
- 情報源の検証を促すこと
- 複雑なタスクの場合は構造化されたアプローチを使用すること
- 複数の仮説を立て、進捗記録に信頼度のレベルを記録して精度向上を図るなど
- この時にアプローチと計画を定期的に自己確認させる
- 情報を永続化して透明性を確保する
- サブエージェントオーケストレーション
- 明確に定義されたサブエージェントツールを確保する
- Claudeは明確な指示がなくても適切に委任されるため、Claudeに任せる
- サブエージェントの過度な利用に注意
- 特にOps 4.6はサブエージェントを強く推奨しており、単純なタスクでもサブエージェントを使用することがある
- 自分自身のモデルを教える
- Claudeがアプリケーション内で正しく識別されるようにしたい場合、または特定のAPI文字列を使用する場合は使用しているモデルがClaudeまたはClaudeの特定のモデルであることをプロンプトで指示する
- 思考
- 拡張思考が無効になっている場合、「think(考える)」やその派生語に敏感になる
- 信じる、評価するなど似た意味の別の言葉に置き換えること
- 思考、拡張思考能力を活用する
- Claudeはツールを使った後の思考や複雑な多段階推論といったタスクに特に役立つ思考力を備えている
- 最初の思考や拡張思考をガイドすることでより良い結果が得られる
- 「ツールの結果を受け取った後はその品質を慎重に検討し、次の最適なステップを確認して進めること。よく考えて計画を立て、反復し最善の行動を取ること」など
- 思考についてはプロンプトで制御可能
- 大規模または複雑のプロンプトの場合、モデルが想定上に思考している場合はガイダンスを加える
- 「拡張思考は遅延を生むため、回答の質の向上に意味がある場合にのみ使うべきだ。典型的には多段階の推論を必要とする問題に使用する。判断に迷った場合は、直接レスポンスを返すこと」など
- ドキュメント作成をClaudeに任せる
- 画像処理やデータ抽出もClaudeは可能
- ツールを並列に呼び出す
- 調査タスクや複数ファイルの読み取り、Bashコマンドの実行など並列実行が可能
- プロンプトで指示するだけで簡単に並列化でき、並列度や休止時間なども制御できる
- 生成するファイルの削減
- 熱心すぎる
- Ops 4.6は余分なファイル、不要な抽象化の追加、要求されていない柔軟性の組み込みなどの過剰なエンジニアリングを行うことがある
- このような動作が望ましくない場合は、最低限の解決策とするようにガイダンスを追加する
- フロントエンドデザイン
- Ops 4.5および4.6はWebアプリケーションにおけるフロントエンドの設計ができる
- ただしガイダンスがない場合はデフォルトで汎用的なパターンに陥り、ユーザーが「AIスロップ」と呼ぶような外観のものを作ることがある
- このようなことを避け、独創的なデザインにするにはテーマや方向性をプロンプトで指示すること
- テストの合格とハードコーディングに集中しすぎないようにする
- ハルシネーションの最小化
- ハルシネーションを最小限にするには、質問に回答する前に推測ではなく実際のファイルや根拠を確認するように指示すること
ざっくりこんな感じでしょうか。