ホーム / 学習 / Anthropic Python SDK:インストール、base_urlの設定、ストリーミング、エラー処理
PythonでのClaude。優雅なリボン状の蛇の曲線がコードページを取り巻き、小さなAPIソケットにつながっています。

Anthropic Python SDK:インストール、base_urlの設定、ストリーミング、エラー処理

この anthropic パッケージは、Claude API向けのAnthropic公式Pythonクライアントです。認証、再試行、ストリーミング、型付きエラーを処理し、どのAnthropic互換エンドポイントでも変更せずに動作します。設定するのは base_url (または ANTHROPIC_BASE_URL)だけで、残りのコードはそのまま使えます。

インストール

ターミナル
pip install anthropic

1.xリリースは、次の環境で動作します: httpx2 また、Python 3.10以降が必要です。独自のHTTPクライアントを渡す場合は、SDKの次のものを使ってください: DefaultHttpxClient これにより、デフォルトのタイムアウトと接続数制限が維持されます。

クライアントを作成する

app.py
import anthropic

client = anthropic.Anthropic(
    api_key="your_key",   # default: ANTHROPIC_API_KEY
    base_url="https://aiprimetech.io",    # default: ANTHROPIC_BASE_URL, else https://api.anthropic.com
)

base_url はホストのルートです。SDKが次のパスを追加します: /v1/messages この追加はSDK自身が行うため、 https://aiprimetech.io/v1 を指定すると、次のようになります: /v1/v1/messages および 404 page not found。両方の変数を環境に設定してあれば、 anthropic.Anthropic() に引数を渡す必要はまったくありません:

ターミナル
export ANTHROPIC_API_KEY=your_key
export ANTHROPIC_BASE_URL=https://aiprimetech.io

メッセージを送信する

app.py
message = client.messages.create(
    model="claude-sonnet-5",
    max_tokens=1024,
    messages=[{"role": "user", "content": "Summarise TCP slow start in two sentences."}],
)

for block in message.content:
    if block.type == "text":
        print(block.text)

print(message.usage.input_tokens, message.usage.output_tokens)
print(message._request_id)   # log this with any failure report

content はブロック(テキスト、思考、ツール使用)のリストなので、次を確認してください: block.type 次を無条件に読み取るのではなく、 content[0].text 内容を確認してください。

レスポンスをストリーミングする

stream.py
with client.messages.stream(
    model="claude-sonnet-5",
    max_tokens=16000,
    messages=[{"role": "user", "content": "Write a short story about a lighthouse."}],
) as stream:
    for text in stream.text_stream:
        print(text, end="", flush=True)
    final = stream.get_final_message()

入力が長い場合、出力が長い場合、または次の値が大きい場合は、ストリーミングを使ってください: max_tokens:単一の非ストリーミングリクエストはタイムアウト時間内に完了する必要がありますが、ストリーミングではその必要はありません。 messages.create(..., stream=True) は、ヘルパーが不要な場合に生のイベントイテレーターを提供します。

非同期クライアント

async_app.py
import asyncio, anthropic

client = anthropic.AsyncAnthropic(base_url="https://aiprimetech.io")
limit = asyncio.Semaphore(3)   # stay within your key's concurrency

async def ask(question: str) -> str:
    async with limit:
        msg = await client.messages.create(
            model="claude-haiku-4-5",
            max_tokens=512,
            messages=[{"role": "user", "content": question}],
        )
        return next(b.text for b in msg.content if b.type == "text")

async def main():
    answers = await asyncio.gather(*(ask(q) for q in ["What is DNS?", "What is BGP?"]))
    print(answers)

asyncio.run(main())

セマフォは重要です。次を使って数百件のリクエストを一度に送信すると、 asyncio.gather 次のエラーの最も一般的な原因になります: Concurrency limit exceeded これは、Pythonクライアントでよく見られるエラーです。

タイムアウトとリトライ

デフォルト設定:リクエストごとのタイムアウトは10分、指数バックオフによる自動再試行は2回です。SDKは接続エラー、408、409、429、および5xxレスポンスを再試行します。タイムアウトも再試行されるため、最悪の場合の実経過時間は、タイムアウト時間に試行回数を掛けた値になります。

app.py
client = anthropic.Anthropic(base_url="https://aiprimetech.io", timeout=60.0, max_retries=4)

# override for one call only
client.with_options(timeout=300.0).messages.create(
    model="claude-opus-5-5",
    max_tokens=4000,
    messages=[{"role": "user", "content": "Review this design doc..."}],
)

エラー処理

