跳至主要內容

模型與命名規則

GET /v1/models、provider/model 命名規則,以及如何挑選與限制模型。

模型與命名規則

命名規則

模型 ID 一律使用 provider/model 的形式:

openai/gpt-4o
openai/gpt-4o-mini
anthropic/claude-sonnet-4-5
anthropic/claude-haiku-4-5
google/gemini-2.5-pro
google/gemini-2.5-flash
區段說明
provider上游供應商:openai、anthropic、google,以及其他 OpenAI 相容供應商。
model供應商端的模型名稱,盡量與原廠一致,方便對照文件。

加上前綴的好處是名稱不會撞號,而且從 model 字串就能一眼看出請求會送去哪裡。

列出可用模型

GET https://api.alphacurve.io/v1/models

回傳的是這把金鑰目前可用的模型。如果金鑰設定了模型白名單,清單只會包含白名單內的項目。

curl

curl https://api.alphacurve.io/v1/models \
  -H "Authorization: Bearer $INFERENCE_API_KEY"

Python

import os
from openai import OpenAI

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

for m in client.models.list().data:
    print(m.id)

Node / TypeScript

import OpenAI from "openai";

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

for (const m of (await client.models.list()).data) {
  console.log(m.id);
}

回應

{
  "object": "list",
  "data": [
    {
      "id": "openai/gpt-4o",
      "object": "model",
      "created": 1753776000,
      "owned_by": "openai",
      "context_length": 128000,
      "capabilities": {
        "streaming": true,
        "tools": true,
        "vision": true
      },
      "pricing": {
        "input_per_1m": "2.50",
        "cached_input_per_1m": "1.25",
        "output_per_1m": "10.00",
        "currency": "USD"
      }
    }
  ]
}

pricing 是套用平台加成後、你實際會被扣款的單價,單位為每 1M tokens。詳見 計費。

挑選模型

情境建議
大量分類、抽取、摘要小型快速模型,例如 openai/gpt-4o-mini、google/gemini-2.5-flash、anthropic/claude-haiku-4-5。
複雜推理、程式碼旗艦模型,例如 openai/gpt-4o、anthropic/claude-sonnet-4-5、google/gemini-2.5-pro。
超長文件選 context_length 大的模型,例如 Gemini 系列。
圖片理解capabilities.vision 為 true 的模型,見 Vision。
Function callingcapabilities.tools 為 true 的模型,見 Tools。

務實的做法:先用便宜模型跑通流程,再針對品質不足的環節換上旗艦模型。

限制可用模型

在 Dashboard 為每把金鑰設定模型白名單,可避免不小心呼叫到昂貴模型。

  • 呼叫平台上不存在的模型 → 404 model_not_found
  • 呼叫存在、但不在此金鑰白名單內的模型 → 403 model_not_allowed

備援

上游供應商偶爾會逾時或回傳 5xx。建議在應用層準備一個備援模型:

MODELS = ["anthropic/claude-sonnet-4-5", "openai/gpt-4o"]

def complete(messages):
    last_error = None
    for model in MODELS:
        try:
            return client.chat.completions.create(model=model, messages=messages)
        except Exception as exc:   # 逾時或 upstream_error
            last_error = exc
    raise last_error