公开模型 API
普通登录用户可读的模型列表 + capability 视图。后端做完整映射,不暴露 raw_data 等供应商原始元数据。
基础路径
/api/models认证方式
combinedAuth 中间件,仅支持 JWT Bearer Token(service-token 主动 403)。
Authorization: Bearer <jwt_token>
X-Server-Mode: cloud | selfhosted | raspberry端点列表
GET /api/models
2026-05-07 新增:替代前端
services/ai-models.ts直连 supabase 读billing_rules+model_provider_costs的路径。后端做完整mapToPublicAiModel映射 + 字段白名单,避免普通用户拿到model_provider_costs.raw_data等供应商原始元数据。详见plans/2026-05-07-supabase-security-followups.md§1。
请求
http
GET /api/models
Authorization: Bearer <jwt_token>无 query / body 参数。
响应
json
{
"models": [
{
"id": "gpt-4o",
"name": "GPT-4o",
"provider": "openai",
"logo": "",
"description": "gpt-4o",
"contextWindow": "128,000 tokens",
"pricing": { "input": "$2.50", "output": "$10.00" },
"capabilities": [
{ "id": "text", "name": "Text", "icon": "i-tabler:letter-case", "enabled": true },
{ "id": "tools", "name": "Tools", "icon": "i-tabler:tool", "enabled": true },
{ "id": "vision", "name": "Vision", "icon": "i-tabler:photo", "enabled": true }
],
"features": {
"supportsFormatting": true,
"supportsMultimodal": true,
"supportsReasoning": false,
"supportsTunableReasoning": false,
"supportsThinking": false
},
"defaultSettings": { "creativity": 0.5, "reasoningEffort": "medium" },
"metadata": {
"inputModalities": [],
"outputModalities": [],
"supportedParameters": ["tools", "response_format"],
"categories": [],
"tags": [],
"contextLengthTokens": 128000,
"promptPriceRaw": null,
"completionPriceRaw": null,
"pricingUnit": null,
"pricingCurrency": null
},
"enabled": true,
"recommended": true,
"sortOrder": 0,
"tags": ["recommended"],
"version": "4.0",
"org": "OpenAI"
}
]
}字段说明
pricing.input/pricing.output:基于billing_rules.price_input_cents/price_output_cents(fallbackprice_cents),渲染为$x.xx字符串capabilities[]:优先取billing_rules.capabilities的运营配置;缺省时根据model_provider_costs.raw_data.supported_parameters推断structured/reasoning能力。structured可由严格 JSON Schema 或 JSON Mode(json_object)派生。metadata.supportedParameters:从raw_data.supported_parameters提取的字符串数组(白名单)- 不返回:
raw_data全文 /pricingJSON / 原始供应商响应等敏感字段
错误响应
| 状态 | 说明 |
|---|---|
| 401 | 缺少 / 无效 JWT |
| 403 | service-token 调用被主动拒绝 |
| 500 | billing_rules 或 model_provider_costs 读取失败 |
GET /api/models/:modelId/capabilities
返回模型公开 capability 视图(含基础响应;admin 用户额外返回 variants[] 明细)。
详见 apps/backend/src/services/ai/capabilities/public-capability-view.ts。
当前模型级 capability 使用 15-key 三态模型,其中 json_object 表示 JSON Mode(仅保证合法 JSON,不校验 schema),structured_outputs_strict 表示严格 JSON Schema (strict),prompt_cache_auto 表示 OpenAI Chat 兼容协议的 usage 自动缓存信号。