状態 例外 リトライするか
400anthropic.BadRequestErrorいいえ:リクエストを修正
401anthropic.AuthenticationErrorいいえ:キーが不正または未設定
403anthropic.PermissionDeniedErrorなし
404anthropic.NotFoundErrorいいえ:モデルIDまたはURLを確認
429anthropic.RateLimitErrorはい:しばらく待ってから
5xx(529の過負荷エラーを含む)anthropic.InternalServerErrorはい
ネットワーク障害anthropic.APIConnectionErrorはい
タイムアウトanthropic.APITimeoutErrorはい、またはストリーミングを使用
errors.py
try:
    message = client.messages.create(model="claude-sonnet-5", max_tokens=1024,
                                      messages=[{"role": "user", "content": "Hi"}])
except anthropic.NotFoundError as e:
    print("Bad model ID or URL:", e.message)
except anthropic.RateLimitError as e:
    print("Rate limited, retry after", e.response.headers.get("retry-after"))
except anthropic.APIStatusError as e:
    print(e.status_code, e.type, e.message)
except anthropic.APIConnectionError:
    print("Network problem")

まず具体的なクラスを捕捉し、 APIStatusError は最後に捕捉してください。広範囲をまとめて捕捉する単一の except では、再試行する価値のあるエラーと、コードの変更が必要なエラーの違いが分からなくなります。 e.type は、次のようなAPIのエラー種別文字列を返します: rate_limit_error または overloaded_error.

モデルID

モデルID 用途
claude-sonnet-5コーディングとエージェント作業の標準モデル:高速、高性能、中程度の価格。
claude-opus-5-5より難しい推論、大規模なリファクタリング、長時間のエージェント実行。
claude-fable-5-1最も高性能で最も高価。最も難しいタスクに絞って使いましょう。
claude-haiku-4-5低価格で高速:タイトル、要約、分類、小さな処理。

client.models.list() は、エンドポイントが提供するモデルを返すため、使用前にIDを確認できます。IDは記載どおりに使い、日付の接尾辞は付けないでください。

ゲートウェイでのトラブルシューティング

表示される内容 原因 対処方法
NotFoundError 置き換え先: 404 page not found/v1 の提供先: base_urlホストのルートを使用
AuthenticationErrorプロセスにキーが設定されていない、または空白を含めて貼り付けられている表示する値: len(os.environ["ANTHROPIC_API_KEY"])
RateLimitError: Concurrency limit exceeded for user同時実行中のリクエストが多すぎる使用するもの: asyncio.Semaphore 上記のとおり
APITimeoutError 長時間の処理で発生非ストリーミングリクエストがタイムアウト時間を超えて実行されているストリーミングを使うか、次の値を増やす: timeout
InternalServerError: No available accounts上流サービスの一時的な処理能力不足SDKに再試行させる。次の値を増やす: max_retries
Insufficient account balance残高不足チャージ

モデル側のエラーについて詳しくは、こちらをご覧ください: Claude APIエラーガイド.

よくある質問

Anthropic Python SDKをインストールするには?
pip install anthropicを実行します。バージョン1.xにはPython 3.10以降が必要です。
Anthropic Python SDKでカスタムベースURLを設定するには?
anthropic.Anthropic()にbase_urlを渡すか、ANTHROPIC_BASE_URLを設定します。ホストのルートを指定してください。SDKが/v1/messagesを追加します。
デフォルトのタイムアウトと再試行回数は?
リクエストごとに10分、指数バックオフによる再試行は2回です。接続エラー、408、409、429、および5xxが対象です。
Python SDKでストリーミングするには?
with client.messages.stream(...) as stream:を使い、stream.text_streamを反復処理します。stream.get_final_message()は完全なメッセージを返します。
数分でClaudeの利用を開始

APIキーを取得 — Anthropicアカウントもウェイトリストへの登録も不要です。

APIキーを取得

AI Prime Techは独立したAPIゲートウェイです。Anthropicとの提携関係はなく、同社の承認を受けておらず、同社の再販業者でもありません。Claudeおよび関連するモデル名は、それぞれの所有者の商標です。

Claude APIのその他のガイド

