原则:一个项目一个 Key,一个环境一个 Key,一个用途一个 Key。不要让一个 Key 同时承担测试、生产、批处理和外部代理。

一、命名结构

示例
org-product-env-purpose-owner
tb-docbot-prod-summary-li-ning
tb-crm-test-classify-zhang-wei
tb-etl-prod-embed-wang-qiang

建议字段至少包含项目、环境、用途、负责人。不要用日期做主标识,改名会让用量统计断裂。

二、为什么要拆

  • 发现异常时能马上知道是哪个项目。
  • 避免测试任务和生产业务抢同一个限流。
  • 便于按项目给预算和报价。
  • 轮换某一个用途时,不影响其他项目。
  • 不同负责人可以有不同的审批链和限额。

三、每个 Key 的基本元数据

字段示例用途
ownerli-ning出现问题时直接找到负责人
projectdocbot项目归属和成本中心
envprod / staging / test控制告警级别
purposesummary / embed / classify判断是否刷量
rate_limit1000 req/h限制意外循环
budget$80/month月度预警
expires_at2026-12-31强制轮换

四、生命周期

  1. 创建:先在内部登记,然后生成 Key。
  2. 验证:先运行 50-100 次实际请求,看格式命中率和失败率。
  3. 接入:设置监控、告警和预算。
  4. 旁观期:上线后 72 小时里必须有更频繁告警。
  5. 轮换:提前 7 天发新 Key,业务双 Key 并行 24-48 小时。
  6. 停用:确认旧 Key 无流量后再删除。

五、常见问题

  • 几个项目共用一个 Key:出问题时无法定位。
  • 测试和生产同 Key:测试任务引起生产限流。
  • 只记录在某人电脑里:人员离职后无法审计。
  • 用真实业务名以外的东西命名,如 test1、new、final,导致后续无法管理。

六、给团队的落地建议

先做三件事,不要一上来就做复杂系统:

  1. 把现有 Key 按项目列一张表,填上负责人。
  2. 把测试与生产的 Key 分开,禁止 test key 进生产。
  3. 给新 Key 统一命名模板,旧的可以慢慢改。

七、审计方法

  • 过去 7 天请求数、tokens、金额三个量都要有记录。
  • 对没有负责人或没有项目归属的 Key 设置为待观察,七天后停用。
  • 同一项目重复用途超过两个时,确认是否真的需要。
  • 每次人员变动后检查其名下 Key,及时移交或停用。

八、实际例子

如果只有两个 key:tb-prod 和 tb-test,当某个项目消耗突然翻三倍时,很难从 key 名称判断是谁出了问题。拆成下面这样:

示例
tb-docbot-prod-summary-li-ning
tb-docbot-prod-embed-li-ning
tb-crm-prod-classify-zhang-wei
tb-crm-prod-response-zhang-wei
tb-internal-test-summary-li-ning

就能按项目、环境、用途、负责人直接报警。

九、命名原则

记住一句话:命名不是为了 descriptive 而已,而是为了出问题时能在 1 分钟内找到对应人和项目。一个能准确定位异常的 key 名称,比一个语义很精细但没人维护的命名更有价值。

参考:OpenAI API key safety