Kimi K2.7 Code is now on CometAPI — Kimi's most intelligent coding model to date, reliably follows instructions in long contexts and completes programming tasks with a higher success rate. Try it now

2026 年最佳 AI API 閘道:CometAPI、Portkey、LiteLLM 與 Cloudflare 比較

CometAPI
AnnaJun 9, 2026
2026 年最佳 AI API 閘道:CometAPI、Portkey、LiteLLM 與 Cloudflare 比較

選擇 AI API 閘道器已經不是兩年前的問題了。2024 年,多數開發者要嘛直接呼叫 OpenAI,要嘛在本機啟動 LiteLLM。現在已有託管選項,提供定價儀表板、按金鑰的額度上限,以及橫跨數十家供應商的模型目錄。這個類別擴張到一個程度:選錯就意味著日後得回頭拆改真正的整合工作。

本文比較在開發者討論中反覆出現的四個閘道器:CometAPI、Portkey、LiteLLM 與 Cloudflare AI Gateway。目的不是選出勝負——每個在不同情境下各有其用——而是把各自實際提供的功能攤開來,讓你能依需求對號入座。

關於模型名稱的說明: 本文所用的模型識別符(如 gpt-5.4claude-opus-4-7)為 CometAPI 平台識別符,並非 OpenAI 或 Anthropic 的官方名稱;兩者各自的命名慣例不同。

這些工具實際在做什麼

在比較功能之前,先精確定義 AI API 閘道器的角色會有幫助。至少,它位於你的應用與一個或多個 AI 供應商之間,轉發請求並回傳回應。除此之外,各家閘道器差異甚大。

有些閘道器——例如 Cloudflare AI Gateway——主要是透明轉接層,加上日誌與快取,不涉及你的 API 金鑰或計費。另一些如 CometAPI 則是轉售模式:你付費給它們,它們再支付底層供應商,兩者之間的價差是其價值主張的一部分。LiteLLM 又不同——它是你自行運行的軟體,而非託管服務。

在評估具體功能前,搞清楚這些區別很重要。

功能比較

下表根據截至 2026 年 5 月的各產品官方文件或公開儀表板資訊彙整。以破折號(—)標記的功能在撰文時未能於官方來源確認。

功能CometAPIPortkeyLiteLLMCloudflare AI Gateway
部署方式託管(SaaS)託管 + 可自我託管自我託管(開源)託管(Cloudflare 邊緣)
模型目錄橫跨多家供應商的 500+ 個模型透過統一 API 的 1,600+ 個 LLM取決於你的設定OpenAI、Anthropic、Workers AI
計費模式轉售(向 CometAPI 付費)轉接 + 平台費僅基礎設施成本轉接(提供免費層)
相容 OpenAI 的 API是(api.cometapi.com/v1)是(api.portkey.ai/v1)是(本機或遠端)是(透過閘道 URL)
按金鑰額度上限是(儀表板)是(透過設定)
基於群組的價格係數是(預設 0.8x,內部 0.1x)
請求日誌是(4 種日誌類型)
成功率監控是(30 天運行狀態視圖)
免費方案是(新帳戶)開源(基礎設施成本)
可自我託管否(企業版:可申請專用伺服器)是(核心用例)

來源:CometAPI 儀表板Portkey 首頁LiteLLM GitHubCloudflare AI Gateway 文件

連線到各個閘道器

這四個閘道器都提供與 OpenAI 相容的端點,意味著可使用相同的客戶端結構——你只需更改 base_url、憑證,Portkey 的情況下還要更改指定模型的方式。

Python

