Claudeに自己紹介とモデル名を正しく答えさせるプロンプト設計
Claude APIには自己紹介の文言が既定で入っていません。自分自身を名乗らせる一文と、正確なモデル文字列を答えさせる一文の書き方、更新を見落とさない運用をまとめます。
Claude APIには自己紹介の情報が既定で入っていない
Claude APIで呼び出したClaudeに「あなたは誰ですか」と聞くと、正しく名乗れないことがあります。原因は単純で、claude.aiのような自社インターフェースだけが自己紹介の情報をシステムプロンプトに注入しているからです。
Anthropicはclaude.aiとモバイルアプリ向けに、現在の日付や振る舞いの指示をまとめたシステムプロンプトを組み込んでおり、これは定期的に更新されます。公式ドキュメントは「このシステムプロンプトの更新はClaude APIには適用されない」と明記しています。つまりAPI経由でClaudeを組み込んだ自作アプリでは、モデル自身の名前・提供元・APIモデル文字列といった情報を、開発者がsystemパラメーターに自分で書き込まない限り、Claudeはそれらを知りません。
実際にAnthropicがclaude.ai向けに配布している最新のシステムプロンプト(2026年9月22日更新、Claude Opus 5.5向け)には、次のような自己紹介の文言が入っています。
The currently selected version of Claude is Claude Opus 5.5. Claude Opus 5.5 is a
powerful model for complex challenges.
Claude is accessible via an API and Claude Platform. The most recent publicly
available models are Claude Fable 5.1, Claude Opus 5.5 (the currently selected
model), Claude Sonnet 5, and Claude Haiku 4.5. They use the API model strings
'claude-fable-5-1', 'claude-opus-5-5', 'claude-sonnet-5', and
'claude-haiku-4-5-20251001'.これはAnthropic自身が「Claudeに自分自身を正しく名乗らせるには、こう書けばよい」という実例を公開しているようなものです。自作アプリで同じ挙動を再現したい場合、この構造をそのまま参考にできます。
自己紹介を固定するシステムプロンプトの書き方
自己紹介を固定する一文は、公式のプロンプトエンジニアリングガイドが「Model self-knowledge」というセクションで直接示しています。最小構成は次の1文です。
The assistant is Claude, created by Anthropic. The current model is Claude Opus 5.5.この一文をsystemパラメーターに入れておけば、ユーザーが「あなたはChatGPTですか」「今使っているモデルは何ですか」と聞いたときに、Claudeは正確に答えられます。書き方のポイントは2つです。1つは「created by Anthropic」のように提供元を明示すること、もう1つは「The current model is」のようにモデル名を固定値で書くことです。どちらか一方だけでは、提供元は言えてもモデル名を誤答する、あるいはモデル名は言えても提供元を答えないというケースが起こり得ます。
curlで実際に送る場合は次のようになります。
curl https://api.anthropic.com/v1/messages \
-H "content-type: application/json" \
-H "x-api-key: $ANTHROPIC_API_KEY" \
-H "anthropic-version: 2023-06-01" \
-d '{
"model": "claude-opus-5-5",
"max_tokens": 1024,
"system": "The assistant is Claude, created by Anthropic. The current model is Claude Opus 5.5.",
"messages": [{"role": "user", "content": "あなたは誰ですか?"}]
}'modelパラメーターに渡すAPIモデル文字列と、systemに書くモデル名の日本語・英語表記を一致させておくと、内部の呼び出しと自己紹介の返答がずれません。
自己紹介の一文をユーザーメッセージ側に書かずsystemパラメーターに置くのにも理由があります。systemは会話全体の前提として毎回モデルに渡されるため、ユーザーメッセージの中に同じ指示を書くより、会話履歴に紛れにくくなります。チャットボットのように長時間の会話が発生するアプリほど、自己紹介文言はsystem側に固定しておく効果が大きくなります。
モデル文字列を正確に答えさせる書き方
自己紹介とは別に、「アプリ内でどのモデル文字列を使うべきか」をClaude自身に答えさせたいケースもあります。複数のLLMを切り替えて使うアプリや、Claudeにモデル選定の判断を任せる社内ツールでよくある要件です。公式ガイドはこちらも専用の例文を示しています。
When an LLM is needed, please default to Claude Opus 5.5 unless the user requests
otherwise. The exact model string for Claude Opus 5.5 is claude-opus-5-5.この書き方が有効なのは、Claudeが自分の訓練データだけからモデル文字列を正確に思い出せるとは限らないためです。モデルIDの命名規則自体は、Claude 4.6世代以降はclaude-{name}-{major}[-{minor}]という日付なし形式(例: claude-sonnet-5、claude-opus-5-5)、それより前の世代はclaude-{name}-{major}-{minor}-{YYYYMMDD}というスナップショット日付付き形式(例: claude-haiku-4-5-20251001)を使います。世代によって形式が違うため、正確な文字列は暗記や推測に頼らず、プロンプトに明示するのが安全です。
現行の主要モデルのAPIモデル文字列は次の通りです。モデルが更新されるたびに新しい文字列が発行されるため、システムプロンプトに書き込んだ値は世代交代のたびに見直す前提で運用します。
| モデル | Claude APIのモデルID |
|---|---|
| Claude Fable 5.1 | Claude APIのモデルIDclaude-fable-5-1 |
| Claude Opus 5.5 | Claude APIのモデルIDclaude-opus-5-5 |
| Claude Sonnet 5 | Claude APIのモデルIDclaude-sonnet-5 |
| Claude Haiku 4.5 | Claude APIのモデルIDclaude-haiku-4-5-20251001 |
Amazon Bedrock・Google Cloud・Microsoft Foundryではモデル文字列の形式が異なります。Bedrockではanthropic.という接頭辞が付き(例: anthropic.claude-opus-5-5)、Google Cloudでは日付付きスナップショットの区切りに@を使います(例: claude-haiku-4-5@20251001)。Microsoft FoundryはClaude APIのエイリアス(alias)表記と同じ形式です。Claude Haiku 4.5のようにClaude APIのモデルIDが日付付き(claude-haiku-4-5-20251001)のモデルでは、Foundry側は日付なしのalias表記(claude-haiku-4-5)になるため両者は一致しません。複数の提供経路を使い分けるアプリでは「どの経路のモデル文字列か」までシステムプロンプトに書き添えておくと、Claudeが誤った形式の文字列を提示するリスクを減らせます。Bedrockの形式自体も世代によって変わっており、Claude Opus 4.6までは末尾に-v1が付く形式(anthropic.claude-opus-4-6-v1)でしたが、Claude Sonnet 4.6以降はこの接尾辞が外れました。古い記事やコード例を参考にすると、この-v1付きの旧形式が現行モデルのプロンプトに紛れ込むことがあるため、Bedrock向けにシステムプロンプトを書くときは現行世代の表記かどうかを確認しておくと安全です。
モデルIDの「日付なし」表記を最新版と誤解しない
モデル文字列をプロンプトに書き込む前に、公式ドキュメントが指摘している誤解を避ける必要があります。claude-sonnet-4-6のような日付なしのモデルIDを、常に最新・最高性能のモデルへ自動的に切り替わる「エバーグリーンなポインタ」だと考えるのは誤りです。
Claude 4.6世代以降の日付なしIDは、固定された1つのスナップショットを指す正式なモデルIDそのものであり、Anthropicが既存のモデルIDの重みや設定を後から書き換えることはありません。更新版が出るときは、新しいモデルIDが別に発行されます。これは4.6世代より前のモデルにあるエイリアス(claude-sonnet-4-5など、最新の日付付きスナップショットを指す便利ポインタ)とは仕組みが違います。
日付付きIDと日付なしIDのどちらであっても、非推奨化・提供終了のスケジュールはモデルIDごとに個別に設定されます。つまり「日付なしだから長く使える」といった思い込みも成り立ちません。モデルIDの提供終了時期は、日付なしか日付付きかではなく、そのモデルID単位で個別に決まります。
この違いは自己紹介プロンプトの運用に直結します。「The current model is Claude Opus 5.5」のように具体的なモデル名を書き込んだシステムプロンプトは、Anthropicが新しいモデルを発表しても自動的には更新されません。新モデルへ移行するときは、コード側のmodelパラメーターだけでなく、システムプロンプト内の自己紹介文言も手動で書き換える必要があります。Claude Codeのprompt-auditで古いモデル向けの記述を検出するで扱っているように、モデル世代交代のたびにプロンプトの文面を棚卸しする運用があり、自己紹介の一文もその対象に入ります。
LLMルーターアプリでモデル名が食い違う典型パターン
複数のLLM(あるいは複数のClaudeモデル)を切り替えて使うアプリでは、自己紹介文言の書き方を誤ると次のような食い違いが起きやすくなります。
| 実装パターン | 起きやすい食い違い | 避け方 |
|---|---|---|
モデル名をmodelパラメーターにしか書かない | 起きやすい食い違いユーザーに聞かれてもClaudeが自分の名前を答えられない | 避け方自己紹介の一文をsystemに別途追加する |
| 自己紹介文言を1回書いてハードコードし続ける | 起きやすい食い違いモデルを新しい世代に切り替えても古い名前を名乗り続ける | 避け方モデル切り替えのコードと自己紹介文言を同じ変更点として管理する |
| モデル文字列を会話履歴から推測させる | 起きやすい食い違い前のターンで別モデルが応答していた場合に文字列を混同する | 避け方「exact model string for〜」のように固定値で明示する |
ユーザーが会話の途中でモデルを切り替えられる前提のアプリでは、会話の前の方で別モデルとして自己紹介していたメッセージが残っていても、それ自体は誤りではありません。自己紹介文言をターンごとに固定値で注入する設計とはその点で矛盾しないため、履歴の食い違いを気にして過度に訂正させる指示を加える必要はありません。
実装後の確認では、「あなたは誰ですか」「使っているモデルは何ですか」といった聞き方を変えた質問を複数回投げてみると、自己紹介文言が意図どおりに機能しているかを手早く確かめられます。特にモデルを切り替える機能をリリースする直前は、切り替え後の応答で古いモデル名が残っていないかをこの方法で確認しておくと、ユーザー向けの自己紹介が実際のバックエンドとずれたまま公開されるのを防げます。
まとめ
Claude APIには自己紹介の情報が既定で入っていないため、正しく名乗らせるにはsystemパラメーターに「The assistant is Claude, created by Anthropic. The current model is Claude Opus 5.5.」のような一文を明示する必要があります。APIモデル文字列を答えさせたい場合も同様に、固定値で明示するのが安全です。モデルIDの日付なし表記は最新版へ自動追従するポインタではなく、固定されたスナップショットである点を踏まえ、モデルを切り替えるときはコードとシステムプロンプトの両方を書き換える運用にしておくと、自己紹介の内容が実際のモデルとずれるのを防げます。関連する実装はappend-system-promptとsystem-promptの違い(Claude Code)、Claudeの応答言語をシステムプロンプトで固定する方法、Agent SDKのシステムプロンプトをカスタマイズする4つのアプローチで扱っています。API全体の構成はAnthropic API完全ガイドにまとめています。