为 SaaS 产品集成 AI 功能
给 SaaS 产品加 AI 功能(摘要、写作助手、智能搜索),通常用一个性价比高的对话模型做主力,另一家厂商的模型做降级备用,再用向量模型支撑产品内搜索。按每月 30 万次 AI 调用、3% 走备用模型估算,用最低价分组计算,模型费用每月约 ¥1,496。每个租户或环境用单独的 Key,额度和权限分开管理。
价格更新于 2026年11月12日 20:17|
01
业务问题
在 SaaS 产品里接一个模型、把功能调通并不难,麻烦在上线之后:租户之间用量差别很大,怎么限额;某家模型服务出问题时,功能还能不能用;每月账单怎么拆到每个租户头上。
如果分别对接各家厂商,每多一个模型就多一套 SDK、一份合同、一种付款方式,切换模型和降级都要改代码。
通过一个兼容接口接入,同一套代码就能调用多家模型;在控制台给每把 Key 设好额度、过期时间和白名单,再按 Key 导出用量对账。
02
推荐模型组合
主力模型(对话)
gpt-5.4-miniOpenAI输入 ¥1.5 / 输出 ¥9 每百万 tokens· 标准分组承担绝大部分 AI 功能调用,选质量稳定、价格适中的模型。产品里的提示词和输出格式都按它来调。
降级备用(另一家厂商)
Claude Haiku 5.5Anthropic输入 ¥0.4 / 输出 ¥2 每百万 tokens· Claude 优质分组主力模型返回 429 或 5xx 时自动切换,单一厂商出问题不至于直接影响你的产品。备用模型的输出格式要提前测好。
产品内搜索(Embeddings)
text-embedding-3-smallOpenAI输入 ¥0.04 / 输出 ¥0.04 每百万 tokens· 标准分组给文档、工单、知识库内容做语义搜索和相似推荐,调用量大,但单价低。
推荐模型按实时目录自动选取,价格取各模型最低价分组,更新于 2026年11月12日 20:17。点模型名可查看全部分组价格。
03
参考架构
- 1
服务端代理
所有模型调用都从你的后端发出。Key 只放在服务端的环境变量或密钥管理服务里,前端只调用你自己的接口。
- 2
按租户分 Key
每个大客户或每个环境(测试、生产)单独建一把 API Key,设置额度上限、过期时间、模型白名单和服务器 IP 白名单。
- 3
限额与降级
你的服务里按租户限制请求频率;主力模型返回 429 或 5xx 时切换到备用模型,其他 4xx 错误直接返回给调用方处理。
- 4
记录用量
每次调用记下租户、模型和响应里的 usage,写进自己的数据库,用来向租户计费或控制套餐额度。
- 5
月度对账
每月导出控制台的用量明细,按 Key 和自己的记录对账;发现异常用量,及时停用对应的 Key。
04
成本估算
假设:产品每月产生 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月12日 20:17。
只含模型调用费用,不含你的服务器和数据库成本。降级比例只是假设,实际取决于主力模型的状况;文档首次入库的向量化费用另算。调用量翻倍,费用大致翻倍。
05
示例代码
每个租户用自己的 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://open.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 和自己的记录核对。