1. 页面概览

LLM 网关页(路由 /admin/llm-gateway)是 AIP 管理后台面向管理员的大模型网关控制台,把平台 LLM 网关的运行态与配置态集中在一页:Provider 状态只读总览(可用性/模型/成本/熔断/健康)、LLM 路由规则与预算限额管理(成本管控,含新增/编辑/删除)、Provider 持久化配置(新增/更新,API Key 加密写入)、用量统计面板(summary 指标 + 最近调用记录)以及网关试调。所有请求走 aipClient/aip-api/v1 → AIP 18080)。

一句话总结:本页是 LLM 网关的「状态台 + 配置台 + 试调台」,管理员在此查看 Provider 健康、调整路由与预算、维护密钥并实时验证调用。

2. 访问入口

3. 界面布局

+--------------------------------------------------------------+
| LLM 网关                                  [刷新]               |
| Provider 状态:名称|类型|可用|模型|成本(每1k)|熔断|健康           |
| LLM 路由规则(成本管控):预算开关/用户限额/应用限额 [+新增路由][刷新]|
|   表格:ID|任务类型|模型别名|候选Provider|降级链|限额(分)|启用|编辑|删除|
| Provider 配置(新增/更新,API Key 加密写入):[新增 Provider][更新既有]|
|   ID*(更新态)/名称/服务地址/默认模型/每千token成本/权重/API Key/优先级/说明+启用开关|
|    [创建 Provider / 保存 Provider] [清空]                      |
| 用量概览:指标卡 + 最近调用记录表                                |
| 网关试调:任务类型+消息 [发送试调][清空结果] → 结果+usage          |
+--------------------------------------------------------------+

各板块职责:

4. 交互元素

控件位置含义与作用
刷新页面头部并行刷新 providers / routes / usage,加载中禁用
+ 新增路由路由卡片工具栏打开新建路由弹窗(task_type 必填、model_alias 留空默认同 task_type、预算、候选、降级链、说明、启用);提交 POST /llm/routes 并热同步
编辑路由表格操作列打开「编辑路由 #ID」弹窗:预算限额(分,0=不限)、启用开关、候选 Provider(provider_order)、降级链(fallback_order)、说明;保存 PUT /llm/routes/:id 并热同步
删除路由表格操作列window.confirm 二次确认后 DELETE /llm/routes/:id,删除成功刷新列表并热同步(该任务回落默认降级链)
新增/更新既有 ProviderProvider 卡片模式开关切换表单模式:「新增 Provider」(隐藏 ID 字段,提交 POST /llm/providers,name 必填且唯一)与「更新既有 Provider」(按主键 ID 提交 PUT /llm/providers/:id
创建/保存 ProviderProvider 表单新增模式校验 name 后 POST;更新模式校验 Provider ID 后 PUT,成功后刷新状态表
清空Provider 表单重置表单为初始空值并保留当前模式
发送试调网关试调卡片POST /llm/chat,结果展示 Provider/模型/延迟/成本/降级 + 返回内容 + usage

次要控件:预算 chip、试调「清空结果」、alert「关闭」、is_active 开关;任务类型下拉为 chat/nlq/generate_sql/summarize/esg_report/deep_report。

新增/删除能力已接线(Provider 删除除外):后端 admin 组已补 POST /llm/routesDELETE /llm/routes/:idPOST /llm/providersplatform/llm/handler.goRegisterRoutes,分别接线仓储 UpsertRoute/DeleteRouteByID/CreateProvider),前端据此提供真实入口:路由可新增(按 task_type + model_alias 唯一键 Upsert)与删除(二次确认),Provider 可新增(name 唯一,重名 409)。删除 Provider 仍未开放:仓储层无删除方法,且网关 SyncFromDB 只做 Provider 的更新/新增同步、无移除语义(删行会让内存 Provider 池残留幽灵条目),故留待后端补齐后再开放,Provider 卡片内保留一条简短说明。

5. 后端关联

5.1 端点表

方法路径用途
GET/llm/providersProvider 运行态(name/kind/available/model/cost_per_1k/circuit_state/health),登录组
GET/llm/usage?limit=100用量 summary + 最近 records,登录组
POST/llm/chat网关试调,登录组
GET/llm/routes路由列表 + 预算(enabled/user_limit_cents/app_limit_cents),admin 组
POST/llm/routes新增路由(按 task_type+model_alias 唯一键 Upsert;新建 201、命中既有行 200),admin 组
PUT/llm/routes/:id部分更新路由,保存后热同步,admin 组
DELETE/llm/routes/:id删除路由(不存在 404 LLM_ROUTE_NOT_FOUND),删除后热同步,admin 组
POST/llm/providers新增 Provider(name 必填且唯一,重名 409 LLM_PROVIDER_NAME_CONFLICT;api_key 加密存储),admin 组
PUT/llm/providers/:id更新 Provider 配置,api_key 加密存储,admin 组

5.2 关键机制

6. 权限与安全

7. 常见问题与排错

8. 已知缺陷与边界

说明
Provider 状态只读状态表为运行时只读,修改需走下方「Provider 配置更新」表单
路由增删不可用(已修复)后端 RegisterRoutes 已补 POST /llm/routes(接线 UpsertRoute)与 DELETE /llm/routes/:id(接线 DeleteRouteByID),前端路由卡片提供「+ 新增路由」与行内「删除」(二次确认)
Provider 删除不可用(后端缺口后端已补 POST /llm/providers(接线 CreateProvider),前端可新增 Provider;但仓储层无删除 Provider 方法,且网关 SyncFromDB 无 Provider 移除语义(删除后内存 Provider 池会残留幽灵条目),故 DELETE /llm/providers/:id 未提供,Provider 卡片刻有简短说明
路由新增为 Upsert 语义POST /llm/routestask_type + model_alias 为唯一键:同名同别名重复提交即更新既有行(返回 200 created:false),而非报冲突,前端提示按「已创建/已更新」区分
密钥不回显编辑 Provider 时 API Key 留空表示不修改,无法查看已有密钥
用量口径依赖后端summary 指标按后端 recorder 口径聚合,历史窗口与保留策略由后端决定