システムプロンプト
システムプロンプトとは?
システムプロンプトは、質問やタスクを提示する前に、Claudeにコンテキスト、指示、ガイドラインを提供する方法です。システムプロンプトを使用することで、会話の舞台を設定し、Claudeの役割、性格、トーン、またはユーザーの入力を理解し、応答するのに役立つその他の関連情報を指定できます。
システムプロンプトには以下のような内容を含めることができます:
- タスクの指示と目的
- 性格特性、役割、トーンのガイドライン
- ユーザー入力のコンテキスト情報
- 創造性の制約とスタイルのガイダンス
- 外部の知識、データ、参考資料
- ルール、ガイドライン、ガードレール
- 出力検証の基準と要件
システムプロンプトを使用する利点
よく練られたシステムプロンプトを組み込むことで、Claudeのパフォーマンスと出力品質を大幅に向上させることができます。主な利点は以下の通りです:
- ロールプレイとキャラクターの一貫性の向上:システムプロンプトを通じてClaudeに特定の役割や性格を割り当てると、会話全体を通してそのキャラクターをより効果的に維持し、キャラクターを保ちながらより自然で創造的な応答を示すことができます。
- ルールと指示への順守の向上:システムプロンプトは、Claudeがガイドラインをより良く理解し、従うのに役立ち、禁止されたタスクを実行したり、制限されたコンテンツを出力したり、与えられた指示から逸脱したりする可能性を低くします。
- コンテキスト理解の向上:システムプロンプトで関連する背景情報や参考資料を提供することで、Claudeがユーザーの入力をより良く理解し、より正確でコンテキストを意識した応答を生成できるようになります。
- 出力フォーマットのカスタマイズ:システムプロンプトを使用して、見出し、リスト、表、コードブロックなどの望ましい出力フォーマットを指定し、Claudeの応答が構造化され、ニーズに最適な方法で提示されるようにすることができます。
システムプロンプトは、Claudeの堅牢性を高め、望ましくない動作に対する耐性を高めることができますが、jailbreakやleakに対する完全な保護を保証するものではありません。しかし、Claudeの出力に対する追加のガイダンスと制御を提供します。
システムプロンプトの使用方法
Messages APIでシステムプロンプトを使用するには、system
パラメータに希望のシステムプロンプトテキストを設定します。APIコールの例を以下に示します:
import anthropic
client = anthropic.Client(api_key="YOUR_API_KEY")
response = client.messages.create(
model="claude-2.1",
system="スペイン語でのみ応答してください。", # <-- システムプロンプト
messages=[
{"role": "user", "content": "こんにちは、Claude!"} # <-- ユーザープロンプト
]
)
print(response.message)
詳細については、Messages APIドキュメントを参照してください。
プロンプト技術
ユーザープロンプトで使用するのと同じプロンプト技術を、代わりにシステムプロンプトに適用することができます。例えば、以下のようなことができます:
- 出力フォーマットの指定:システムプロンプト内でレスポンス例や望ましい出力パターンの指示を提供し、Claudeの動作を導きます。
- ドキュメント、ガイド、参考資料の提供:システムプロンプトに関連情報やRAGコンテンツを含めることで、Claudeがより情報に基づいた正確な応答を生成するのに役立ちます。
- XMLタグの使用、特に長いドキュメントの構造化:XMLタグを使用してシステムプロンプトをセクションに分け、明確さを向上させます。システムプロンプトに複数の長いドキュメントを組み込む場合は、マルチドキュメントXMLフォーマットを使用して、提供された情報をClaudeがより良く理解し、活用できるようにします。
よくある質問
システムプロンプトとユーザープロンプトのどちらを使用すべきかをどのように判断すればよいですか?
プロンプトはすべて実験的なものなので、両方の方法を試してみることをお勧めします!しかし一般的に、システムプロンプトはClaudeとの全体的なやり取りに関するガイダンスを提供する場所と考えることができ、user
ターンはやり取り自体の一部、または一度限りのタスクを達成したい場合の一部と考えることができます。
既存のユーザーのみのプロンプトをシステムプロンプトに変換するにはどうすればよいですか?
user
のみのプロンプトをシステムプロンプトに変換するには、ユーザーの入力の一部ではないコンテンツをMessages APIのsystem
パラメータに移動するだけです。これには、タスクの指示、性格のガイドライン、参考資料、または会話の舞台設定に役立つその他のコンテキスト情報を含めることができます。どのフィールドで何が最もうまくいくかを確認するために、実験することをお勧めします。
システムプロンプトはどこで使用できますか?
システムプロンプトは現在、Claude 3モデルとClaude 2.1でAPI、Console、Amazon BedrockのAPI、Google Cloud Vertex AIのAPIを通じて使用できます。現時点では、claude.aiではサポートされていません。
システムプロンプトを使用すると、プロンプトがjailbreak-proofやleak-proofになりますか?
Claudeは、トレーニング方法(例:RLHFやConstitutional AI)により、jailbreakや望ましくない動作に対してすでに高い耐性を持っていますが、システムプロンプトを使用することで、Claudeが指示やガイドラインに従う能力をさらに高めることができます。しかし、jailbreakやleakに対する完全な保護を保証するものではありません。