Skip to content

公开模型 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(fallback price_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 全文 / pricing JSON / 原始供应商响应等敏感字段

错误响应

状态说明
401缺少 / 无效 JWT
403service-token 调用被主动拒绝
500billing_rulesmodel_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 自动缓存信号。

AI Workflow Editor