一个端点,
所有模型。
Tare 是挡在你所有模型前面的一层 OpenAI 兼容网关 —— 我们的,和你自己带来的。一个 base URL、一把 key,每一个 token 都算得清。
API Key
每个请求带 Authorization: Bearer ak-…。
key 是治理的最小单位
这里没有部门/项目这一层:组织架构一旦建模,第一次重组就会和现实脱节,而一份错误的 组织架构比没有更难用。
代价是账单上的 ak-3f2a — $4,200 无法对应到人,所以创建 key 时把用途写清楚,
例如 Support bot (production)。
Key 的属性
| 身份 | 用量、花费与账单均归属该 Key |
| 额度上限 | 可选。失控的任务停在上限,而不是停在账户余额上 |
| 绑定的路由 | 可选。将 Key 绑定到一组指定路由,见 路由 |
| 来源 IP 白名单 | 可选。名单外的调用一律拒绝,见下 |
限定这把 key 只能从哪些地址用
控制台 → API Keys → 编辑那把 key → Only allow this key from certain IP addresses。 一行一条 IP 或 CIDR,IPv4 与 IPv6 都认。
名单外的调用返回 403 且 metadata.refusal_reason = source_ip_not_allowed,
key 本身仍然有效 —— 这是一道围栏不是吊销。它的价值在于:一把泄露出去的 key,
如果还进不了你的网络,就值钱不了多少。
[!WARNING] 要填的是你服务器出网的那个地址,不是它的内网地址,也不是你打开控制台这台电脑的地址。 控制台上会显示「我们看到这台浏览器是 X」,那只是个参照 —— 多数部署下它和服务器 出网的地址不是同一个。
三件容易意外、而且都是刻意如此的事:
- IPv4 和 IPv6 互不代替。 填了
203.0.113.7,而这次调用走的是 IPv6,照样拒。 两种都可能就两个段都填 —— 顺手放过另一族,等于这道闸在没人察觉的时候失效了。 - 关掉开关 ≠ 清空名单。 名单会留着,临时放开一次不用把名单抄到别处去。
- 开着而名单为空 = 全部拒绝,不是全部放行。控制台不让你存成这样,服务端万一遇到 也按拒绝处理。
被拒时,错误消息里会带上我们看到的地址、以及它是从哪个请求头读出来的 —— 排查基本就 是这一句话。常见的三种意外:填了内网地址、服务器走 IPv6 出网、中间还多一层 NAT 或代理。
轮换
建新 key → 发布 → 停用旧的。停用立即生效且可撤销;已记在旧 key 上的用量不会迁移, 当月账单里两把都会出现,这正好可以证明切换过程是完整的。
[!WARNING] 完整的 key 只在创建时显示一次,平台仅存储哈希。丢失后任何人都无法找回,平台同样无法 恢复,只能重新创建。