OpenAI SDK互換性機能に関するフィードバックやバグはこちらから報告してください。

始める前に

この互換性レイヤーは、最小限の開発労力でモデル機能をテストおよび比較することを目的としており、ほとんどのユースケースでは長期的または本番環境に対応したソリューションとは見なされていません。最高の体験とAnthropicのAPI完全な機能セット(PDF処理引用拡張思考プロンプトキャッシング)へのアクセスには、ネイティブのAnthropic APIを使用することをお勧めします。

OpenAI SDKの使用を開始する

OpenAI SDK互換性機能を使用するには、以下が必要です:

  1. 公式OpenAI SDKを使用する
  2. 以下を変更する
    • ベースURLをAnthropicのAPIを指すように更新する
    • APIキーをAnthropic APIキーに置き換える
    • モデル名をClaudeモデルを使用するように更新する
  3. サポートされている機能について以下のドキュメントを確認する

クイックスタート例

from openai import OpenAI

client = OpenAI(
    api_key="ANTHROPIC_API_KEY",  # AnthropicのAPIキー
    base_url="https://api.anthropic.com/v1/"  # AnthropicのAPIエンドポイント
)

response = client.chat.completions.create(
    model="claude-opus-4-20250514", # Anthropicモデル名
    messages=[
        {"role": "system", "content": "You are a helpful assistant."},
        {"role": "user", "content": "Who are you?"}
    ],
)

print(response.choices[0].message.content)

OpenAI互換性の重要な制限事項

API動作

OpenAIを使用する場合との最も大きな違いは次のとおりです:

  • 関数呼び出しのstrictパラメータは無視されます。つまり、ツール使用のJSONは提供されたスキーマに従うことが保証されません。
  • 音声入力はサポートされていません。単に無視され、入力から削除されます
  • プロンプトキャッシングはサポートされていませんが、Anthropic SDKではサポートされています
  • システム/開発者メッセージは会話の先頭に引き上げられて連結されます。Anthropicは単一の初期システムメッセージのみをサポートしているためです。

サポートされていないほとんどのフィールドはエラーを生成するのではなく、静かに無視されます。これらはすべて以下に記載されています。

出力品質に関する考慮事項

プロンプトに多くの調整を行った場合、それはOpenAIに特化して調整されている可能性が高いです。Anthropic Consoleのプロンプト改善ツールを良い出発点として検討してください。

システム/開発者メッセージの引き上げ

OpenAI SDKへの入力のほとんどはAnthropicのAPIパラメータに直接マッピングされますが、1つの明確な違いはシステム/開発者プロンプトの扱いです。これら2つのプロンプトはOpenAIを通じてチャット会話全体に配置できます。Anthropicは初期システムメッセージのみをサポートしているため、すべてのシステム/開発者メッセージを取得し、それらの間に単一の改行(\n)を入れて連結します。この完全な文字列は、メッセージの先頭に単一のシステムメッセージとして提供されます。

拡張思考のサポート

thinkingパラメータを追加することで拡張思考機能を有効にできます。これにより複雑なタスクに対するClaudeの推論が向上しますが、OpenAI SDKはClaudeの詳細な思考プロセスを返しません。Claudeのステップバイステップの推論出力へのアクセスを含む完全な拡張思考機能については、ネイティブのAnthropic APIを使用してください。

response = client.chat.completions.create(
    model="claude-opus-4-20250514",
    messages=...,
    extra_body={
        "thinking": { "type": "enabled", "budget_tokens": 2000 }
    }
)

レート制限

レート制限はAnthropicの/v1/messagesエンドポイントの標準制限に従います。

詳細なOpenAI互換API対応状況

リクエストフィールド

シンプルなフィールド

フィールドサポート状況
modelClaudeモデル名を使用
max_tokens完全サポート
max_completion_tokens完全サポート
stream完全サポート
stream_options完全サポート
top_p完全サポート
parallel_tool_calls完全サポート
stop空白以外のすべての停止シーケンスが機能
temperature0から1(含む)の間。1より大きい値は1に制限されます。
n正確に1でなければならない
logprobs無視
metadata無視
response_format無視
prediction無視
presence_penalty無視
frequency_penalty無視
seed無視
service_tier無視
audio無視
logit_bias無視
store無視
user無視
modalities無視
top_logprobs無視
Reasoning_effort無視

tools / functions フィールド

messages 配列フィールド

レスポンスフィールド

フィールドサポート状況
id完全サポート
choices[]常に長さ1になります
choices[].finish_reason完全サポート
choices[].index完全サポート
choices[].message.role完全サポート
choices[].message.content完全サポート
choices[].message.tool_calls完全サポート
object完全サポート
created完全サポート
model完全サポート
finish_reason完全サポート
content完全サポート
usage.completion_tokens完全サポート
usage.prompt_tokens完全サポート
usage.total_tokens完全サポート
usage.completion_tokens_details常に空
usage.prompt_tokens_details常に空
choices[].message.refusal常に空
choices[].message.audio常に空
logprobs常に空
service_tier常に空
system_fingerprint常に空

エラーメッセージの互換性

互換性レイヤーはOpenAI APIと一貫したエラーフォーマットを維持します。ただし、詳細なエラーメッセージは同等ではありません。エラーメッセージはログ記録とデバッグにのみ使用することをお勧めします。

ヘッダーの互換性

OpenAI SDKは自動的にヘッダーを管理しますが、ヘッダーを直接操作する必要がある開発者向けに、Anthropic APIがサポートするヘッダーの完全なリストを以下に示します。

ヘッダーサポート状況
x-ratelimit-limit-requests完全サポート
x-ratelimit-limit-tokens完全サポート
x-ratelimit-remaining-requests完全サポート
x-ratelimit-remaining-tokens完全サポート
x-ratelimit-reset-requests完全サポート
x-ratelimit-reset-tokens完全サポート
retry-after完全サポート
request-id完全サポート
openai-version常に 2020-10-01
authorization完全サポート
openai-processing-ms常に空