openai(RFC 8693 令牌交换)和 anthropic(RFC 7523 jwt-bearer)。请先在提供商侧配置身份提供方和服务账号:
OpenAI、
Anthropic。
配置
Anthropic 读取与官方 SDK 相同的变量,因此现有部署无需修改即可使用:config.yaml 中:
openai-eu 的提供商使用 OPENAI_EU_IDENTITY_TOKEN_FILE。
工作原理
- 第一个请求会等待身份令牌交换完成。访问令牌会被缓存,并在过期前两分钟于后台刷新(寿命很短的令牌会更早刷新),刷新期间请求继续使用缓存的令牌。只有在没有可用的缓存令牌时,请求才会等待交换。
- 每次交换都会重新读取
identity_token_file,因此在磁盘上轮换的令牌始终保持最新。同时设置文件和identity_token时,以文件为准。 - 刷新失败时,缓存的令牌会继续使用,直到过期前 30 秒。失败后,网关会等待 5 秒再重试交换。
- 没有可用的有效令牌时,请求会在不带令牌的情况下发出并被提供商拒绝。网关日志会说明原因(
workload identity token exchange failed)。 - 如果配置了提供商的出站代理,交换也会经过该代理。
- 身份令牌和访问令牌都不会被写入日志。
规则
- 与官方 SDK 一致,API 密钥优先于工作负载身份。两者同时设置时,GoModel 会记录一条警告。迁移时请移除
<PROVIDER>_API_KEY。 - 配置文件中设置了
workload_identity的提供商,除非以其类型命名,否则不会从环境中继承单独的<PROVIDER>_API_KEY。 - 缺少必填字段,或在其他提供商类型上设置
workload_identity,都会导致该提供商无法启动,日志会指出相应字段。 - 工作负载身份通过
config.yaml或环境变量配置,暂不支持在控制台的提供商编辑器中设置。