
OpenAI SDK で Claude を使う:OpenAI 互換エンドポイント、ストリーミング、ツール、制限
OpenAI SDK向けに書かれたコードは、書き直さずにClaudeを呼び出せます。設定するのは base_url で、接続先はゲートウェイの /v1です。ゲートウェイキーとClaudeモデルIDを使用してください。エンドポイントはChat Completionsリクエストを受け付け、同じ形式でストリーミングし、関数呼び出しをサポートします。Claudeの一部の機能はAnthropicのネイティブ形式でのみ利用できます。切り替えるべきタイミングについては、最後のセクションで説明します。
エンドポイントの基本情報
| 項目 | 値 |
|---|---|
| ベースURL | https://aiprimetech.io/v1 |
| チャットエンドポイント | POST https://aiprimetech.io/v1/chat/completions |
| モデル一覧 | GET https://aiprimetech.io/v1/models |
| 認証 | Authorization: Bearer <key>; x-api-key も受け付けます |
| モデル | ClaudeのID(例: claude-sonnet-5);Codexグループのキーを使用する場合はGPTのID |
Python
pip install openaiimport os
from openai import OpenAI
client = OpenAI(base_url="https://aiprimetech.io/v1", api_key=os.environ["AIPRIME_API_KEY"])
resp = client.chat.completions.create(
model="claude-sonnet-5",
max_tokens=1024,
messages=[
{"role": "system", "content": "You are a concise assistant."},
{"role": "user", "content": "Explain idempotency keys in two sentences."},
],
)
print(resp.choices[0].message.content)
print(resp.usage)base_url の末尾に必要なのは /v1です。SDKは /chat/completions をその後に追加します。これがない場合 /v1 リクエストはウェブサイトに送られ、HTML が返されます。 /v1 を重複させると、次の結果が返されます 404 page not found.
Node.js
import OpenAI from "openai";
const client = new OpenAI({ baseURL: "https://aiprimetech.io/v1", apiKey: process.env.AIPRIME_API_KEY });
const resp = await client.chat.completions.create({
model: "claude-sonnet-5",
max_tokens: 1024,
messages: [{ role: "user", content: "Write a haiku about retries." }],
});
console.log(resp.choices[0].message.content);ストリーミング
stream = client.chat.completions.create(
model="claude-sonnet-5",
max_tokens=2048,
stream=True,
stream_options={"include_usage": True},
messages=[{"role": "user", "content": "Outline a zero-downtime migration."}],
)
for chunk in stream:
if chunk.choices and chunk.choices[0].delta.content:
print(chunk.choices[0].delta.content, end="", flush=True)
if chunk.usage:
print("\n", chunk.usage)長い回答にはストリーミングを使用してください。非ストリーミングのリクエストはクライアントのタイムアウト時間内に完了する必要がありますが、ストリーミングにはその制約がありません。 include_usage は、トークン数を含む最後のチャンクを追加します。その重要性について詳しくは、次をご覧ください LLMレスポンスのストリーミング.
関数呼び出し
tools = [{
"type": "function",
"function": {
"name": "get_weather",
"description": "Current weather for a city",
"parameters": {
"type": "object",
"properties": {"city": {"type": "string"}},
"required": ["city"],
},
},
}]
resp = client.chat.completions.create(
model="claude-sonnet-5", max_tokens=512, tools=tools,
messages=[{"role": "user", "content": "What is the weather in Paris?"}],
)
call = resp.choices[0].message.tool_calls[0]
print(call.function.name, call.function.arguments) # get_weather {"city": "Paris"}返されるレスポンスには次が含まれます finish_reason: "tool_calls" およびOpenAI形式の tool_calls。関数を実行し、次の種類のメッセージを追加します: tool 。そのメッセージには実行結果と、それに対応する次の値を含めます: tool_call_id。その後、OpenAIモデルの場合とまったく同じように、再度呼び出します。
推論と思考
reasoning_effort はClaudeのeffort設定に対応し、次の値を受け付けます low, medium, high, xhigh または max。次の値は none 拒否されます。モデルが思考すると、その推論は別のフィールドに届きます。そのフィールドは reasoning_content フィールドで、次のフィールドと並んで配置されます: content。そのため、次を読み取るコードは message.content 変更せずに引き続き動作します。
resp = client.chat.completions.create(
model="claude-opus-5-5", max_tokens=4096, reasoning_effort="high",
messages=[{"role": "user", "content": "Find the bug in this function: ..."}],
)モデル
| モデルID | 用途 |
|---|---|
claude-sonnet-5 | コーディングとエージェント作業の標準モデル:高速、高性能、中程度の価格。 |
claude-opus-5-5 | より難しい推論、大規模なリファクタリング、長時間のエージェント実行。 |
claude-fable-5-1 | 最も高性能で最も高価。最も難しいタスクに絞って使いましょう。 |
claude-haiku-4-5 | 低価格で高速:タイトル、要約、分類、小さな処理。 |
これらのIDをそのまま使用してください。次のような日付付きの古いIDは claude-3-5-sonnet-20241022 一部のモデル一覧にまだ表示されますが、提供されておらず、モデルがサポートされていないというエラーが返されます。
ネイティブのAnthropic APIを使用すべき場合
OpenAI形式は、チャット、ストリーミング、ツール、画像に対応しています。プロンプトキャッシュのブレークポイントの明示的な指定、ターン間で再送する思考ブロック、PDFドキュメント、引用が必要な場合は、同じゲートウェイでAnthropic独自のMessages形式を使用してください。次の Anthropic Python SDKガイド と Vercel AI SDKガイド で、その方法を説明しています。
トラブルシューティング
| 表示される内容 | 原因 | 対処方法 |
|---|---|---|
JSON の解析エラー、次で始まるレスポンス < | base_url なしで /v1 | https://aiprimetech.io/v1 |
404 page not found | /v1 重複 | 必ず単一の /v1 |
401 Invalid API key | プロセス内でキーが未設定、または誤っている | 変数を確認してください。キーは特定のゲートウェイに紐づいています |
| モデルがサポートされていない | 日付付きの古いモデルID、またはスペルが誤っているモデルID | 上の表にあるIDを使用してください |
'none' is not supported | reasoning_effort="none" | 使用するモデルは、 low 以上にするか、省略してください |
429 Concurrency limit exceeded for user | 同時実行中のリクエストが多すぎる | 並列実行数を制限してください。次をご覧ください レート制限と再試行 |
| 長い回答でのタイムアウト | 長時間かかる非ストリーミングのリクエスト | ストリーミングを使用するか、クライアントのタイムアウト時間を延ばしてください |
よくある質問
OpenAI SDKでClaudeを使用できますか?
OpenAI SDKでClaudeを使用する場合、どのベースURLを指定しますか?
OpenAI形式を通じてClaudeの関数呼び出しを使用できますか?
ネイティブのAnthropic APIを使用すべきなのはどのような場合ですか?
APIキーを取得 — Anthropicアカウントもウェイトリストへの登録も不要です。
APIキーを取得AI Prime Techは独立したAPIゲートウェイです。Anthropicとの提携関係はなく、同社の承認を受けておらず、同社の再販業者でもありません。Claudeおよび関連するモデル名は、それぞれの所有者の商標です。