Python:公式 OpenAI / Anthropic SDK でどのモデルでも呼び出す

666 AI は OpenAI 形式(/v1/chat/completions・/v1/responses・/v1/embeddings)と Anthropic 形式(/v1/messages)の両方に対応。今のコードのまま 2 行変えるだけです。

YOUR-ENDPOINT は登録後に「API Key」ページに表示される接続先に、YOUR-KEY はご自身のキーに置き換えてください。1 つのキーで 666 AI のすべてのモデル(Claude・GPT・Gemini・DeepSeek・Qwen ほか 200 以上)を呼び出せます。

1. OpenAI SDK でチャット

pip install openai

from openai import OpenAI

client = OpenAI(
    base_url="https://YOUR-ENDPOINT/v1",
    api_key="YOUR-KEY",
)

resp = client.chat.completions.create(
    model="anthropic/claude-haiku-5.5",
    messages=[{"role": "user", "content": "Say hi in 3 words."}],
    max_tokens=200,
)
print(resp.choices[0].message.content)

2. ストリーミング

stream = client.chat.completions.create(
    model="anthropic/claude-haiku-5.5",
    messages=[{"role": "user", "content": "Count from 1 to 5."}],
    max_tokens=200,
    stream=True,
)
for chunk in stream:
    if chunk.choices:
        print(chunk.choices[0].delta.content or "", end="", flush=True)

3. Responses API(OpenAI・Gemini 系モデル)

resp = client.responses.create(
    model="google/gemini-3.5-flash",     # Claude models don't use /v1/responses — call them via chat completions or /v1/messages
    input="Say hi in 3 words.",
    max_output_tokens=200,
)
print(resp.output_text)

4. 埋め込み(Embeddings)

emb = client.embeddings.create(
    model="openai/text-embedding-3-small",
    input="hello",
)
print(len(emb.data[0].embedding))   # 1536

5. 環境変数で設定する場合

export OPENAI_BASE_URL="https://YOUR-ENDPOINT/v1"
export OPENAI_API_KEY="YOUR-KEY"
# then simply: client = OpenAI()

6. Anthropic SDK(Messages API)

pip install anthropic

import anthropic

client = anthropic.Anthropic(
    base_url="https://YOUR-ENDPOINT",   # no /v1 here — the SDK adds /v1/messages itself
    api_key="YOUR-KEY",
)

msg = client.messages.create(
    model="anthropic/claude-haiku-5.5",
    max_tokens=200,
    messages=[{"role": "user", "content": "Say hi in 3 words."}],
)
print(msg.content[0].text)

# streaming
with client.messages.stream(
    model="anthropic/claude-haiku-5.5",
    max_tokens=200,
    messages=[{"role": "user", "content": "Count from 1 to 5."}],
) as s:
    for text in s.text_stream:
        print(text, end="", flush=True)

モデル ID は?

各モデルページに表示されている ID をそのまま使います(例:anthropic/claude-opus-5.5、google/gemini-3.5-flash)。同じキーで全モデル、従量課金でサブスク不要です。

よくある質問

モデルを変えるときコードの修正は必要?

いいえ。model の文字列を変えるだけで、クライアント・接続先・キーはそのままです。

返答が空になるのはなぜ?

推論モデルは max_tokens を思考に使い切ることがあります。2,000 以上に上げてください。

OpenAI SDK と Anthropic SDK、どちらを使う?

どちらでも構いません。Claude は両方で動き、他のモデルは OpenAI SDK が簡単です。

無料でアカウント作成全モデル開発者ガイド