import osfrom openai import OpenAI​def require_env(name: str) -> str:    """Raise a clear error if a required environment variable is missing."""    val = os.environ.get(name)    if not val:        raise ValueError(f"Missing required environment variable: {name}")    return val​​# ── CometAPI ────────────────────────────────────────────────────────────────# Hosted reseller with 500+ models. Use CometAPI model identifiers (e.g. "gpt-5.4").cometapi_client = OpenAI(    base_url="https://api.cometapi.com/v1",    api_key=require_env("COMETAPI_KEY"),)​​# ── Portkey ─────────────────────────────────────────────────────────────────# Hosted gateway with observability and 1,600+ LLMs.# Route to a provider by prefixing the model name: "@openai/gpt-4o", "@anthropic/claude-3-5-sonnet", etc.# x-portkey-api-key is required; it authenticates requests to Portkey's gateway.portkey_client = OpenAI(    base_url="https://api.portkey.ai/v1",    api_key=require_env("PORTKEY_API_KEY"),    default_headers={        "x-portkey-api-key": require_env("PORTKEY_API_KEY"),    },)​​# ── LiteLLM ──────────────────────────────────────────────────────────────────# Self-hosted proxy. Provider credentials (OPENAI_API_KEY etc.) are set server-side.# By default the proxy does not validate the client API key — "anything" works.# If you have enabled virtual keys on your LiteLLM instance, pass a virtual key instead.litellm_client = OpenAI(    base_url=os.environ.get("LITELLM_BASE_URL", "http://localhost:4000"),    api_key=os.environ.get("LITELLM_API_KEY", "anything"),)​​# ── Cloudflare AI Gateway ───────────────────────────────────────────────────# URL-based pass-through. Keep your real provider API key — Cloudflare does not replace it.cf_account_id = require_env("CF_ACCOUNT_ID")cf_gateway_id = require_env("CF_GATEWAY_ID")cloudflare_client = OpenAI(    base_url=(        f"https://gateway.ai.cloudflare.com/v1"        f"/{cf_account_id}/{cf_gateway_id}/openai"    ),    api_key=require_env("OPENAI_API_KEY"),)​​def ask(client: OpenAI, model: str, question: str) -> str:    """    Minimal wrapper showing the common call pattern across all four gateways.​    Model format varies by gateway:      CometAPI:   "gpt-5.4", "claude-opus-4-7", etc. (CometAPI identifiers)      Portkey:    "@openai/gpt-4o", "@anthropic/claude-3-5-sonnet", etc.      LiteLLM:    whatever model names you configured in your proxy      Cloudflare: standard OpenAI model names, e.g. "gpt-4o"​    This function does not handle finish_reason, tool_calls, or provider errors.    For production error handling, see: How to Debug Failed AI API Generations.    """    response = client.chat.completions.create(        model=model,        messages=[{"role": "user", "content": question}],    )    return response.choices[0].message.content or ""

Node.js

import OpenAI from "openai";​function requireEnv(name) {  const val = process.env[name];  if (!val) throw new Error(`Missing required environment variable: ${name}`);  return val;}​// ── CometAPI ────────────────────────────────────────────────────────────────const cometClient = new OpenAI({  baseURL: "https://api.cometapi.com/v1",  apiKey: requireEnv("COMETAPI_KEY"),});​// ── Portkey ─────────────────────────────────────────────────────────────────// Route to a provider by prefixing the model: "@openai/gpt-4o", "@anthropic/claude-3-5-sonnet"const portkeyClient = new OpenAI({  baseURL: "https://api.portkey.ai/v1",  apiKey: requireEnv("PORTKEY_API_KEY"),  defaultHeaders: {    "x-portkey-api-key": requireEnv("PORTKEY_API_KEY"),  },});​// ── LiteLLM ──────────────────────────────────────────────────────────────────// Self-hosted. Default mode accepts any API key value.// Set LITELLM_BASE_URL if your server runs on a different host or port.const litellmClient = new OpenAI({  baseURL: process.env.LITELLM_BASE_URL ?? "http://localhost:4000",  apiKey: process.env.LITELLM_API_KEY ?? "anything",});​// ── Cloudflare AI Gateway ───────────────────────────────────────────────────const cfClient = new OpenAI({  baseURL: `https://gateway.ai.cloudflare.com/v1/${requireEnv("CF_ACCOUNT_ID")}/${requireEnv("CF_GATEWAY_ID")}/openai`,  apiKey: requireEnv("OPENAI_API_KEY"),});​/** * Minimal wrapper showing the common call pattern. * Model format varies by gateway — see Python example above for details. * Does not handle finish_reason or error recovery; add those for production use. */async function ask(client, model, question) {  const response = await client.chat.completions.create({    model,    messages: [{ role: "user", content: question }],  });  return response.choices[0].message.content ?? "";}

四者的連線模式相同。真正的差異體現在其他地方:你能觀察什麼、能控制什麼、以及當事情出錯時會發生什麼。

各工具的實際擅長點

