跳到正文
土土金API

為 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。

¥1,496/ 月

  • 主力模型呼叫¥1,485
  • 降級到備用模型¥10.8
  • 搜尋向量化¥0.2
看用量假設

業務問題

在 SaaS 產品裡接一個模型、把功能調通並不難,麻煩在上線之後:租戶之間用量差別很大,怎麼限額;某家模型服務出問題時,功能還能不能用;每月帳單怎麼拆到每個租戶頭上。

如果分別對接各家廠商,每多一個模型就多一套 SDK、一份合同、一種付款方式,切換模型和降級都要改程式碼。

通過一個相容介面接入,同一套程式碼就能呼叫多家模型;在控制台給每把 Key 設好額度、過期時間和白名單,再按 Key 匯出用量對帳。

推薦模型組合

推薦模型按即時目錄自動選取,價格取各模型最低價分組,更新於 2026年11月13日 凌晨1:33。點模型名可檢視全部分組價格。

參考架構

  1. 1

    服務端代理

    所有模型呼叫都從你的後端發出。Key 只放在服務端的環境變數或金鑰管理服務裡,前端只調用你自己的介面。

  2. 2

    按租戶分 Key

    每個大客戶或每個環境(測試、生產)單獨建一把 API Key,設定額度上限、過期時間、模型白名單和伺服器 IP 白名單。

  3. 3

    限額與降級

    你的服務裡按租戶限制請求頻率;主力模型返回 429 或 5xx 時切換到備用模型,其他 4xx 錯誤直接返回給呼叫方處理。

  4. 4

    記錄用量

    每次呼叫記下租戶、模型和響應裡的 usage,寫進自己的資料庫,用來向租戶計費或控制套餐額度。

  5. 5

    月度對帳

    每月匯出控制台「操作日誌」,按 Key 和自己的記錄對帳;發現異常用量,及時停用對應的 Key。

成本估算

假設:產品每月產生 30 萬次 AI 功能呼叫,每次輸入約 1,500 tokens、輸出約 300 tokens;其中 3%(9,000 次)因主力模型限流或故障轉到備用模型;另有 10 萬次搜尋請求,每次向量化約 50 tokens。

專案模型用量假設費用
主力模型呼叫gpt-5.4-mini300,000 次 × 輸入 1,500 + 輸出 300 tokens¥1,485
降級到備用模型Claude Haiku 5.59,000 次 × 輸入 1,500 + 輸出 300 tokens¥10.8
搜尋向量化text-embedding-3-small100,000 次 × 輸入 50 tokens¥0.2
合計(每月)¥1,496

按各模型最低價分組的即時價格計算,價格更新於 2026年11月13日 凌晨1:33。

只含模型呼叫費用,不含你的伺服器和資料庫成本。降級比例只是假設,實際取決於主力模型的狀況;文件首次入庫的向量化費用另算。呼叫量翻倍,費用大致翻倍。

示例程式碼

每個租戶用自己的 Key;主力模型返回 429 或 5xx 時切到備用模型,同時記錄每次呼叫的 usage,用於對帳。

示例程式碼(Node.js,服務端呼叫與降級)
// 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.

用一把 Key 試試這個方案

註冊後在控制台建立 API Key,把上面程式碼裡的 base_url 和 Key 換成你的就能執行。企業採購、開發票可以加客服微信 JsnonoChat。

土土金客服微信二維碼
微信JsnonoChat

掃碼或搜尋微信號新增客服

常見問題

每月 30 萬次 AI 呼叫要多少錢?

按每次輸入約 1,500 tokens、輸出約 300 tokens,3% 走備用模型,再加 10 萬次搜尋向量化估算,用最低價分組計算約 ¥1,496。

API Key 能放在前端或 App 裡嗎?

不能。放在前端的 Key 任何人都能拿到並直接呼叫。Key 只放在服務端,前端呼叫你自己的介面,由服務端轉發並做權限校驗。

怎麼給不同租戶限額?

在控制台給每個租戶建一把單獨的 Key 並設定額度上限,用完自動停用;你的服務裡再按租戶做請求頻率限制和套餐額度檢查。

某家模型服務出問題時,功能怎麼保持可用?

程式碼裡配置兩個不同廠商的模型,主力返回 429 或 5xx 時自動切到備用。備用模型的提示詞和輸出格式要在上線前測好,避免切換後功能表現差別太大。

每月帳單怎麼拆到租戶?

每次呼叫把 usage 和租戶 ID 記進自己的資料庫;控制台「操作日誌」可以匯出,按 Key 和自己的記錄核對。