跳到主要内容

合并 Provider 至 Upstream

该版本起,aidy 已合并 Upstream 与 Provider 的语义(只保留 Upstream)。

原模型新模型变化
upstreamupstream保留
新增 protocol 字段
provider-删除
所有内容合并入 upstream
upstream.api_keysupstream.api_keys不变
upstream_modelsupstream_models保留
新增 pricing 字段
provider_pricing-删除
所有内容合并入 upstream_models

在迁移的过程中,会尽可能保持原有数据,所有不存在于 upstream 而存在于 provider 的数据会被迁移固化到 upstream 中、迁移后不再和原 provider 产生关联。

不过 compat 是有损合并 —— 不过考虑到产线应该没有在使用这一能力,因此应该不会受到影响。

相关变更:

  1. 所有之前使用 provider_id 关联的 provider 配置都在本次更新以后被写入 upstream、所有后续对于 upstream 的操作如果存在 provider_id 则都会自动将对应 provider 的配置写入 upstream;但这一关联现在开始只存在于 API 中,后续再修改 provider 的配置不会对 upstream 产生影响
  2. Provider 及 ProviderPricing 相关的 API 预计在 aidy v2.3 完全删除
  3. alias model 的价格现在需要独立配置,不再自动使用 alias_to 指向的 model 的定价(迁移时目前会执行一次性的关联迁移)
  4. provider 的 description 字段无实际意义,因此未迁移到 upstream 中

废弃并忽略 headers

upstream.headers(与 provider.headers)从该版本起已标记为 deprecated,管理 API 不再写入或返回该字段,网关运行时也不再读取该字段。

如需配置最终发往 upstream 的请求头,请使用 request_header_overrides,它的能力更加丰富。

本次变更不会自动把旧的 headers 迁移到 request_header_overrides —— 但产线应该没有在使用这一能力,因此不会受到影响。

新增 upstream 模型发现与测试 API

Management API 的 UpstreamService 新增:

  1. FetchUpstreamModels:通过已创建 upstream 的运行时配置请求上游 `/models`,获得可导入的模型候选
  2. FetchUpstreamModelsByConfig:与 `FetchUpstreamModels` 功能相同,但适用于尚未创建 upstream 的情形
  3. TestUpstreamModel:测试特定的 upstream 模型是否可用

SSRF 防护

该版本增加了 SSRF 防护,且默认启用。

该功能通过限制 Aidy 发起的出站 HTTP 请求来避免 SSRF 攻击。防护在最终请求的 HTTP transport 层执行,覆盖运行时 upstream 请求,以及 FetchUpstreamModels / FetchUpstreamModelsByConfig / TestUpstreamModel

默认策略为启用防护、不允许访问私网地址、无黑白名单、允许所有端口。静态配置 [upstream.ssrf_protection] 提供全局默认策略,tenant 资源的 ssrf_protection 可以整套覆盖该默认策略。

如果 upstream 配置了生效代理 proxy_url,AIDY 会跳过 SSRF 检查,由代理侧承担网络访问控制。

详见 SSRF 防护