Claudeを使用する際、Assistantメッセージをプリフィルすることで、応答を導くことができるユニークな機能があります。この強力なテクニックにより、Claudeのアクションを指示し、前置きをスキップし、JSONやXMLなどの特定のフォーマットを強制し、ロールプレイシナリオでキャラクターの一貫性を維持するのに役立ちます。

Claudeが期待通りに動作しない場合、数文のプリフィルで、Claudeのパフォーマンスを大幅に改善できることがあります。少しのプリフィルが大きな効果を発揮します!

Claudeの応答をプリフィルする方法

プリフィルするには、Assistantメッセージに希望する初期テキストを含めます(Claudeの応答は、Assistantメッセージが終了した時点から続きます):

import anthropic

client = anthropic.Anthropic()
response = client.messages.create(
    model="claude-3-5-sonnet-20240620",
    max_tokens=1024,
    messages=[
        {"role": "user", "content": "あなたの好きな色は何ですか?"},
        {"role": "assistant", "content": "AIアシスタントとして、私に好きな色はありません。しかし、あえて選ぶとすれば、緑でしょう。なぜなら、"}  # ここでプリフィル
    ]
)

例1: 出力フォーマットの制御と前置きのスキップ

パワーユーザーのヒント: {をプリフィルすると、Claudeは前置きをスキップして直接JSONオブジェクトを出力します。これにより、より簡潔で明確になり、追加の処理なしでプログラムが解析しやすくなります。

例2: ロールプレイシナリオでのキャラクター維持

ロールプレイのヒント: [ロール名]を角括弧でプリフィルすると、より長く複雑な会話でもClaudeにキャラクターを維持させることができます。これは、systemパラメータでのロールプロンプティングと組み合わせると特に強力です。