跳到主要内容

PG 运行时与 Seed

当前 Aidy 运行时统一来自 PostgreSQL。

PG runtime 资源

seed 主要覆盖这些资源:

  • providers
  • provider_pricings
  • tenants
  • routes
  • upstreams
  • consumers
  • consumer_api_keys

注意:

  • 上游 API key 直接写在 upstreams[].api_keys[]
  • upstream model 也直接写在 upstreams[] 里,不再单独定义顶层 upstream_models
  • providers[].headersupstreams[].headers 只接受扁平 string -> string 映射

Seed 命令

go run ./cmd/aidy-gateway seed --profile dev

常用封装:

just db-seed
just db-seed profile=demo
just db-seed --seed-file ./examples/config/custom.seed.yaml

执行顺序固定为:

  1. 删除当前 schema 中的所有表(包含 schema_migrations
  2. 重新执行内置 migration
  3. 再写入 seed profile

所以 seed 命令现在是“重建式初始化”,不是在现有数据上做增量 upsert。

示例

providers:
- id: gp_dev_openai
source_scope: global
source_ref_id: ""
name: openai-dev
protocol: chat-completions
base_url: http://127.0.0.1:18000/v1

provider_pricings:
- id: ppr_dev_mock
provider_id: gp_dev_openai
model: mock
pricing:
basePricing:
textInput: 500
textOutput: 1500

tenants:
- id: tn_dev
name: Dev Tenant
status: active

routes:
- id: rt_dev
tenant_id: tn_dev
name: dev
path_prefix: /mock

upstreams:
- id: ups_dev_primary
tenant_id: tn_dev
provider_id: gp_dev_openai
name: primary
models:
- mock
model_alias:
mock-latest: mock
api_keys:
- id: uak_dev_primary
name: primary
key: sk-upstream-dev

consumers:
- id: cs_dev_default
tenant_id: tn_dev
name: dev-default
status: active
unlimited_credit: true

consumer_api_keys:
- id: cak_dev_default
tenant_id: tn_dev
consumer_id: cs_dev_default
name: dev-default
token: sk-mock
unlimited_credit: true

语义

Upstream API keys

在 seed 中,upstream key 直接写在 upstreams[].api_keys[] 下。

当前直接写完整 key

api_keys:
- id: uak_dev_primary
name: primary
key: sk-upstream-dev

Provider pricings

provider_pricings[].pricing 使用固定的 JSON 结构:

pricing:
basePricing:
textInput: 500
textOutput: 1500
adjustments:
- mode: ADJUSTMENT_MODE_MULTIPLIER
when:
serviceTier: priority
values:
textInput: 2
textOutput: 2

规则:

  • 不再写 unitunit_sizecurrencyinputoutput
  • 所有数字都表示“每 1,000,000 tokens 的 credit”
  • basePricing 只支持 textInputtextOutputtextInputCacheReadtextInputCacheWrite
  • adjustments 为可选数组,支持 modewhenunlessvalues

Upstream models

seed 中不再单独定义顶层 upstream_models

  • upstreams[].models[] 中的每个字符串都会展开成一条普通模型映射
  • upstreams[].model_alias 中的每个 alias: target 都会展开成一条 alias 映射

示例:

upstreams:
- id: ups_dev_primary
tenant_id: tn_dev
provider_id: gp_dev_openai
name: primary
models:
- gpt-4o-mini
model_alias:
gpt-4o-mini-latest: gpt-4o-mini

分组

  • routes.groups
  • consumers.groups
  • consumer_api_keys.groups

这些字段留空时表示“不限制任何组”。

upstreams.group 仍默认 default