CometAPI

CometAPI 的主要提供是託管的模型目錄,包含 500+ 個模型端點,除文字模型外也涵蓋影像與影片生成。其定價採用基於群組的係數機制——預設群組對 CometAPI 的基礎費率套用 0.8 倍;你也可以為內部使用(0.1 倍)與付費客戶設定不同的係數群組,讓你不用管理多個帳戶也能實作分級產品。

儀表板提供四種類型的日誌(一般 API 呼叫、影像生成、影片生成、Midjourney)、30 天運行狀態視圖,以及按金鑰的額度上限。額度上限讓你可以把 API 金鑰發給客戶或外包夥伴,同時設定硬性的支出上限,解決在共用帳戶情境下分發存取權的真實痛點。

CometAPI 未提供的項目:自我託管(企業客戶可申請專用伺服器,但這不屬於標準的自我託管選項)、閘道層級的速率限制、以及 SSO。

最適用:獨立開發者與小型團隊,想用一把 API 金鑰在多個模型間路由——包含影像與影片——並以單一帳單關係管理,同時需要按金鑰的預算控管。

Portkey

Portkey 是以可觀測性為核心的託管閘道。它透過統一 API 提供對 1,600+ 個 LLM 的存取,路由方式是為模型名稱加上供應商前綴(@openai/gpt-4o@anthropic/claude-3-5-sonnet)。這表示你不必為每個供應商準備不同的客戶端設定——一個 Portkey 客戶端就能處理全部,你只需切換模型字串。

除了路由之外,Portkey 還提供請求追蹤、提示詞版本管理,以及可在儀表板而非程式碼中設定的回退路由。其可自我託管選項代表若有合規需求,你可以在自家基礎設施上運行 Portkey。

Portkey 開源閘道的 GitHub 倉庫維護活躍——請直接查看當前的星標數,勿依賴此處引用的任何數字,因其變動頻繁。

最適用:需要審計線索、多供應商路由且只用單一客戶端設定,或希望在開發者之間管控 API 金鑰曝露的團隊。

LiteLLM

LiteLLM 是一個 Python 套件與代理伺服器,而非託管服務;它由你自行運行。這個區別很關鍵:沒有第三方處理你的請求或保管你的 API 金鑰。供應商憑證(你的實際 OpenAI 金鑰、Anthropic 金鑰等)以伺服器端環境變數設定;客戶端只需指向本地代理。

預設情況下,LiteLLM 不會驗證客戶端傳來的 API 金鑰——任何值都可通過。若你啟用虛擬金鑰管理,客戶端需傳遞 LiteLLM 以其自身資料庫驗證的虛擬金鑰。無論哪種方式,代理會將 OpenAI 風格的請求轉換為上游供應商所需格式,因此當你新增供應商時,應用程式碼無需改動。

相對代價是營運開銷:你需要負責運行、擴展與更新伺服器。

最適用:具備 DevOps 能力的團隊、有合規限制而不得使用第三方 API 代理的組織,或希望在不將請求內容交給 SaaS 廠商的情況下實現跨供應商路由的人。

Cloudflare AI Gateway

Cloudflare AI Gateway 在結構上與其他三者不同。你不需要更換 API 金鑰,也不向 Cloudflare 支付模型使用費;你只需把供應商的 base URL 換成由 Cloudflare 管理的 URL,以在邊緣增加日誌、快取與速率限制。

由於 Cloudflare 位於你的應用與供應商之間,它可以對相同請求進行快取——當你的應用反覆發送相同提示時很實用。免費層足以覆蓋大多數獨立開發者用例。其限制在於範圍:Cloudflare 不會聚合多家供應商的模型,你仍需為每家供應商維持獨立帳戶與金鑰。

最適用:已在使用 Cloudflare 基礎設施的開發者,或希望在既有供應商帳戶之上加入快取與日誌,而不新增計費關係或變更 API 金鑰的人。

情境對應

