為 SaaS 產品整合 AI 功能
給 SaaS 產品加 AI 功能(摘要、寫作助手、智慧搜尋),通常用一個性價比高的對話模型做主力,另一家廠商的模型做降級備用,再用向量模型支撐產品內搜尋。按每月 30 萬次 AI 呼叫、3% 走備用模型估算,用最低價分組計算,模型費用每月約 ¥1,496。每個租戶或環境用單獨的 Key,額度和權限分開管理。
價格更新於 2026年11月13日 凌晨1:33
月成本估算
假設:產品每月產生 30 萬次 AI 功能呼叫,每次輸入約 1,500 tokens、輸出約 300 tokens;其中 3%(9,000 次)因主力模型限流或故障轉到備用模型;另有 10 萬次搜尋請求,每次向量化約 50 tokens。
業務問題
在 SaaS 產品裡接一個模型、把功能調通並不難,麻煩在上線之後:租戶之間用量差別很大,怎麼限額;某家模型服務出問題時,功能還能不能用;每月帳單怎麼拆到每個租戶頭上。
如果分別對接各家廠商,每多一個模型就多一套 SDK、一份合同、一種付款方式,切換模型和降級都要改程式碼。
通過一個相容介面接入,同一套程式碼就能呼叫多家模型;在控制台給每把 Key 設好額度、過期時間和白名單,再按 Key 匯出用量對帳。
推薦模型組合
推薦模型按即時目錄自動選取,價格取各模型最低價分組,更新於 2026年11月13日 凌晨1:33。點模型名可檢視全部分組價格。
主力模型(對話)
gpt-5.4-miniOpenAI
輸入 ¥1.5 / 輸出 ¥9 每百萬 tokens標準分組
承擔絕大部分 AI 功能呼叫,選質量穩定、價格適中的模型。產品裡的提示詞和輸出格式都按它來調。
降級備用(另一家廠商)
Claude Haiku 5.5Anthropic
輸入 ¥0.4 / 輸出 ¥2 每百萬 tokensClaude 優質分組
主力模型返回 429 或 5xx 時自動切換,單一廠商出問題不至於直接影響你的產品。備用模型的輸出格式要提前測好。
產品內搜尋(Embeddings)
text-embedding-3-smallOpenAI
輸入 ¥0.04 / 輸出 ¥0.04 每百萬 tokens標準分組
給文件、工單、知識庫內容做語義搜尋和相似推薦,呼叫量大,但單價低。
參考架構
- 1
服務端代理
所有模型呼叫都從你的後端發出。Key 只放在服務端的環境變數或金鑰管理服務裡,前端只調用你自己的介面。
- 2
按租戶分 Key
每個大客戶或每個環境(測試、生產)單獨建一把 API Key,設定額度上限、過期時間、模型白名單和伺服器 IP 白名單。
- 3
限額與降級
你的服務裡按租戶限制請求頻率;主力模型返回 429 或 5xx 時切換到備用模型,其他 4xx 錯誤直接返回給呼叫方處理。
- 4
記錄用量
每次呼叫記下租戶、模型和響應裡的 usage,寫進自己的資料庫,用來向租戶計費或控制套餐額度。
- 5
月度對帳
每月匯出控制台「操作日誌」,按 Key 和自己的記錄對帳;發現異常用量,及時停用對應的 Key。
成本估算
假設:產品每月產生 30 萬次 AI 功能呼叫,每次輸入約 1,500 tokens、輸出約 300 tokens;其中 3%(9,000 次)因主力模型限流或故障轉到備用模型;另有 10 萬次搜尋請求,每次向量化約 50 tokens。
| 專案 | 模型 | 用量假設 | 費用 |
|---|---|---|---|
| 主力模型呼叫 | gpt-5.4-mini | 300,000 次 × 輸入 1,500 + 輸出 300 tokens | ¥1,485 |
| 降級到備用模型 | Claude Haiku 5.5 | 9,000 次 × 輸入 1,500 + 輸出 300 tokens | ¥10.8 |
| 搜尋向量化 | text-embedding-3-small | 100,000 次 × 輸入 50 tokens | ¥0.2 |
| 合計(每月) | ¥1,496 | ||
按各模型最低價分組的即時價格計算,價格更新於 2026年11月13日 凌晨1:33。
只含模型呼叫費用,不含你的伺服器和資料庫成本。降級比例只是假設,實際取決於主力模型的狀況;文件首次入庫的向量化費用另算。呼叫量翻倍,費用大致翻倍。
示例程式碼
每個租戶用自己的 Key;主力模型返回 429 或 5xx 時切到備用模型,同時記錄每次呼叫的 usage,用於對帳。
// Server side only: API keys never reach the browser or the app.
import OpenAI from 'openai'
// One key per tenant or environment, each with its own spending limit in the console.
// Load them from your secret store; TUTUJIN_API_KEY is the default key.
function clientFor(tenant) {
return new OpenAI({
baseURL: 'https://www.tutujin.com/v1',
apiKey: process.env['TUTUJIN_KEY_' + tenant.id] || process.env.TUTUJIN_API_KEY,
timeout: 30_000,
maxRetries: 1,
})
}
// Primary first, then a model from another vendor.
const MODELS = ['gpt-5.4-mini', 'claude-haiku-5-5']
export async function summarize(tenant, text) {
const client = clientFor(tenant)
let lastError
for (const model of MODELS) {
try {
const resp = await client.chat.completions.create({
model,
messages: [
{ role: 'system', content: 'Summarize the content in 3 bullet points.' },
{ role: 'user', content: text },
],
max_tokens: 400,
})
await recordUsage(tenant.id, model, resp.usage)
return resp.choices[0].message.content
} catch (err) {
lastError = err
const status = err?.status
// 429 and 5xx: try the next model. Other 4xx (bad input, no balance, allowlists): stop here.
if (status && status < 500 && status !== 429) break
}
}
throw lastError
}
async function recordUsage(tenantId, model, usage) {
// Store per tenant in your own database; reconcile monthly with the Usage export in the console.
console.log(tenantId, model, usage?.prompt_tokens, usage?.completion_tokens)
}
// In-product search: embed documents and queries with text-embedding-3-small.常見問題
每月 30 萬次 AI 呼叫要多少錢?
按每次輸入約 1,500 tokens、輸出約 300 tokens,3% 走備用模型,再加 10 萬次搜尋向量化估算,用最低價分組計算約 ¥1,496。
API Key 能放在前端或 App 裡嗎?
不能。放在前端的 Key 任何人都能拿到並直接呼叫。Key 只放在服務端,前端呼叫你自己的介面,由服務端轉發並做權限校驗。
怎麼給不同租戶限額?
在控制台給每個租戶建一把單獨的 Key 並設定額度上限,用完自動停用;你的服務裡再按租戶做請求頻率限制和套餐額度檢查。
某家模型服務出問題時,功能怎麼保持可用?
程式碼裡配置兩個不同廠商的模型,主力返回 429 或 5xx 時自動切到備用。備用模型的提示詞和輸出格式要在上線前測好,避免切換後功能表現差別太大。
每月帳單怎麼拆到租戶?
每次呼叫把 usage 和租戶 ID 記進自己的資料庫;控制台「操作日誌」可以匯出,按 Key 和自己的記錄核對。
