Provider 系统
wesgine 的 LLM Provider 管理:三种归属、四种策略、密钥管理与 Vision 能力声明。
三种归属
| 归属 | 说明 | 配置方式 |
|---|---|---|
| Shared | Hypervisor 级共享 | hyp.SharedProviders().Reconfigure() |
| Named | 命名共享 Provider | 同上 |
| Private (BYOK) | Cell 私有 | CellSpec.PrivateProviders |
四种 ProviderStrategy
| 策略 | 解析顺序 |
|---|---|
own_only | 仅私有 |
shared_only | 仅共享 |
own_first | 私有优先,fallback 共享 |
shared_first | 共享优先,fallback 私有 |
自动推导
| 条件 | 结果 |
|---|---|
| 只有私有池非空 | own_only |
| 只有共享池非空 | shared_only |
| 两侧都非空 | 必须显式声明(否则 ErrProviderStrategyUnset) |
| 两侧都空 | 保持 unset |
Provider 接口
type Provider interface {
Stream(ctx context.Context, cellID string, req Request) (Stream, error)
}
每次调用带 cellID → per-cell health tracking / rate limit / 使用量。
SecretRef 三源
| Source | 说明 | 换机恢复代价 |
|---|---|---|
inline | 明文经 AES-256-GCM 封套后落盘 | 密文与 spec.key 同机,拷走 DB 不带 key 失效 |
env | 环境变量引用 | 换机重放注入方 |
live | 运行时回调 | 换机重放注入方 |
inline 封套
明文 API Key
↓ config.MapSecretValues(spec, box.Seal)
AES-256-GCM 密文 → hypervisor.db
密钥 → {DataDir}/secrets/spec.key (0600)
vault 已删除
vault 源已从 wesgine 中删除——它是一个无实现方注入的 Resolver 接口,source:vault 的每次解析都报错。
Vision 能力声明
v1.0.1 破坏性变更:
| 旧 | 新 |
|---|---|
ProviderConfig.SupportsVision | ❌ 已删 |
ProviderConfig.VisionModel | ❌ 已删 |
| — | Models[].SupportsVision |
Vision 是 Model 的能力,不是 Provider 的能力。
请求含图片但模型未声明 SupportsVision=true → ErrVisionNotSupported(硬错误,不再静默剥离图片)。
Token 用量
查询
GET /cells/{id}/observe/token-usage
支持多维过滤:
GroupBy:model / agent / session / day / tag:actorTags/Model/Session/From/To
聚合
GET /cells/{id}/observe/token-summary
GET /cells/{id}/observe/token-usage/aggregate?agent=&group_by=day&days=
Provider 连通性测试
POST /cells/{id}/providers/test
| mode | 说明 |
|---|---|
| 空(默认) | Chat 测试 |
embedding | Embedding 测试 |
vision | Vision 挑战码 probe |
Cell 级 Embedding
POST /cells/{id}/embeddings
OpenAI 兼容接口,密钥服务端解析。
Billing 不变量
| ID | 规则 |
|---|---|
| INV-BILLING-01 | wes: 访问权 = UserStatus + LLM Proxy |
| INV-BILLING-02 | Token refresh 检查 UserStatus |
| INV-BILLING-03 | LLM Proxy 转发前检查 UserStatus |
| INV-BILLING-04 | BillingRequired=true 的 JWT 过期后 fallback BYOK |
| INV-BILLING-05 | 应用层不做 billing pre-check |
相关文档
- CellSpec 总览 →
cellspec-overview.md - Secret 管理 →
secret-management.md - LLM Catalog →
llm-catalog.md