情境建議工具理由
獨立應用,想用一把 API 金鑰嘗試 10+ 個模型CometAPI目錄廣、設定簡單、按金鑰額度上限
需要在同一整合中同時支援影像與影片生成CometAPI文字、影像、影片模型的統一端點
5 人團隊,需追蹤誰在用哪些模型Portkey請求追蹤、團隊管理
以單一客戶端設定路由到 1,600+ 個 LLMPortkey@provider/model 路由,無需逐一設定供應商
想在不改程式碼的情況下做跨供應商回退路由Portkey在儀表板中宣告式設定回退
企業需要資料在地/資料駐留要求LiteLLM(自我託管)無第三方處理流量
預算為零,且能接受自行管理LiteLLM開源,無平台成本
已直接使用 OpenAI,想加快取Cloudflare AI Gateway只需更換 URL,無新增計費關係
需要多團隊的 RBACPortkey 或 LiteLLM兩者皆有團隊/角色管理;CometAPI 與 Cloudflare 無

這四者不涵蓋的範圍

本比較聚焦於獨立開發者討論中最常出現的閘道器。市場上還有其他值得了解的選項:Helicone 聚焦可觀測性而不充當代理,OpenRouter 專長於路由到開源權重與研究型模型,AWS Bedrock 則是 Amazon 面向企業工作負載的託管 AI 服務。若你的需求不符合上述四者,這些是下一步可考慮的方向。

進行切換

如果你目前直接呼叫供應商,且考慮改用閘道,程式碼改動很小。對 CometAPI,你新增一個環境變數並改 base_url;對 Portkey,你新增一個標頭並改變指定模型的方式(使用 @openai/gpt-4o 而非 gpt-4o);對 Cloudflare,你只需更換 URL,無需動到供應商的 API 金鑰;對 LiteLLM,先啟動本地伺服器,再讓客戶端指向它。

更大的問題不在於怎麼換,而在於是否需要換。如果你只呼叫單一供應商、沒有成本可視性問題、也不需要跨模型路由,那麼引入閘道只會增加複雜度而無實益。反之,若你同時使用多家供應商、需將金鑰分發給外包人員,或經常遭遇意外帳單,則這點整合成本是值得的。

常見問題

我可以同時使用這些閘道嗎?

可以。有些團隊對敏感工作負載採用自我託管的 LiteLLM,其餘流量使用 CometAPI。若你想在上層加上 Cloudflare 的快取層,Cloudflare AI Gateway 也可以置於 CometAPI 請求之前——不過這會多一跳網路轉發。

這些閘道會儲存我的提示詞嗎?

視工具與你的設定而定。Portkey 與 CometAPI 預設會記錄請求,兩者皆提供保留設定。LiteLLM 只會在你的自家基礎設施上儲存你設定要儲存的內容。Cloudflare 的記錄行為可見其 AI Gateway 文件。將敏感內容透過任何託管服務傳送前,請先閱讀其隱私條款。

若閘道當機會怎樣?

對於託管式閘道(CometAPI、Portkey、Cloudflare),閘道停機代表你的應用無法透過該路徑觸達 AI 供應商。本地運行的 LiteLLM 與你的自家伺服器有相同的可用性特徵。將任何託管閘道用於生產環境前,請檢查其 SLA,以及當閘道本身不可用時是否提供直連供應商的回退機制。

在承諾使用前,有免費的方式評估嗎?

可以。CometAPI 與 Portkey 皆提供免費層。LiteLLM 為開源,成本僅在你運行它的基礎設施上。Cloudflare AI Gateway 在寬鬆的限制內免費。你可以用相同的測試提示詞試跑這四者,再做決定。

我該如何為各閘道選對模型名稱?

每個閘道都有自己的慣例。CometAPI 使用其自有識別符(gpt-5.4claude-opus-4-7)。Portkey 採用 @provider/model-name 格式(@openai/gpt-4o@anthropic/claude-3-5-sonnet)。LiteLLM 使用你在代理設定中定義的模型名稱。Cloudflare 會原樣傳遞標準的供應商模型名稱。撰寫程式前請查閱各閘道文件以取得最新模型清單。

切換閘道會影響我現有的速率限制嗎?

會。如果你從直接呼叫 OpenAI 轉為使用由閘道代管供應商關係的服務(如 CometAPI),實際速率限制將由該閘道與 OpenAI 的帳戶關係決定,而非你的個人帳戶。在遷移生產流量前,請先與閘道確認其速率限制行為。

準備好將 AI 開發成本降低 20% 了嗎?

幾分鐘內免費開始。包含免費試用點數。無需信用卡。

閱讀更多