AIコーディング 2026.04.22
claude-3-haiku-20240307エラー解決|廃止モデルIDを自動検知するPythonスクリプト
発生するエラーの確認
# エラーが出るコード(廃止済みモデルID)
import anthropic
client = anthropic.Anthropic()
try:
message = client.messages.create(
model="claude-3-haiku-20240307", # ← 廃止済み
max_tokens=1024,
messages=[{"role": "user", "content": "Hello"}]
)
except anthropic.NotFoundError as e:
print(e)
# Error: {"type":"not_found_error","message":"model: claude-3-haiku-20240307"}
エラーは404 NotFoundError で、モデルIDが存在しないと返ってきます。コードは正しいのにモデルが廃止されているだけです。
2026年の現行Haikuモデル一覧
| 旧ID(廃止) | 現行ID | 料金変更 |
|---|---|---|
| claude-3-haiku-20240307 | claude-haiku-4-5-20251001 | $0.25/$1.25 → $0.80/$4.00 |
| claude-3-sonnet-20240229 | claude-sonnet-4-5 | 価格変更あり |
| claude-3-5-haiku-20241022 | claude-haiku-4-5-20251001 | 現行に統合 |
⚠️ 料金も変わっているため、コスト試算の更新も必要です。
Step 1:コードベースの廃止IDを検索する
# プロジェクト全体で廃止されたモデルIDを検索
grep -rn "claude-3-haiku-20240307" . \
--include="*.py" \
--include="*.ts" \
--include="*.js" \
--include="*.env" \
--include="*.yaml" \
--include="*.json"
# その他の廃止IDも合わせて確認
grep -rn \
-e "claude-3-haiku-20240307" \
-e "claude-3-sonnet-20240229" \
-e "claude-instant-1" \
-e "claude-2\." \
. --include="*.py" --include="*.ts" --include="*.env"
# 検索結果例:
# ./src/api/chat.py:15: model="claude-3-haiku-20240307",
# ./scripts/batch.py:8: model="claude-3-haiku-20240307",
# ./.env:3:CLAUDE_MODEL=claude-3-haiku-20240307
Step 2:修正とモデルID管理の改善
シンプルな修正(最速)
# ❌ 廃止
message = client.messages.create(
model="claude-3-haiku-20240307",
...
)
# ✅ 現行
message = client.messages.create(
model="claude-haiku-4-5-20251001",
...
)
推奨:環境変数で管理する
# config.py
import os
# 環境変数から読む。設定なければデフォルト値を使う
CLAUDE_HAIKU = os.environ.get("CLAUDE_HAIKU_MODEL", "claude-haiku-4-5-20251001")
CLAUDE_SONNET = os.environ.get("CLAUDE_SONNET_MODEL", "claude-sonnet-4-5")
CLAUDE_OPUS = os.environ.get("CLAUDE_OPUS_MODEL", "claude-opus-5")
# 使い方
# import config
# model=config.CLAUDE_HAIKU
# .env ファイル(.gitignoreに追加すること)
CLAUDE_HAIKU_MODEL=claude-haiku-4-5-20251001
CLAUDE_SONNET_MODEL=claude-sonnet-4-5
CLAUDE_OPUS_MODEL=claude-opus-5
# 一括置換(バックアップを取ってから実行)
# git stash または cp -r . ../backup してから:
find . -name "*.py" -exec sed -i \
's/claude-3-haiku-20240307/claude-haiku-4-5-20251001/g' {} \;
find . -name "*.ts" -exec sed -i \
's/claude-3-haiku-20240307/claude-haiku-4-5-20251001/g' {} \;
Step 3:フォールバック付きのAPIクライアント
# robust_client.py
import anthropic
import os
from typing import Optional
# モデルの優先順位(廃止されたら次を試す)
HAIKU_MODELS = [
"claude-haiku-4-5-20251001", # 最新(優先)
"claude-3-5-haiku-20241022", # 一世代前(フォールバック)
]
def call_with_fallback(
prompt: str,
models: list[str] = HAIKU_MODELS,
max_tokens: int = 1024,
) -> Optional[str]:
"""モデルが廃止された場合に次のモデルで再試行"""
client = anthropic.Anthropic()
for model in models:
try:
response = client.messages.create(
model=model,
max_tokens=max_tokens,
messages=[{"role": "user", "content": prompt}]
)
return response.content[0].text
except anthropic.NotFoundError:
print(f"⚠️ モデル {model} が廃止されています。次を試します...")
continue
except anthropic.APIError as e:
print(f"❌ APIエラー: {e}")
raise
raise RuntimeError("利用可能なモデルがありません。モデルIDを更新してください")
# 使用例
result = call_with_fallback("Pythonのリスト内包表記を説明して")
print(result)
廃止を事前に検知するヘルスチェック
# health_check.py - アプリ起動時に実行してモデルIDを検証
import anthropic
import os
import sys
def verify_model_ids() -> bool:
"""設定されたモデルIDが有効かチェック"""
client = anthropic.Anthropic()
models_to_check = [
os.environ.get("CLAUDE_HAIKU_MODEL", "claude-haiku-4-5-20251001"),
os.environ.get("CLAUDE_SONNET_MODEL", "claude-sonnet-4-5"),
]
all_ok = True
for model_id in models_to_check:
try:
# 最小限のリクエストでモデルIDを確認
client.messages.create(
model=model_id,
max_tokens=5,
messages=[{"role": "user", "content": "test"}]
)
print(f"✅ {model_id}: OK")
except anthropic.NotFoundError:
print(f"❌ {model_id}: 廃止済み。環境変数を更新してください")
all_ok = False
return all_ok
if __name__ == "__main__":
if not verify_model_ids():
print("\n❌ モデルIDを更新してから再起動してください")
print("最新のモデルID: https://docs.anthropic.com/en/docs/about-claude/models")
sys.exit(1)
print("\n✅ 全モデルID確認完了")
あわせて読みたい
- Anthropic SDK Python v0.98・TypeScript v0.93アップグレードガイド
- Anthropic APIアカウント停止時の対応|影響確認コードと復旧手順
- 【2026年版】Claude料金プラン完全比較表|API・Pro・Teamの月額コスト計算式