跳至主要內容

遷移指南

從 OpenAI、Anthropic 或 Google Gemini 轉到 Inference 需要改哪些地方。

遷移指南

從 OpenAI 遷移

只要改兩個東西:base URL 與 API key。其餘程式碼一行都不用動。

Python

# 之前
from openai import OpenAI
client = OpenAI(api_key=os.environ["OPENAI_API_KEY"])

# 之後
from openai import OpenAI
client = OpenAI(
    base_url="https://api.alphacurve.io/v1",
    api_key=os.environ["INFERENCE_API_KEY"],
)

Node / TypeScript

// 之前
const client = new OpenAI({ apiKey: process.env.OPENAI_API_KEY });

// 之後
const client = new OpenAI({
  baseURL: "https://api.alphacurve.io/v1",
  apiKey: process.env.INFERENCE_API_KEY,
});

唯一要注意的:模型 ID 要加前綴

之前之後
gpt-4oopenai/gpt-4o
gpt-4o-miniopenai/gpt-4o-mini

沒加前綴會得到 404 model_not_found。

從 Anthropic 遷移

Anthropic 原生 API 的訊息格式與 OpenAI 不同。改用 openai SDK 指向 Inference,就能沿用 OpenAI 風格的程式碼呼叫 Claude。

格式對照

Anthropic 原生OpenAI 相容(Inference)
anthropic.Anthropic(api_key=...)OpenAI(base_url="https://api.alphacurve.io/v1", api_key=...)
client.messages.create(...)client.chat.completions.create(...)
system="..."(獨立參數){"role": "system", "content": "..."} 放在 messages 最前面
max_tokens 必填max_tokens 選填
model="claude-sonnet-4-5"model="anthropic/claude-sonnet-4-5"
resp.content[0].textresp.choices[0].message.content
resp.usage.input_tokens / output_tokensresp.usage.prompt_tokens / completion_tokens
tools[].input_schematools[].function.parameters
stop_reason: "end_turn"finish_reason: "stop"

之前(Anthropic SDK)

import os
import anthropic

client = anthropic.Anthropic(api_key=os.environ["ANTHROPIC_API_KEY"])

resp = client.messages.create(
    model="claude-sonnet-4-5",
    max_tokens=1024,
    system="你是簡潔的助理。",
    messages=[{"role": "user", "content": "用一句話說明什麼是路由。"}],
)
print(resp.content[0].text)

之後(openai SDK 指向 Inference)

import os
from openai import OpenAI

client = OpenAI(
    base_url="https://api.alphacurve.io/v1",
    api_key=os.environ["INFERENCE_API_KEY"],
)

resp = client.chat.completions.create(
    model="anthropic/claude-sonnet-4-5",
    max_tokens=1024,
    messages=[
        {"role": "system", "content": "你是簡潔的助理。"},
        {"role": "user", "content": "用一句話說明什麼是路由。"},
    ],
)
print(resp.choices[0].message.content)

從 Google Gemini 遷移

Gemini 原生OpenAI 相容(Inference)
genai.GenerativeModel("gemini-2.5-pro")model="google/gemini-2.5-pro"
contents=[{"role": "user", "parts": [...]}]messages=[{"role": "user", "content": ...}]
role: "model"role: "assistant"
system_instruction={"role": "system", ...}
generation_config.max_output_tokensmax_tokens
resp.textresp.choices[0].message.content
inline_data / file_data{"type": "image_url", "image_url": {"url": "data:..."}}
import os
from openai import OpenAI

client = OpenAI(
    base_url="https://api.alphacurve.io/v1",
    api_key=os.environ["INFERENCE_API_KEY"],
)

resp = client.chat.completions.create(
    model="google/gemini-2.5-pro",
    messages=[
        {"role": "system", "content": "你是簡潔的助理。"},
        {"role": "user", "content": "用一句話說明什麼是路由。"},
    ],
)
print(resp.choices[0].message.content)

遷移檢查清單

  1. 到 Dashboard 建立 API 金鑰,並設定每月花費上限。
  2. 儲值 credits。
  3. 把 base URL 改成 https://api.alphacurve.io/v1,最好透過環境變數設定。
  4. 換上 sk-inf- 金鑰。
  5. 幫所有模型 ID 加上 provider/ 前綴。
  6. 呼叫 GET /v1/models 確認每個模型 ID 都存在且此金鑰可用。
  7. 把錯誤處理改為讀取 error.code(見 錯誤)。
  8. 先用少量流量(例如 5%)灰度驗證,再全量切換。
  9. 在 Dashboard 的 Usage 頁面確認成本符合預期。

用環境變數同時支援兩邊

灰度期間可以讓同一份程式碼在兩種設定間切換:

import os
from openai import OpenAI

client = OpenAI(
    base_url=os.getenv("LLM_BASE_URL", "https://api.alphacurve.io/v1"),
    api_key=os.environ["LLM_API_KEY"],
)

MODEL = os.getenv("LLM_MODEL", "openai/gpt-4o-mini")

回退

Inference 沒有任何鎖定:所有程式碼都是標準 OpenAI 格式。想改回直連原廠,把 base URL、金鑰與模型前綴改回去即可。