Claude APIキーの取得方法Claude API の料金を解説Claude APIを最も安く利用する方法Claude APIでCursorを無制限に利用Claude Codeへの無制限アクセスClaude APIゲートウェイとAnthropicへの直接接続の比較OpenAI互換API経由でClaudeを使うClaude モデルを解説:Claude Opus、Sonnet、Haiku、Fable のモデル比較 — すべての Claude API モデル、Anthropic のモデル名と料金(2026)暗号資産でClaude APIの料金を支払うウェイティングリストなしでClaude APIを利用Claudeのトークン使用量を削減する方法Claude APIでClineを無制限に利用Claude APIでRoo Codeを無制限に利用JetBrains IDEでClaudeを無制限に利用Claude APIでAiderを無制限に使うVS CodeでClaudeを無制限に利用Claude向けのOpenCode設定:opencode.jsonの設定、モデル、よくあるエラーClaudeでHermesエージェントを無制限に実行するClaudeでOpenClawを無制限に実行Anthropic互換APIとはClaude CodeのAPIキー — ANTHROPIC_API_KEY:取得方法、設定方法、代わりにclaude setup-tokenを使うべき場合Claude Code APIのコスト — 料金と削減方法Claude APIエラーを解説:サーバーエラー500、過負荷529、レート制限429、不正なリクエスト400 — それぞれの解決方法Claude APIクレジットの購入方法 — Claudeクレジットがどの「Claudeアカウント購入」のオファーよりも優れている理由Claudeの無料API:無料のClaude APIキーはあるのか、2026に実際に無料で使えるものは?Claude APIとClaude Pro/Maxサブスクリプション — どちらを選ぶべきかClaudeでCodex CLIを実行するClaudeをn8nに接続するLiteLLMからClaudeへのルーティングKilo CodeでClaudeを使うGitHub CopilotにClaudeを導入するゲートウェイ経由でZedをClaudeに接続するCherry StudioをClaudeに接続LangChainのChatAnthropic:インポート、base_url、ストリーミング、ツール、エラーVercel AI SDKでClaudeを使用:createAnthropicのbaseURL、ストリーミング、問題の修正ClaudeでFactory Droidを実行Claude Code APIの仕組みを解説アプリケーションへのClaude APIの統合Claudeを無制限に利用する方法 — 「Claude Codeのクラック版」が存在しない理由

その他の Claude API ガイド

Anthropic互換APIとはClaude APIクレジットの購入方法Claude APIを最も安く利用する方法Claude APIエラーを解説:サーバーエラー500、過負荷529、レート制限429、不正なリクエスト400 — それぞれの解決方法Claudeの無料API:無料のClaude APIキーはあるのか、2026に実際に無料で使えるものは?アプリケーションへのClaude APIの統合Claude モデルを解説:Claude Opus、Sonnet、Haiku、Fable のモデル比較 — すべての Claude API モデル、Anthropic のモデル名と料金(2026)Claude API の料金を解説Claude APIゲートウェイとAnthropicへの直接接続の比較Claude APIとClaude Pro/Maxサブスクリプション — どちらを選ぶべきか暗号資産でClaude APIの料金を支払うウェイティングリストなしでClaude APIを利用Claude Code APIの仕組みを解説Claude Code APIのコスト — 料金と削減方法Claude CodeのAPIキー — ANTHROPIC_API_KEY:取得方法、設定方法、代わりにclaude setup-tokenを使うべき場合Claudeを無制限に利用する方法Claude API キーの取得方法Claudeのトークン使用量を削減する方法OpenAI SDK で Claude を使う:OpenAI 互換エンドポイント、ストリーミング、ツール、制限ゲートウェイ経由でHermes AgentとClaudeを使う:カスタムプロバイダーの設定、コスト管理、問題の解決方法ClaudeでOpenClawを無制限に実行Claude APIへの無制限アクセスとは無制限のClaude APIキーを取得する方法Claude Codeを無制限に利用 — トークン制限なしClaude Opus 4.8への無制限アクセスClaudeを無制限に利用 — プランと料金ゲートウェイ経由でAiderとClaudeを使う:ANTHROPIC_API_BASE、設定ファイル、アーキテクトモード、問題の解決方法Cherry StudioをClaudeに接続Claude Codeへの無制限アクセスClaude APIでClineを無制限に利用カスタムプロバイダーでCodex CLIを使う:config.toml、GPTとClaudeのモデル、IDE拡張機能、問題の解決方法Claudeの無制限アクセスでCursorを使うClaudeでFactory Droidを実行ゲートウェイ経由でGitHub Copilot ChatとClaudeを使う:Custom Endpointの設定、エージェントモード、問題の解決方法JetBrains IDEでClaudeを無制限に利用Kilo CodeでClaudeを使うLangChainのChatAnthropic:インポート、base_url、ストリーミング、ツール、エラーLiteLLMからClaudeへのルーティングClaudeをn8nに接続するClaude向けのOpenCode設定:opencode.jsonの設定、モデル、よくあるエラーClaude APIでRoo Codeを無制限に利用Vercel AI SDKでClaudeを使用:createAnthropicのbaseURL、ストリーミング、問題の修正VS CodeでClaudeを無制限に利用ゲートウェイ経由でZedをClaudeに接続する