diff --git a/README.md b/README.md index c629167..1e2bed2 100644 --- a/README.md +++ b/README.md @@ -26,7 +26,7 @@ PR #1 曾把 reasoning 模型的 `defaultTemperature` / `defaultTopP` 写为 `nu | `provider.schema.json` | `compute/providers/*.json`、`compute/coding-plans/*.json` | `defaultTemperature`/`defaultTopP` 必须是 number,禁止 null/string;`additionalProperties: false` | | `manifest.schema.json` | `manifest.json` | `presetDataVersion` 必须是递增整数 | | `service-map.schema.json` | `compute/service-map.json` | 每条映射须含 `modelName` + `providerId` | -| `smart-model-catalog.schema.json` | `compute/smart-routing/model-catalog.json` | 智能路由三档量级、接入面、exact model 能力和稳定优先级 | +| `model-spec.schema.json` + `model-specs-index.schema.json` | `compute/model-specs/*.json` + `_index.json` | 模型内在规格、智能路由三档、exact model 策略与稳定优先级 | | `providers-index.schema.json` | 两个 `_index.json` | `order` 数组无重复 | | `pricing.schema.json` | `compute/pricing.json` | `markupRatio` / `usdToCny` 为正数 | @@ -63,16 +63,14 @@ PR #1 曾把 reasoning 模型的 `defaultTemperature` / `defaultTopP` 写为 `nu 否则老客户端会因未知字段校验失败死锁。 -### 智能路由目录的边界 +### 智能路由的模型规格边界 -`compute/smart-routing/model-catalog.json` 是路由器直接消费的、按接入面核对过的策略快照: +`compute/model-specs` 是智能路由唯一的模型规格主数据: -- `tier`、`routingPriority`、`eligibleForAgent` 和 `defaultReference` 属于路由策略; -- `capabilities`、上下文和 reasoning 是该 `providerId + model` 接入面的可用能力快照; -- 它不声明 API key、baseUrl、登录状态、用户额度或实时计价;`desirecore-cloud` 的连接与计费状态仍由登录后的 Provider 接口动态下发; -- Codex、Claude 条目必须能在对应 `compute/providers/*.json` 中按 exact model 找到,测试会阻止已下线模型继续参与路由。 - -客户端把本文件作为可热更新主数据源,并保留同 Schema 的内置离线兜底。调整 Provider 或 model-spec 的能力事实时,应同步审阅本目录,避免路由快照漂移。 +- 每个 ModelSpec 的 `spec` 保存能力、上下文和输出上限;`routing` 保存 tier、稳定优先级、Agent 可选性和标准化 reasoning 合同; +- `_index.json#routingTiers` 保存三档展示和回退顺序;不得创建 `compute/smart-routing/**` 等平行目录; +- Provider 仅保存接入面、可用性、凭据和必要的接入面收紧;历史 Provider 模型字段是旧客户端兼容副本,不能覆盖 ModelSpec; +- `desirecore-cloud` 的连接、订阅、网关与计费仍由登录后的 Provider 接口动态下发,只有精确匹配 ModelSpec 的模型才可参加智能路由。 --- @@ -90,8 +88,8 @@ CI(GitHub Actions)会在每个 PR 自动运行 `validate` 和 `test`,不 ## 数据修改流程 -1. 编辑 `compute/providers/.json`、`compute/coding-plans/.json`、`compute/service-map.json` 或 `compute/smart-routing/model-catalog.json` -2. 编辑 `compute/providers/_index.json` 或 `coding-plans/_index.json`(新增/删除 provider 时) +1. 编辑 `compute/model-specs/.json`(模型规格或智能路由策略)、`compute/providers/.json`(接入面覆盖)、`compute/coding-plans/.json` 或 `compute/service-map.json` +2. 编辑 `compute/model-specs/_index.json`(新增规格文件或调整三档策略)、`compute/providers/_index.json` 或 `coding-plans/_index.json`(新增/删除 provider 时) 3. **必须**递增 `manifest.json#presetDataVersion`,并更新 `updatedAt` 4. `npm run validate` 本地确认通过 5. 提 PR,等 CI 校验通过 @@ -107,4 +105,4 @@ CI(GitHub Actions)会在每个 PR 自动运行 `validate` 和 `test`,不 - **构建期同步**:`npm run sync-config-center` 把数据复制到 desirecore 主仓 `lib/agent-service/defaults/` - **运行时同步**:客户端启动后后台 git fetch 本仓库,每 30 分钟检查一次远程更新 - **版本比对**:`presetDataVersion`(递增整数)+ digest(SHA-256)双重校验 -- **智能路由目录**:新客户端按文件 mtime 热加载 `compute/smart-routing/model-catalog.json`;缺失或校验失败时使用随客户端发布的内置 JSON +- **智能路由规格**:新客户端按 `compute/model-specs/_index.json` 与已列出 ModelSpec 文件的版本签名热加载;缺失、无精确匹配或校验失败时,该模型不会进入 Smart 路由,fixed 模式保持兼容 diff --git a/__tests__/validate.test.mjs b/__tests__/validate.test.mjs index 93a243e..12a5380 100644 --- a/__tests__/validate.test.mjs +++ b/__tests__/validate.test.mjs @@ -13,7 +13,7 @@ import { describe, it } from 'node:test' import { strict as assert } from 'node:assert' -import { readFileSync, readdirSync } from 'node:fs' +import { existsSync, readFileSync, readdirSync } from 'node:fs' import { dirname, join, resolve } from 'node:path' import { fileURLToPath } from 'node:url' import { Ajv } from 'ajv' @@ -85,50 +85,32 @@ describe('真实数据全量校验', () => { assert.equal(result.ok, true, JSON.stringify(result.errors, null, 2)) }) - it('智能路由模型目录应通过 smart-model-catalog schema', () => { - const result = validateFile( - join(ROOT, 'compute', 'smart-routing', 'model-catalog.json'), - validators, - ) + it('model-specs 是智能路由的唯一规格主数据', () => { + const indexPath = join(ROOT, 'compute', 'model-specs', '_index.json') + const result = validateFile(indexPath, validators) assert.equal(result.ok, true, JSON.stringify(result.errors, null, 2)) - const catalog = JSON.parse(readFileSync( - join(ROOT, 'compute', 'smart-routing', 'model-catalog.json'), - 'utf8', - )) - assert.deepEqual(catalog.tiers.map((tier) => tier.id), [ + const index = JSON.parse(readFileSync(indexPath, 'utf8')) + assert.deepEqual(index.routingTiers.map((tier) => tier.id), [ 'flagship', 'balanced', 'lightweight', ]) - assert.deepEqual(catalog.providers.map((provider) => provider.provider), [ - 'openai-codex', - 'anthropic-claude', - 'desirecore-cloud', - ]) - assert.equal( - catalog.providers.flatMap((provider) => provider.models).length, - 37, - ) + assert.equal(existsSync(join(ROOT, 'compute', 'smart-routing')), false) - for (const provider of catalog.providers.filter((item) => item.provider !== 'desirecore-cloud')) { - const providerFile = JSON.parse(readFileSync( - join(ROOT, 'compute', 'providers', `${provider.provider}.json`), - 'utf8', - )) - assert.equal(providerFile.id, provider.providerId) - const publishedModels = new Set(providerFile.models.map((model) => model.modelName)) - for (const model of provider.models) { - assert.equal( - publishedModels.has(model.model), - true, - `${provider.providerId}/${model.model} 必须存在于对应接入面 Provider 清单`, - ) + const routed = [] + for (const name of index.order) { + const file = JSON.parse(readFileSync(join(ROOT, 'compute', 'model-specs', `${name}.json`), 'utf8')) + for (const spec of file.specs) { + if (spec.routing) routed.push(spec) } } + assert.equal(routed.length, 37) + assert.equal(routed.every((spec) => spec.routing.reasoning.supportedModes.includes(spec.routing.reasoning.defaultMode)), true) + assert.equal(routed.every((spec) => Array.isArray(spec.spec.capabilities)), true) }) - it('两个 _index.json 应通过 providers-index schema', () => { + it('Provider 与 coding plan 的 _index.json 应通过 providers-index schema', () => { const r1 = validateFile(join(ROOT, 'compute', 'providers', '_index.json'), validators) const r2 = validateFile(join(ROOT, 'compute', 'coding-plans', '_index.json'), validators) assert.equal(r1.ok, true, JSON.stringify(r1.errors, null, 2)) @@ -375,24 +357,19 @@ describe('真实数据全量校验', () => { }) }) -describe('智能路由模型目录 schema 反例', () => { - const validate = compile('smart-model-catalog') +describe('model-specs 智能路由 schema 反例', () => { + const validate = compile('model-spec') - it('拒绝未声明的策略字段,避免新旧客户端静默分叉', () => { - const data = JSON.parse(readFileSync( - join(ROOT, 'compute', 'smart-routing', 'model-catalog.json'), - 'utf8', - )) - data.providers[0].models[0].unknownRoutingPolicy = true + it('拒绝未声明的 routing 字段,避免策略静默分叉', () => { + const data = JSON.parse(readFileSync(join(ROOT, 'compute', 'model-specs', 'openai.json'), 'utf8')) + data.specs.find((spec) => spec.routing).routing.unknownRoutingPolicy = true assert.equal(validate(data), false) }) - it('拒绝当前客户端未声明支持的目录版本', () => { - const data = JSON.parse(readFileSync( - join(ROOT, 'compute', 'smart-routing', 'model-catalog.json'), - 'utf8', - )) - data.version = 2 + it('拒绝默认 reasoning 不在模型支持集合中的策略', () => { + const data = JSON.parse(readFileSync(join(ROOT, 'compute', 'model-specs', 'openai.json'), 'utf8')) + data.specs.find((spec) => spec.routing).routing.reasoning.defaultMode = 'max' + data.specs.find((spec) => spec.routing).routing.reasoning.supportedModes = ['auto'] assert.equal(validate(data), false) }) }) diff --git a/compute/model-specs/_index.json b/compute/model-specs/_index.json index 1268241..30e80cc 100644 --- a/compute/model-specs/_index.json +++ b/compute/model-specs/_index.json @@ -1,5 +1,5 @@ { - "description": "模型规格库加载顺序索引。元素为对应 JSON 文件的 basename(不含 .json)。", + "description": "模型规格库加载顺序索引,以及智能路由三档的同域定义。模型级路由策略仅写入各 ModelSpec 的 routing 字段,不另建 smart-routing 目录。", "order": [ "anthropic", "openai", @@ -23,5 +23,28 @@ "volcengine", "xunfei", "happyhorse" + ], + "routingTiers": [ + { + "id": "flagship", + "label": "旗舰", + "labelEn": "Flagship", + "description": "最高能力,适合复杂推理、关键交付和长程智能体任务。", + "fallbackOrder": ["flagship", "balanced", "lightweight"] + }, + { + "id": "balanced", + "label": "均衡", + "labelEn": "Balanced", + "description": "质量、速度与成本平衡,适合大多数日常任务。", + "fallbackOrder": ["balanced", "flagship", "lightweight"] + }, + { + "id": "lightweight", + "label": "轻量", + "labelEn": "Lightweight", + "description": "优先低延迟与低成本,适合明确、短链路和批量任务。", + "fallbackOrder": ["lightweight", "balanced", "flagship"] + } ] } diff --git a/compute/model-specs/anthropic.json b/compute/model-specs/anthropic.json index 70bc816..3ba1292 100644 --- a/compute/model-specs/anthropic.json +++ b/compute/model-specs/anthropic.json @@ -5,40 +5,117 @@ "id": "claude-fable-5", "displayName": "Claude Fable 5", "family": "claude-fable", - "match": { "exact": ["claude-fable-5"], "patterns": ["claude-fable-5*"] }, + "match": { + "exact": [ + "claude-fable-5" + ], + "patterns": [ + "claude-fable-5*" + ] + }, "spec": { "contextWindow": 1000000, "maxOutputTokens": 128000, - "capabilities": ["chat", "reasoning", "deep_thinking", "code", "vision", "tool_use", "long_context"], - "serviceType": ["chat"], + "capabilities": [ + "chat", + "reasoning", + "deep_thinking", + "code", + "vision", + "tool_use", + "long_context" + ], + "serviceType": [ + "chat" + ], "supportsReasoning": true, "description": "Anthropic 最强模型,基于 Mythos 架构,支持自主知识工作" + }, + "routing": { + "tier": "flagship", + "routingPriority": 20, + "eligibleForAgent": true, + "defaultReference": false, + "reasoning": { + "supportedModes": [ + "auto", + "low", + "medium", + "high", + "xhigh", + "max" + ], + "defaultMode": "xhigh" + } } }, { "id": "claude-opus-5", "displayName": "Claude Opus 5", "family": "claude-opus", - "match": { "patterns": ["claude-opus-5*"] }, + "match": { + "patterns": [ + "claude-opus-5*" + ] + }, "spec": { "contextWindow": 1000000, "maxOutputTokens": 128000, - "capabilities": ["chat", "reasoning", "code", "vision", "tool_use", "long_context"], - "serviceType": ["chat"], + "capabilities": [ + "chat", + "reasoning", + "code", + "vision", + "tool_use", + "long_context" + ], + "serviceType": [ + "chat" + ], "supportsReasoning": true, "description": "Claude Opus 5,Anthropic Opus 系列当前旗舰;思考默认开启,effort 支持到 max" + }, + "routing": { + "tier": "flagship", + "routingPriority": 25, + "eligibleForAgent": true, + "defaultReference": false, + "reasoning": { + "supportedModes": [ + "auto", + "low", + "medium", + "high", + "xhigh", + "max" + ], + "defaultMode": "xhigh" + } } }, { "id": "claude-opus-4-8", "displayName": "Claude Opus 4.8", "family": "claude-opus", - "match": { "patterns": ["claude-opus-4-8*"] }, + "match": { + "patterns": [ + "claude-opus-4-8*" + ] + }, "spec": { "contextWindow": 1000000, "maxOutputTokens": 128000, - "capabilities": ["chat", "reasoning", "code", "vision", "tool_use", "long_context"], - "serviceType": ["chat"], + "capabilities": [ + "chat", + "reasoning", + "code", + "vision", + "tool_use", + "long_context" + ], + "serviceType": [ + "chat" + ], "supportsReasoning": true, "description": "Claude Opus 4.8,Anthropic Opus 系列最新旗舰" } @@ -47,12 +124,24 @@ "id": "claude-opus-4-7", "displayName": "Claude Opus 4.7", "family": "claude-opus", - "match": { "patterns": ["claude-opus-4-7*"] }, + "match": { + "patterns": [ + "claude-opus-4-7*" + ] + }, "spec": { "contextWindow": 1000000, "maxOutputTokens": 128000, - "capabilities": ["chat", "reasoning", "code", "vision", "tool_use"], - "serviceType": ["chat"], + "capabilities": [ + "chat", + "reasoning", + "code", + "vision", + "tool_use" + ], + "serviceType": [ + "chat" + ], "defaultTemperature": 1, "supportsReasoning": true, "description": "Anthropic 当前最强通用模型,适合复杂推理和智能体编码任务" @@ -62,26 +151,71 @@ "id": "claude-sonnet-5", "displayName": "Claude Sonnet 5", "family": "claude-sonnet", - "match": { "patterns": ["claude-sonnet-5*"] }, + "match": { + "patterns": [ + "claude-sonnet-5*" + ] + }, "spec": { "contextWindow": 1000000, "maxOutputTokens": 128000, - "capabilities": ["chat", "reasoning", "code", "vision", "tool_use", "computer_use", "long_context"], - "serviceType": ["chat"], + "capabilities": [ + "chat", + "reasoning", + "code", + "vision", + "tool_use", + "computer_use", + "long_context" + ], + "serviceType": [ + "chat" + ], "supportsReasoning": true, "description": "Claude Sonnet 5,速度与智能平衡;思考默认开启,effort 支持到 max" + }, + "routing": { + "tier": "balanced", + "routingPriority": 20, + "eligibleForAgent": true, + "defaultReference": false, + "reasoning": { + "supportedModes": [ + "auto", + "low", + "medium", + "high", + "xhigh", + "max" + ], + "defaultMode": "xhigh" + } } }, { "id": "claude-sonnet-4-6", "displayName": "Claude Sonnet 4.6", "family": "claude-sonnet", - "match": { "patterns": ["claude-sonnet-4-6*"] }, + "match": { + "patterns": [ + "claude-sonnet-4-6*" + ] + }, "spec": { "contextWindow": 1000000, "maxOutputTokens": 64000, - "capabilities": ["chat", "reasoning", "code", "vision", "tool_use", "computer_use"], - "serviceType": ["chat", "computer_use"], + "capabilities": [ + "chat", + "reasoning", + "code", + "vision", + "tool_use", + "computer_use" + ], + "serviceType": [ + "chat", + "computer_use" + ], "defaultTemperature": 1, "supportsReasoning": true, "description": "Anthropic 高智能高速度模型,适合编码、工具使用和智能体任务" @@ -91,12 +225,24 @@ "id": "claude-sonnet-4-5", "displayName": "Claude Sonnet 4.5", "family": "claude-sonnet", - "match": { "patterns": ["claude-sonnet-4-5*"] }, + "match": { + "patterns": [ + "claude-sonnet-4-5*" + ] + }, "spec": { "contextWindow": 1000000, "maxOutputTokens": 64000, - "capabilities": ["chat", "reasoning", "code", "vision", "tool_use"], - "serviceType": ["chat"], + "capabilities": [ + "chat", + "reasoning", + "code", + "vision", + "tool_use" + ], + "serviceType": [ + "chat" + ], "defaultTemperature": 1, "supportsReasoning": true, "description": "Anthropic 主力模型,长文本与代码任务表现优异" @@ -106,15 +252,39 @@ "id": "claude-haiku-4-5", "displayName": "Claude Haiku 4.5", "family": "claude-haiku", - "match": { "patterns": ["claude-haiku-4-5*"] }, + "match": { + "patterns": [ + "claude-haiku-4-5*" + ] + }, "spec": { "contextWindow": 200000, "maxOutputTokens": 64000, - "capabilities": ["chat", "reasoning", "code", "vision", "tool_use"], - "serviceType": ["chat"], + "capabilities": [ + "chat", + "reasoning", + "code", + "vision", + "tool_use" + ], + "serviceType": [ + "chat" + ], "defaultTemperature": 1, "supportsReasoning": true, "description": "Anthropic 最快模型,具备接近前沿模型的智能水平" + }, + "routing": { + "tier": "lightweight", + "routingPriority": 20, + "eligibleForAgent": true, + "defaultReference": false, + "reasoning": { + "supportedModes": [ + "auto" + ], + "defaultMode": "auto" + } } } ] diff --git a/compute/model-specs/baichuan.json b/compute/model-specs/baichuan.json index 424917b..d88a8ec 100644 --- a/compute/model-specs/baichuan.json +++ b/compute/model-specs/baichuan.json @@ -5,12 +5,26 @@ "id": "Baichuan-M3-Plus", "displayName": "百川 M3-Plus", "family": "baichuan-m3", - "match": { "exact": ["Baichuan-M3-Plus"] }, + "match": { + "exact": [ + "Baichuan-M3-Plus" + ] + }, "spec": { "contextWindow": 32000, "maxOutputTokens": 32000, - "capabilities": ["chat", "reasoning", "code", "multilingual", "vision", "long_context", "medical"], - "serviceType": ["chat"], + "capabilities": [ + "chat", + "reasoning", + "code", + "multilingual", + "vision", + "long_context", + "medical" + ], + "serviceType": [ + "chat" + ], "defaultTemperature": 0.3, "description": "百川智能M3-Plus医疗增强模型,235B参数,幻觉率仅2.6%" } @@ -19,12 +33,25 @@ "id": "Baichuan-M3", "displayName": "百川 M3", "family": "baichuan-m3", - "match": { "exact": ["Baichuan-M3"] }, + "match": { + "exact": [ + "Baichuan-M3" + ] + }, "spec": { "contextWindow": 32000, "maxOutputTokens": 32000, - "capabilities": ["chat", "reasoning", "code", "multilingual", "vision", "medical"], - "serviceType": ["chat"], + "capabilities": [ + "chat", + "reasoning", + "code", + "multilingual", + "vision", + "medical" + ], + "serviceType": [ + "chat" + ], "defaultTemperature": 0.3, "description": "百川智能M3新一代开源医疗增强模型,235B参数" } @@ -33,12 +60,24 @@ "id": "Baichuan-M2-Plus", "displayName": "百川 M2-Plus", "family": "baichuan-m2", - "match": { "exact": ["Baichuan-M2-Plus"] }, + "match": { + "exact": [ + "Baichuan-M2-Plus" + ] + }, "spec": { "contextWindow": 32000, "maxOutputTokens": 32000, - "capabilities": ["chat", "reasoning", "code", "multilingual", "long_context"], - "serviceType": ["chat"], + "capabilities": [ + "chat", + "reasoning", + "code", + "multilingual", + "long_context" + ], + "serviceType": [ + "chat" + ], "defaultTemperature": 0.3, "description": "百川智能M2-Plus旗舰模型,最强推理和创作能力" } @@ -47,12 +86,23 @@ "id": "Baichuan-M2", "displayName": "百川 M2", "family": "baichuan-m2", - "match": { "exact": ["Baichuan-M2"] }, + "match": { + "exact": [ + "Baichuan-M2" + ] + }, "spec": { "contextWindow": 32000, "maxOutputTokens": 32000, - "capabilities": ["chat", "reasoning", "code", "multilingual"], - "serviceType": ["chat"], + "capabilities": [ + "chat", + "reasoning", + "code", + "multilingual" + ], + "serviceType": [ + "chat" + ], "defaultTemperature": 0.3, "description": "百川智能M2高性能通用模型" } diff --git a/compute/model-specs/baidu.json b/compute/model-specs/baidu.json index a474d88..b8a29c0 100644 --- a/compute/model-specs/baidu.json +++ b/compute/model-specs/baidu.json @@ -5,12 +5,28 @@ "id": "ernie-5.0-thinking-latest", "displayName": "文心 ERNIE 5.0", "family": "ernie-5", - "match": { "exact": ["ernie-5.0-thinking-latest"], "patterns": ["ernie-5.0-thinking*"] }, + "match": { + "exact": [ + "ernie-5.0-thinking-latest" + ], + "patterns": [ + "ernie-5.0-thinking*" + ] + }, "spec": { "contextWindow": 128000, "maxOutputTokens": 65536, - "capabilities": ["chat", "reasoning", "vision", "multimodal", "tool_use"], - "serviceType": ["chat", "reasoning"], + "capabilities": [ + "chat", + "reasoning", + "vision", + "multimodal", + "tool_use" + ], + "serviceType": [ + "chat", + "reasoning" + ], "supportsReasoning": true, "description": "百度最新旗舰模型,支持深度推理、多模态和工具调用" } @@ -19,12 +35,23 @@ "id": "ernie-5.0", "displayName": "文心 ERNIE 5.0 非思考", "family": "ernie-5", - "match": { "exact": ["ernie-5.0"] }, + "match": { + "exact": [ + "ernie-5.0" + ] + }, "spec": { "contextWindow": 131072, "maxOutputTokens": 65536, - "capabilities": ["chat", "vision", "multimodal", "tool_use"], - "serviceType": ["chat"], + "capabilities": [ + "chat", + "vision", + "multimodal", + "tool_use" + ], + "serviceType": [ + "chat" + ], "defaultTemperature": 0.95, "description": "百度 ERNIE 5.0 旗舰模型,128K 上下文,最大输出 65536 token" } @@ -33,12 +60,27 @@ "id": "ernie-4.5-turbo-128k", "displayName": "文心 ERNIE 4.5 Turbo", "family": "ernie-4.5", - "match": { "exact": ["ernie-4.5-turbo-128k"], "patterns": ["ernie-4.5-turbo-128k*"] }, + "match": { + "exact": [ + "ernie-4.5-turbo-128k" + ], + "patterns": [ + "ernie-4.5-turbo-128k*" + ] + }, "spec": { "contextWindow": 131072, "maxOutputTokens": 12288, - "capabilities": ["chat", "code", "vision", "long_context", "fast"], - "serviceType": ["chat"], + "capabilities": [ + "chat", + "code", + "vision", + "long_context", + "fast" + ], + "serviceType": [ + "chat" + ], "defaultTemperature": 0.8, "description": "百度高性价比长上下文模型,128K 窗口,最大输出 12288 token" } @@ -47,12 +89,24 @@ "id": "ernie-4.5-turbo-20260402", "displayName": "文心 ERNIE 4.5 Turbo 20260402", "family": "ernie-4.5", - "match": { "exact": ["ernie-4.5-turbo-20260402"] }, + "match": { + "exact": [ + "ernie-4.5-turbo-20260402" + ] + }, "spec": { "contextWindow": 131072, "maxOutputTokens": 12288, - "capabilities": ["chat", "code", "vision", "long_context", "fast"], - "serviceType": ["chat"], + "capabilities": [ + "chat", + "code", + "vision", + "long_context", + "fast" + ], + "serviceType": [ + "chat" + ], "defaultTemperature": 0.8, "description": "百度 ERNIE 4.5 Turbo 20260402 快照版,128K 上下文" } @@ -61,12 +115,27 @@ "id": "ernie-x1.1", "displayName": "文心 ERNIE X1.1", "family": "ernie-x1", - "match": { "exact": ["ernie-x1.1"], "patterns": ["ernie-x1*"] }, + "match": { + "exact": [ + "ernie-x1.1" + ], + "patterns": [ + "ernie-x1*" + ] + }, "spec": { "contextWindow": 65536, "maxOutputTokens": 65536, - "capabilities": ["chat", "reasoning", "deep_thinking", "math", "code"], - "serviceType": ["reasoning"], + "capabilities": [ + "chat", + "reasoning", + "deep_thinking", + "math", + "code" + ], + "serviceType": [ + "reasoning" + ], "defaultTemperature": null, "supportsReasoning": true, "description": "百度 ERNIE X1.1 深度思考推理模型,64K 上下文" diff --git a/compute/model-specs/cohere.json b/compute/model-specs/cohere.json index 2d2f1ec..2ab1f4f 100644 --- a/compute/model-specs/cohere.json +++ b/compute/model-specs/cohere.json @@ -5,12 +5,25 @@ "id": "north-mini-code", "displayName": "North Mini Code", "family": "north", - "match": { "exact": ["north-mini-code"], "patterns": ["north-mini-code*"] }, + "match": { + "exact": [ + "north-mini-code" + ], + "patterns": [ + "north-mini-code*" + ] + }, "spec": { "contextWindow": 256000, "maxOutputTokens": 64000, - "capabilities": ["chat", "code", "tool_use"], - "serviceType": ["chat"], + "capabilities": [ + "chat", + "code", + "tool_use" + ], + "serviceType": [ + "chat" + ], "supportsReasoning": true, "description": "Cohere North 系列首发编程模型" } @@ -19,12 +32,29 @@ "id": "command-a-03-2025", "displayName": "Command A", "family": "command-a", - "match": { "exact": ["command-a-03-2025"], "patterns": ["command-a*"] }, + "match": { + "exact": [ + "command-a-03-2025" + ], + "patterns": [ + "command-a*" + ] + }, "spec": { "contextWindow": 256000, "maxOutputTokens": 8000, - "capabilities": ["chat", "reasoning", "code", "vision", "tool_use", "rag", "long_context"], - "serviceType": ["chat"], + "capabilities": [ + "chat", + "reasoning", + "code", + "vision", + "tool_use", + "rag", + "long_context" + ], + "serviceType": [ + "chat" + ], "defaultTemperature": 0.3, "description": "Cohere 旗舰对话模型,256K 上下文,擅长 RAG 和工具调用" } @@ -33,12 +63,27 @@ "id": "command-r7b-12-2024", "displayName": "Command R7B", "family": "command-r7b", - "match": { "exact": ["command-r7b-12-2024"], "patterns": ["command-r7b*"] }, + "match": { + "exact": [ + "command-r7b-12-2024" + ], + "patterns": [ + "command-r7b*" + ] + }, "spec": { "contextWindow": 128000, "maxOutputTokens": 4000, - "capabilities": ["chat", "reasoning", "tool_use", "rag", "fast"], - "serviceType": ["fast"], + "capabilities": [ + "chat", + "reasoning", + "tool_use", + "rag", + "fast" + ], + "serviceType": [ + "fast" + ], "defaultTemperature": 0.3, "description": "Cohere 小型高速对话模型,适合高吞吐、低延迟场景" } @@ -47,11 +92,23 @@ "id": "embed-v4.0", "displayName": "Embed V4", "family": "embed-v4", - "match": { "exact": ["embed-v4.0"], "patterns": ["embed-v4*"] }, + "match": { + "exact": [ + "embed-v4.0" + ], + "patterns": [ + "embed-v4*" + ] + }, "spec": { "contextWindow": 128000, - "capabilities": ["text_embedding", "multilingual"], - "serviceType": ["embedding"], + "capabilities": [ + "text_embedding", + "multilingual" + ], + "serviceType": [ + "embedding" + ], "description": "Cohere 最新 Embedding 模型,128K 上下文,多语言支持" } }, @@ -59,11 +116,23 @@ "id": "rerank-v3.5", "displayName": "Rerank V3.5", "family": "rerank-v3", - "match": { "exact": ["rerank-v3.5"], "patterns": ["rerank-v3*"] }, + "match": { + "exact": [ + "rerank-v3.5" + ], + "patterns": [ + "rerank-v3*" + ] + }, "spec": { "contextWindow": 4096, - "capabilities": ["rerank", "semantic_reranking"], - "serviceType": ["rerank"], + "capabilities": [ + "rerank", + "semantic_reranking" + ], + "serviceType": [ + "rerank" + ], "description": "Cohere 语义重排序模型,用于检索结果精排" } } diff --git a/compute/model-specs/deepseek.json b/compute/model-specs/deepseek.json index 4067e5c..eaa80ce 100644 --- a/compute/model-specs/deepseek.json +++ b/compute/model-specs/deepseek.json @@ -5,32 +5,80 @@ "id": "deepseek-v4-pro", "displayName": "DeepSeek V4 Pro", "family": "deepseek-v4", - "match": { "exact": ["deepseek-v4-pro"], "patterns": ["deepseek-v4-pro*"] }, + "match": { + "exact": [ + "deepseek-v4-pro" + ], + "patterns": [ + "deepseek-v4-pro*" + ] + }, "spec": { "contextWindow": 1000000, "maxOutputTokens": 384000, - "capabilities": ["chat", "reasoning", "deep_thinking", "code", "math", "science", "multilingual", "tool_use"], - "serviceType": ["chat", "reasoning"], + "capabilities": [ + "chat", + "reasoning", + "deep_thinking", + "code", + "math", + "science", + "multilingual", + "tool_use" + ], + "serviceType": [ + "chat", + "reasoning" + ], "defaultTemperature": 1, "supportsReasoning": true, "extra": { "supportsThinking": true, "thinkingDefault": true, - "reasoningEffort": ["high", "max"] + "reasoningEffort": [ + "high", + "max" + ] }, "description": "DeepSeek V4 Pro,1.6T MoE 架构,100 万上下文" + }, + "routing": { + "tier": "flagship", + "routingPriority": 30, + "eligibleForAgent": true, + "defaultReference": true, + "reasoning": { + "supportedModes": [ + "auto", + "high", + "max" + ], + "defaultMode": "high" + } } }, { "id": "deepseek-chat", "displayName": "DeepSeek Chat", "family": "deepseek-chat", - "match": { "patterns": ["deepseek-chat*"] }, + "match": { + "patterns": [ + "deepseek-chat*" + ] + }, "spec": { "contextWindow": 1000000, "maxOutputTokens": 384000, - "capabilities": ["chat", "code", "reasoning", "multilingual", "tool_use"], - "serviceType": ["chat"], + "capabilities": [ + "chat", + "code", + "reasoning", + "multilingual", + "tool_use" + ], + "serviceType": [ + "chat" + ], "defaultTemperature": 1 } }, @@ -38,12 +86,25 @@ "id": "deepseek-reasoner", "displayName": "DeepSeek Reasoner", "family": "deepseek-reasoner", - "match": { "patterns": ["deepseek-reasoner*"] }, + "match": { + "patterns": [ + "deepseek-reasoner*" + ] + }, "spec": { "contextWindow": 1000000, "maxOutputTokens": 384000, - "capabilities": ["chat", "reasoning", "deep_thinking", "code", "math", "tool_use"], - "serviceType": ["reasoning"], + "capabilities": [ + "chat", + "reasoning", + "deep_thinking", + "code", + "math", + "tool_use" + ], + "serviceType": [ + "reasoning" + ], "defaultTemperature": null, "supportsReasoning": true } @@ -52,18 +113,52 @@ "id": "deepseek-v4-flash", "displayName": "DeepSeek V4 Flash", "family": "deepseek-v4", - "match": { "exact": ["deepseek-v4-flash"], "patterns": ["deepseek-v4-flash*"] }, + "match": { + "exact": [ + "deepseek-v4-flash" + ], + "patterns": [ + "deepseek-v4-flash*" + ] + }, "spec": { "contextWindow": 1000000, "maxOutputTokens": 384000, - "capabilities": ["chat", "code", "reasoning", "deep_thinking", "multilingual", "tool_use"], - "serviceType": ["chat", "reasoning"], + "capabilities": [ + "chat", + "code", + "reasoning", + "deep_thinking", + "multilingual", + "tool_use" + ], + "serviceType": [ + "chat", + "reasoning" + ], "defaultTemperature": 1, "supportsReasoning": true, "extra": { "supportsThinking": true, "thinkingDefault": true, - "reasoningEffort": ["high", "max"] + "reasoningEffort": [ + "high", + "max" + ] + } + }, + "routing": { + "tier": "lightweight", + "routingPriority": 35, + "eligibleForAgent": true, + "defaultReference": false, + "reasoning": { + "supportedModes": [ + "auto", + "high", + "max" + ], + "defaultMode": "high" } } } diff --git a/compute/model-specs/google.json b/compute/model-specs/google.json index 1b8a6d0..651eaf2 100644 --- a/compute/model-specs/google.json +++ b/compute/model-specs/google.json @@ -5,12 +5,31 @@ "id": "gemini-3.5-flash", "displayName": "Gemini 3.5 Flash", "family": "gemini-3.5", - "match": { "exact": ["gemini-3.5-flash"], "patterns": ["gemini-3.5-flash*"] }, + "match": { + "exact": [ + "gemini-3.5-flash" + ], + "patterns": [ + "gemini-3.5-flash*" + ] + }, "spec": { "contextWindow": 1048576, "maxOutputTokens": 65536, - "capabilities": ["chat", "reasoning", "code", "vision", "video_understanding", "audio_understanding", "ultra_long_context", "tool_use", "fast"], - "serviceType": ["chat"], + "capabilities": [ + "chat", + "reasoning", + "code", + "vision", + "video_understanding", + "audio_understanding", + "ultra_long_context", + "tool_use", + "fast" + ], + "serviceType": [ + "chat" + ], "defaultTemperature": 1, "supportsReasoning": true, "description": "Google Gemini 3.5 Flash,全模态高性价比模型,100 万上下文" @@ -20,12 +39,25 @@ "id": "gemini-3.1-flash-image", "displayName": "Gemini 3.1 Flash Image (Nano Banana 2)", "family": "gemini-3.1", - "match": { "exact": ["gemini-3.1-flash-image"], "patterns": ["gemini-3.1-flash-image*"] }, + "match": { + "exact": [ + "gemini-3.1-flash-image" + ], + "patterns": [ + "gemini-3.1-flash-image*" + ] + }, "spec": { "contextWindow": 131072, "maxOutputTokens": 32768, - "capabilities": ["image_generation", "image_editing", "text_rendering"], - "serviceType": ["image_gen"], + "capabilities": [ + "image_generation", + "image_editing", + "text_rendering" + ], + "serviceType": [ + "image_gen" + ], "description": "Google Nano Banana 2,最新文生图与编辑模型" } }, @@ -36,8 +68,17 @@ "spec": { "contextWindow": 1048576, "maxOutputTokens": 65536, - "capabilities": ["chat", "reasoning", "code", "vision", "ultra_long_context", "tool_use"], - "serviceType": ["chat"], + "capabilities": [ + "chat", + "reasoning", + "code", + "vision", + "ultra_long_context", + "tool_use" + ], + "serviceType": [ + "chat" + ], "defaultTemperature": 1, "supportsReasoning": true } @@ -49,8 +90,18 @@ "spec": { "contextWindow": 1048576, "maxOutputTokens": 65536, - "capabilities": ["chat", "reasoning", "code", "vision", "ultra_long_context", "tool_use", "fast"], - "serviceType": ["chat"], + "capabilities": [ + "chat", + "reasoning", + "code", + "vision", + "ultra_long_context", + "tool_use", + "fast" + ], + "serviceType": [ + "chat" + ], "defaultTemperature": 1, "supportsReasoning": true } @@ -59,12 +110,25 @@ "id": "gemini-2.5-pro", "displayName": "Gemini 2.5 Pro", "family": "gemini-2.5", - "match": { "patterns": ["gemini-2.5-pro*"] }, + "match": { + "patterns": [ + "gemini-2.5-pro*" + ] + }, "spec": { "contextWindow": 1048576, "maxOutputTokens": 65536, - "capabilities": ["chat", "reasoning", "code", "vision", "ultra_long_context", "tool_use"], - "serviceType": ["chat"], + "capabilities": [ + "chat", + "reasoning", + "code", + "vision", + "ultra_long_context", + "tool_use" + ], + "serviceType": [ + "chat" + ], "defaultTemperature": 1, "supportsReasoning": true } @@ -73,12 +137,26 @@ "id": "gemini-2.5-flash", "displayName": "Gemini 2.5 Flash", "family": "gemini-2.5", - "match": { "patterns": ["gemini-2.5-flash*"] }, + "match": { + "patterns": [ + "gemini-2.5-flash*" + ] + }, "spec": { "contextWindow": 1048576, "maxOutputTokens": 65536, - "capabilities": ["chat", "reasoning", "code", "vision", "ultra_long_context", "tool_use", "fast"], - "serviceType": ["chat"], + "capabilities": [ + "chat", + "reasoning", + "code", + "vision", + "ultra_long_context", + "tool_use", + "fast" + ], + "serviceType": [ + "chat" + ], "defaultTemperature": 1, "supportsReasoning": true } @@ -87,12 +165,29 @@ "id": "gemini-3.1-flash-lite-preview", "displayName": "Gemini 3.1 Flash-Lite Preview", "family": "gemini-3.1", - "match": { "exact": ["gemini-3.1-flash-lite-preview"], "patterns": ["gemini-3.1-flash-lite*"] }, + "match": { + "exact": [ + "gemini-3.1-flash-lite-preview" + ], + "patterns": [ + "gemini-3.1-flash-lite*" + ] + }, "spec": { "contextWindow": 1048576, "maxOutputTokens": 65536, - "capabilities": ["chat", "reasoning", "code", "vision", "ultra_long_context", "tool_use", "fast"], - "serviceType": ["fast"], + "capabilities": [ + "chat", + "reasoning", + "code", + "vision", + "ultra_long_context", + "tool_use", + "fast" + ], + "serviceType": [ + "fast" + ], "defaultTemperature": 1, "description": "Google Gemini 3.1 Flash-Lite Preview,低成本高吞吐多模态模型" } @@ -101,11 +196,20 @@ "id": "text-embedding-005", "displayName": "Text Embedding 005", "family": "text-embedding", - "match": { "exact": ["text-embedding-005"] }, + "match": { + "exact": [ + "text-embedding-005" + ] + }, "spec": { "contextWindow": 2048, - "capabilities": ["text_embedding", "semantic_search"], - "serviceType": ["embedding"], + "capabilities": [ + "text_embedding", + "semantic_search" + ], + "serviceType": [ + "embedding" + ], "description": "Google 文本嵌入模型,768 维度" } } diff --git a/compute/model-specs/happyhorse.json b/compute/model-specs/happyhorse.json index 461ebe6..7df4ee2 100644 --- a/compute/model-specs/happyhorse.json +++ b/compute/model-specs/happyhorse.json @@ -5,21 +5,58 @@ "id": "happyhorse-1.1-t2v", "displayName": "HappyHorse 1.1 T2V", "family": "happyhorse-t2v", - "match": { "exact": ["happyhorse-1.1-t2v"], "patterns": ["happyhorse-1.1-t2v*"] }, + "match": { + "exact": [ + "happyhorse-1.1-t2v" + ], + "patterns": [ + "happyhorse-1.1-t2v*" + ] + }, "spec": { - "capabilities": ["video_generation", "text_to_video", "high_quality"], - "serviceType": ["video_gen"], + "capabilities": [ + "video_generation", + "text_to_video", + "high_quality" + ], + "serviceType": [ + "video_gen" + ], "description": "HappyHorse 1.1 文生视频,进一步提升文本词义理解、镜头调度与动态生成表现" + }, + "routing": { + "tier": "flagship", + "routingPriority": 116, + "eligibleForAgent": false, + "defaultReference": false, + "reasoning": { + "supportedModes": [ + "auto" + ], + "defaultMode": "auto" + } } }, { "id": "happyhorse-1.0-t2v", "displayName": "HappyHorse 1.0 T2V", "family": "happyhorse-t2v", - "match": { "exact": ["happyhorse-1.0-t2v"], "patterns": ["happyhorse-1.0-t2v*"] }, + "match": { + "exact": [ + "happyhorse-1.0-t2v" + ], + "patterns": [ + "happyhorse-1.0-t2v*" + ] + }, "spec": { - "capabilities": ["video_generation", "text_to_video"], - "serviceType": ["video_gen"], + "capabilities": [ + "video_generation", + "text_to_video" + ], + "serviceType": [ + "video_gen" + ], "description": "HappyHorse 1.0 文生视频,具备高度还原的动态画面生成能力" } }, @@ -27,21 +64,58 @@ "id": "happyhorse-1.1-i2v", "displayName": "HappyHorse 1.1 I2V", "family": "happyhorse-i2v", - "match": { "exact": ["happyhorse-1.1-i2v"], "patterns": ["happyhorse-1.1-i2v*"] }, + "match": { + "exact": [ + "happyhorse-1.1-i2v" + ], + "patterns": [ + "happyhorse-1.1-i2v*" + ] + }, "spec": { - "capabilities": ["video_generation", "image_to_video", "high_quality"], - "serviceType": ["video_gen"], + "capabilities": [ + "video_generation", + "image_to_video", + "high_quality" + ], + "serviceType": [ + "video_gen" + ], "description": "HappyHorse 1.1 图生视频,进一步提升画面质感、动态表现与跨片段一致性" + }, + "routing": { + "tier": "flagship", + "routingPriority": 115, + "eligibleForAgent": false, + "defaultReference": false, + "reasoning": { + "supportedModes": [ + "auto" + ], + "defaultMode": "auto" + } } }, { "id": "happyhorse-1.0-i2v", "displayName": "HappyHorse 1.0 I2V", "family": "happyhorse-i2v", - "match": { "exact": ["happyhorse-1.0-i2v"], "patterns": ["happyhorse-1.0-i2v*"] }, + "match": { + "exact": [ + "happyhorse-1.0-i2v" + ], + "patterns": [ + "happyhorse-1.0-i2v*" + ] + }, "spec": { - "capabilities": ["video_generation", "image_to_video"], - "serviceType": ["video_gen"], + "capabilities": [ + "video_generation", + "image_to_video" + ], + "serviceType": [ + "video_gen" + ], "description": "HappyHorse 1.0 图生视频,具备高度还原的动态画面生成能力" } }, @@ -49,21 +123,60 @@ "id": "happyhorse-1.1-r2v", "displayName": "HappyHorse 1.1 R2V", "family": "happyhorse-r2v", - "match": { "exact": ["happyhorse-1.1-r2v"], "patterns": ["happyhorse-1.1-r2v*"] }, + "match": { + "exact": [ + "happyhorse-1.1-r2v" + ], + "patterns": [ + "happyhorse-1.1-r2v*" + ] + }, "spec": { - "capabilities": ["video_generation", "reference_to_video", "multi_image", "high_quality"], - "serviceType": ["video_gen"], + "capabilities": [ + "video_generation", + "reference_to_video", + "multi_image", + "high_quality" + ], + "serviceType": [ + "video_gen" + ], "description": "HappyHorse 1.1 参考生视频,支持最多9张图片参考,更加稳定的主体与场景参考" + }, + "routing": { + "tier": "flagship", + "routingPriority": 117, + "eligibleForAgent": false, + "defaultReference": false, + "reasoning": { + "supportedModes": [ + "auto" + ], + "defaultMode": "auto" + } } }, { "id": "happyhorse-1.0-r2v", "displayName": "HappyHorse 1.0 R2V", "family": "happyhorse-r2v", - "match": { "exact": ["happyhorse-1.0-r2v"], "patterns": ["happyhorse-1.0-r2v*"] }, + "match": { + "exact": [ + "happyhorse-1.0-r2v" + ], + "patterns": [ + "happyhorse-1.0-r2v*" + ] + }, "spec": { - "capabilities": ["video_generation", "reference_to_video", "multi_image"], - "serviceType": ["video_gen"], + "capabilities": [ + "video_generation", + "reference_to_video", + "multi_image" + ], + "serviceType": [ + "video_gen" + ], "description": "HappyHorse 1.0 参考生视频,支持最多9张图片参考" } } diff --git a/compute/model-specs/kling.json b/compute/model-specs/kling.json index 281765c..29a6caa 100644 --- a/compute/model-specs/kling.json +++ b/compute/model-specs/kling.json @@ -5,10 +5,24 @@ "id": "kling-v2-5-turbo", "displayName": "可灵 V2.5 Turbo", "family": "kling-v2-5", - "match": { "exact": ["kling-v2-5-turbo"], "patterns": ["kling-v2-5-turbo*"] }, + "match": { + "exact": [ + "kling-v2-5-turbo" + ], + "patterns": [ + "kling-v2-5-turbo*" + ] + }, "spec": { - "capabilities": ["video_generation", "chinese_optimized", "high_quality", "fast"], - "serviceType": ["video_gen"], + "capabilities": [ + "video_generation", + "chinese_optimized", + "high_quality", + "fast" + ], + "serviceType": [ + "video_gen" + ], "description": "可灵最新视频生成模型,高性价比" } }, @@ -16,10 +30,20 @@ "id": "kling-v2-5-turbo-pro", "displayName": "可灵 V2.5 Turbo Pro", "family": "kling-v2-5", - "match": { "exact": ["kling-v2-5-turbo-pro"] }, + "match": { + "exact": [ + "kling-v2-5-turbo-pro" + ] + }, "spec": { - "capabilities": ["video_generation", "chinese_optimized", "ultra_quality"], - "serviceType": ["video_gen"], + "capabilities": [ + "video_generation", + "chinese_optimized", + "ultra_quality" + ], + "serviceType": [ + "video_gen" + ], "description": "可灵高品质视频生成,支持 4K 分辨率" } }, @@ -27,10 +51,20 @@ "id": "kling-v2", "displayName": "可灵 V2", "family": "kling-v2", - "match": { "exact": ["kling-v2"] }, + "match": { + "exact": [ + "kling-v2" + ] + }, "spec": { - "capabilities": ["video_generation", "chinese_optimized", "high_quality"], - "serviceType": ["video_gen"], + "capabilities": [ + "video_generation", + "chinese_optimized", + "high_quality" + ], + "serviceType": [ + "video_gen" + ], "description": "可灵文生视频旗舰模型" } }, @@ -38,10 +72,20 @@ "id": "kling-v2-master", "displayName": "可灵 V2 Master", "family": "kling-v2", - "match": { "exact": ["kling-v2-master"] }, + "match": { + "exact": [ + "kling-v2-master" + ] + }, "spec": { - "capabilities": ["video_generation", "chinese_optimized", "ultra_quality"], - "serviceType": ["video_gen"], + "capabilities": [ + "video_generation", + "chinese_optimized", + "ultra_quality" + ], + "serviceType": [ + "video_gen" + ], "description": "可灵最高品质视频生成,支持 4K 分辨率" } } diff --git a/compute/model-specs/lingyiwanwu.json b/compute/model-specs/lingyiwanwu.json index d07386e..fe46889 100644 --- a/compute/model-specs/lingyiwanwu.json +++ b/compute/model-specs/lingyiwanwu.json @@ -5,12 +5,27 @@ "id": "yi-lightning", "displayName": "Yi Lightning", "family": "yi-lightning", - "match": { "exact": ["yi-lightning"], "patterns": ["yi-lightning*"] }, + "match": { + "exact": [ + "yi-lightning" + ], + "patterns": [ + "yi-lightning*" + ] + }, "spec": { "contextWindow": 16000, "maxOutputTokens": 4096, - "capabilities": ["chat", "reasoning", "code", "fast", "smart_routing"], - "serviceType": ["chat"], + "capabilities": [ + "chat", + "reasoning", + "code", + "fast", + "smart_routing" + ], + "serviceType": [ + "chat" + ], "defaultTemperature": 0.3, "description": "零一万物高性能模型,16K 上下文,智能路由,极高性价比" } @@ -19,12 +34,27 @@ "id": "yi-vision-v2", "displayName": "Yi Vision V2", "family": "yi-vision", - "match": { "exact": ["yi-vision-v2"], "patterns": ["yi-vision*"] }, + "match": { + "exact": [ + "yi-vision-v2" + ], + "patterns": [ + "yi-vision*" + ] + }, "spec": { "contextWindow": 16000, "maxOutputTokens": 4096, - "capabilities": ["chat", "vision", "image_understanding", "ocr", "chart_analysis"], - "serviceType": ["vision"], + "capabilities": [ + "chat", + "vision", + "image_understanding", + "ocr", + "chart_analysis" + ], + "serviceType": [ + "vision" + ], "defaultTemperature": 0.3, "description": "零一万物复杂视觉任务模型,16K 上下文,支持多图分析" } diff --git a/compute/model-specs/minimax.json b/compute/model-specs/minimax.json index f743ba5..b1d4842 100644 --- a/compute/model-specs/minimax.json +++ b/compute/model-specs/minimax.json @@ -5,15 +5,50 @@ "id": "MiniMax-M3", "displayName": "MiniMax M3", "family": "minimax-m3", - "match": { "exact": ["MiniMax-M3"], "patterns": ["MiniMax-M3*"] }, + "match": { + "exact": [ + "MiniMax-M3" + ], + "patterns": [ + "MiniMax-M3*" + ] + }, "spec": { "contextWindow": 1048576, "maxOutputTokens": 512000, - "capabilities": ["chat", "reasoning", "code", "vision", "video_understanding", "tool_use", "long_context"], - "serviceType": ["chat"], + "capabilities": [ + "chat", + "reasoning", + "code", + "vision", + "video_understanding", + "tool_use", + "long_context" + ], + "serviceType": [ + "chat" + ], "defaultTemperature": 1, "supportsReasoning": true, "description": "MiniMax M3 全模态基础模型,100 万上下文" + }, + "routing": { + "tier": "balanced", + "routingPriority": 30, + "eligibleForAgent": true, + "defaultReference": false, + "reasoning": { + "supportedModes": [ + "auto", + "off", + "minimal", + "low", + "medium", + "high", + "xhigh" + ], + "defaultMode": "medium" + } } }, { @@ -23,8 +58,17 @@ "spec": { "contextWindow": 204800, "maxOutputTokens": 131072, - "capabilities": ["chat", "reasoning", "code", "tool_use", "vision"], - "serviceType": ["chat", "reasoning"], + "capabilities": [ + "chat", + "reasoning", + "code", + "tool_use", + "vision" + ], + "serviceType": [ + "chat", + "reasoning" + ], "defaultTemperature": 1, "supportsReasoning": true } @@ -36,8 +80,17 @@ "spec": { "contextWindow": 204800, "maxOutputTokens": 131072, - "capabilities": ["chat", "reasoning", "code", "tool_use", "long_context"], - "serviceType": ["chat", "reasoning"], + "capabilities": [ + "chat", + "reasoning", + "code", + "tool_use", + "long_context" + ], + "serviceType": [ + "chat", + "reasoning" + ], "defaultTemperature": 1, "supportsReasoning": true } @@ -49,8 +102,14 @@ "spec": { "contextWindow": 204800, "maxOutputTokens": 131072, - "capabilities": ["chat", "code", "tool_use"], - "serviceType": ["chat"], + "capabilities": [ + "chat", + "code", + "tool_use" + ], + "serviceType": [ + "chat" + ], "defaultTemperature": 1 } }, @@ -58,12 +117,25 @@ "id": "MiniMax-M2.7-highspeed", "displayName": "MiniMax M2.7 高速版", "family": "minimax-m2.7", - "match": { "exact": ["MiniMax-M2.7-highspeed"] }, + "match": { + "exact": [ + "MiniMax-M2.7-highspeed" + ] + }, "spec": { "contextWindow": 204800, "maxOutputTokens": 131072, - "capabilities": ["chat", "reasoning", "code", "tool_use", "fast", "vision"], - "serviceType": ["fast"], + "capabilities": [ + "chat", + "reasoning", + "code", + "tool_use", + "fast", + "vision" + ], + "serviceType": [ + "fast" + ], "defaultTemperature": 1, "description": "MiniMax M2.7 极速版,效果一致,输出更快,适合低延迟场景" } @@ -72,12 +144,24 @@ "id": "MiniMax-M2.5-highspeed", "displayName": "MiniMax M2.5 高速版", "family": "minimax-m2.5", - "match": { "exact": ["MiniMax-M2.5-highspeed"] }, + "match": { + "exact": [ + "MiniMax-M2.5-highspeed" + ] + }, "spec": { "contextWindow": 204800, "maxOutputTokens": 131072, - "capabilities": ["chat", "reasoning", "code", "tool_use", "fast"], - "serviceType": ["fast"], + "capabilities": [ + "chat", + "reasoning", + "code", + "tool_use", + "fast" + ], + "serviceType": [ + "fast" + ], "defaultTemperature": 1, "description": "MiniMax M2.5 高速推理版本(100TPS),适合低延迟场景" } @@ -86,12 +170,23 @@ "id": "MiniMax-M2.1", "displayName": "MiniMax M2.1", "family": "minimax-m2.1", - "match": { "exact": ["MiniMax-M2.1"] }, + "match": { + "exact": [ + "MiniMax-M2.1" + ] + }, "spec": { "contextWindow": 204800, "maxOutputTokens": 131072, - "capabilities": ["chat", "code", "tool_use", "reasoning"], - "serviceType": ["chat"], + "capabilities": [ + "chat", + "code", + "tool_use", + "reasoning" + ], + "serviceType": [ + "chat" + ], "defaultTemperature": 1, "description": "MiniMax 上一代主力模型,200K 上下文,性价比优秀" } @@ -100,12 +195,24 @@ "id": "MiniMax-M2.1-highspeed", "displayName": "MiniMax M2.1 高速版", "family": "minimax-m2.1", - "match": { "exact": ["MiniMax-M2.1-highspeed"] }, + "match": { + "exact": [ + "MiniMax-M2.1-highspeed" + ] + }, "spec": { "contextWindow": 204800, "maxOutputTokens": 131072, - "capabilities": ["chat", "reasoning", "code", "tool_use", "fast"], - "serviceType": ["fast"], + "capabilities": [ + "chat", + "reasoning", + "code", + "tool_use", + "fast" + ], + "serviceType": [ + "fast" + ], "defaultTemperature": 1, "description": "MiniMax M2.1 高速推理版本,适合低延迟场景" } @@ -114,12 +221,21 @@ "id": "M2-her", "displayName": "MiniMax M2 Her", "family": "minimax-m2", - "match": { "exact": ["M2-her"] }, + "match": { + "exact": [ + "M2-her" + ] + }, "spec": { "contextWindow": 204800, "maxOutputTokens": 131072, - "capabilities": ["chat", "roleplay"], - "serviceType": ["chat"], + "capabilities": [ + "chat", + "roleplay" + ], + "serviceType": [ + "chat" + ], "defaultTemperature": 1, "description": "MiniMax 角色扮演对话模型,专为多轮角色对话设计" } @@ -128,12 +244,23 @@ "id": "MiniMax-Text-01", "displayName": "MiniMax Text 01", "family": "minimax-text", - "match": { "exact": ["MiniMax-Text-01"] }, + "match": { + "exact": [ + "MiniMax-Text-01" + ] + }, "spec": { "contextWindow": 1000000, "maxOutputTokens": 131072, - "capabilities": ["chat", "reasoning", "code", "long_context"], - "serviceType": ["chat"], + "capabilities": [ + "chat", + "reasoning", + "code", + "long_context" + ], + "serviceType": [ + "chat" + ], "defaultTemperature": 0.1, "description": "MiniMax 百万级长上下文文本模型,擅长长文档处理" } @@ -142,21 +269,54 @@ "id": "image-01", "displayName": "MiniMax Image 01", "family": "minimax-image", - "match": { "exact": ["image-01"] }, + "match": { + "exact": [ + "image-01" + ] + }, "spec": { - "capabilities": ["image_generation", "subject_reference", "chinese_optimized"], - "serviceType": ["image_gen"], + "capabilities": [ + "image_generation", + "subject_reference", + "chinese_optimized" + ], + "serviceType": [ + "image_gen" + ], "description": "MiniMax 文生图/图生图模型,支持主题参考(角色一致性)" + }, + "routing": { + "tier": "balanced", + "routingPriority": 113, + "eligibleForAgent": false, + "defaultReference": false, + "reasoning": { + "supportedModes": [ + "auto" + ], + "defaultMode": "auto" + } } }, { "id": "image-01-live", "displayName": "MiniMax Image 01 Live", "family": "minimax-image", - "match": { "exact": ["image-01-live"] }, + "match": { + "exact": [ + "image-01-live" + ] + }, "spec": { - "capabilities": ["image_generation", "style_control", "subject_reference", "chinese_optimized"], - "serviceType": ["image_gen"], + "capabilities": [ + "image_generation", + "style_control", + "subject_reference", + "chinese_optimized" + ], + "serviceType": [ + "image_gen" + ], "description": "MiniMax 文生图模型(Live 版),支持画风控制" } }, @@ -164,10 +324,22 @@ "id": "speech-2.8-hd", "displayName": "MiniMax Speech 2.8 HD", "family": "minimax-speech", - "match": { "exact": ["speech-2.8-hd"] }, + "match": { + "exact": [ + "speech-2.8-hd" + ] + }, "spec": { - "capabilities": ["tts", "multilingual", "emotion_control", "voice_clone", "chinese_optimized"], - "serviceType": ["tts"], + "capabilities": [ + "tts", + "multilingual", + "emotion_control", + "voice_clone", + "chinese_optimized" + ], + "serviceType": [ + "tts" + ], "description": "MiniMax 最新高清语音合成,40+ 语言、100+ 预置音色" } }, @@ -175,10 +347,22 @@ "id": "speech-2.8-turbo", "displayName": "MiniMax Speech 2.8 Turbo", "family": "minimax-speech", - "match": { "exact": ["speech-2.8-turbo"] }, + "match": { + "exact": [ + "speech-2.8-turbo" + ] + }, "spec": { - "capabilities": ["tts", "multilingual", "emotion_control", "fast", "chinese_optimized"], - "serviceType": ["tts"], + "capabilities": [ + "tts", + "multilingual", + "emotion_control", + "fast", + "chinese_optimized" + ], + "serviceType": [ + "tts" + ], "description": "MiniMax 快速语音合成模型,速度优先,适合实时场景" } }, @@ -186,10 +370,22 @@ "id": "speech-2.6-hd", "displayName": "MiniMax Speech 2.6 HD", "family": "minimax-speech", - "match": { "exact": ["speech-2.6-hd"] }, + "match": { + "exact": [ + "speech-2.6-hd" + ] + }, "spec": { - "capabilities": ["tts", "multilingual", "emotion_control", "voice_clone", "chinese_optimized"], - "serviceType": ["tts"], + "capabilities": [ + "tts", + "multilingual", + "emotion_control", + "voice_clone", + "chinese_optimized" + ], + "serviceType": [ + "tts" + ], "description": "MiniMax 高清语音合成(2.6 版),音质优秀,生成速度快" } }, @@ -197,10 +393,22 @@ "id": "speech-2.6-turbo", "displayName": "MiniMax Speech 2.6 Turbo", "family": "minimax-speech", - "match": { "exact": ["speech-2.6-turbo"] }, + "match": { + "exact": [ + "speech-2.6-turbo" + ] + }, "spec": { - "capabilities": ["tts", "multilingual", "emotion_control", "fast", "chinese_optimized"], - "serviceType": ["tts"], + "capabilities": [ + "tts", + "multilingual", + "emotion_control", + "fast", + "chinese_optimized" + ], + "serviceType": [ + "tts" + ], "description": "MiniMax 快速语音合成(2.6 版),低延迟响应" } }, @@ -208,10 +416,21 @@ "id": "speech-02-hd", "displayName": "MiniMax Speech 02 HD", "family": "minimax-speech", - "match": { "exact": ["speech-02-hd"] }, + "match": { + "exact": [ + "speech-02-hd" + ] + }, "spec": { - "capabilities": ["tts", "multilingual", "voice_clone", "chinese_optimized"], - "serviceType": ["tts"], + "capabilities": [ + "tts", + "multilingual", + "voice_clone", + "chinese_optimized" + ], + "serviceType": [ + "tts" + ], "description": "MiniMax 高清语音合成(历史版本),韵律稳定性优秀" } }, @@ -219,10 +438,21 @@ "id": "speech-02-turbo", "displayName": "MiniMax Speech 02 Turbo", "family": "minimax-speech", - "match": { "exact": ["speech-02-turbo"] }, + "match": { + "exact": [ + "speech-02-turbo" + ] + }, "spec": { - "capabilities": ["tts", "multilingual", "fast", "chinese_optimized"], - "serviceType": ["tts"], + "capabilities": [ + "tts", + "multilingual", + "fast", + "chinese_optimized" + ], + "serviceType": [ + "tts" + ], "description": "MiniMax 快速语音合成(历史版本),增强小语种支持" } }, @@ -230,21 +460,58 @@ "id": "MiniMax-Hailuo-2.3", "displayName": "海螺视频 2.3", "family": "minimax-hailuo", - "match": { "exact": ["MiniMax-Hailuo-2.3"] }, + "match": { + "exact": [ + "MiniMax-Hailuo-2.3" + ] + }, "spec": { - "capabilities": ["video_generation", "text_to_video", "image_to_video", "camera_control", "chinese_optimized", "high_quality"], - "serviceType": ["video_gen"], + "capabilities": [ + "video_generation", + "text_to_video", + "image_to_video", + "camera_control", + "chinese_optimized", + "high_quality" + ], + "serviceType": [ + "video_gen" + ], "description": "MiniMax 最新视频生成模型,支持 15 种运镜指令控制" + }, + "routing": { + "tier": "balanced", + "routingPriority": 102, + "eligibleForAgent": false, + "defaultReference": false, + "reasoning": { + "supportedModes": [ + "auto" + ], + "defaultMode": "auto" + } } }, { "id": "MiniMax-Hailuo-2.3-Fast", "displayName": "海螺视频 2.3 快速版", "family": "minimax-hailuo", - "match": { "exact": ["MiniMax-Hailuo-2.3-Fast"] }, + "match": { + "exact": [ + "MiniMax-Hailuo-2.3-Fast" + ] + }, "spec": { - "capabilities": ["video_generation", "image_to_video", "camera_control", "fast", "chinese_optimized"], - "serviceType": ["video_gen"], + "capabilities": [ + "video_generation", + "image_to_video", + "camera_control", + "fast", + "chinese_optimized" + ], + "serviceType": [ + "video_gen" + ], "description": "海螺视频快速版本(仅图生视频),生成速度更快" } }, @@ -252,10 +519,21 @@ "id": "T2V-01-Director", "displayName": "海螺视频 Director", "family": "minimax-hailuo", - "match": { "exact": ["T2V-01-Director"] }, + "match": { + "exact": [ + "T2V-01-Director" + ] + }, "spec": { - "capabilities": ["video_generation", "text_to_video", "camera_control", "chinese_optimized"], - "serviceType": ["video_gen"], + "capabilities": [ + "video_generation", + "text_to_video", + "camera_control", + "chinese_optimized" + ], + "serviceType": [ + "video_gen" + ], "description": "导演级文生视频模型,精准运镜控制(历史版本)" } }, @@ -263,10 +541,21 @@ "id": "MiniMax-Hailuo-02", "displayName": "海螺视频 02", "family": "minimax-hailuo", - "match": { "exact": ["MiniMax-Hailuo-02"] }, + "match": { + "exact": [ + "MiniMax-Hailuo-02" + ] + }, "spec": { - "capabilities": ["video_generation", "text_to_video", "image_to_video", "chinese_optimized"], - "serviceType": ["video_gen"], + "capabilities": [ + "video_generation", + "text_to_video", + "image_to_video", + "chinese_optimized" + ], + "serviceType": [ + "video_gen" + ], "description": "海螺视频 02,原生 1080P 生成(历史版本)" } }, @@ -274,10 +563,20 @@ "id": "S2V-01", "displayName": "海螺视频 主体参考", "family": "minimax-hailuo", - "match": { "exact": ["S2V-01"] }, + "match": { + "exact": [ + "S2V-01" + ] + }, "spec": { - "capabilities": ["video_generation", "subject_reference", "chinese_optimized"], - "serviceType": ["video_gen"], + "capabilities": [ + "video_generation", + "subject_reference", + "chinese_optimized" + ], + "serviceType": [ + "video_gen" + ], "description": "主体参考视频生成,基于参考图保持角色一致性" } }, @@ -285,10 +584,21 @@ "id": "music-2.6", "displayName": "MiniMax Music 2.6", "family": "minimax-music", - "match": { "exact": ["music-2.6"] }, + "match": { + "exact": [ + "music-2.6" + ] + }, "spec": { - "capabilities": ["music_generation", "lyrics_input", "instrumental", "chinese_optimized"], - "serviceType": ["music_gen"], + "capabilities": [ + "music_generation", + "lyrics_input", + "instrumental", + "chinese_optimized" + ], + "serviceType": [ + "music_gen" + ], "description": "MiniMax AI 音乐生成模型,支持音乐灵感描述和歌词输入" } }, @@ -296,10 +606,21 @@ "id": "music-2.5+", "displayName": "MiniMax Music 2.5+", "family": "minimax-music", - "match": { "exact": ["music-2.5+"] }, + "match": { + "exact": [ + "music-2.5+" + ] + }, "spec": { - "capabilities": ["music_generation", "lyrics_input", "instrumental", "chinese_optimized"], - "serviceType": ["music_gen"], + "capabilities": [ + "music_generation", + "lyrics_input", + "instrumental", + "chinese_optimized" + ], + "serviceType": [ + "music_gen" + ], "description": "MiniMax AI 音乐生成(2.5+ 版),音质提升" } }, @@ -307,10 +628,21 @@ "id": "music-2.5", "displayName": "MiniMax Music 2.5", "family": "minimax-music", - "match": { "exact": ["music-2.5"] }, + "match": { + "exact": [ + "music-2.5" + ] + }, "spec": { - "capabilities": ["music_generation", "lyrics_input", "instrumental", "chinese_optimized"], - "serviceType": ["music_gen"], + "capabilities": [ + "music_generation", + "lyrics_input", + "instrumental", + "chinese_optimized" + ], + "serviceType": [ + "music_gen" + ], "description": "MiniMax AI 音乐生成(2.5 版)" } }, @@ -318,12 +650,51 @@ "id": "music-cover", "displayName": "MiniMax Music Cover", "family": "minimax-music", - "match": { "exact": ["music-cover"] }, + "match": { + "exact": [ + "music-cover" + ] + }, "spec": { - "capabilities": ["music_generation", "cover", "chinese_optimized"], - "serviceType": ["music_gen"], + "capabilities": [ + "music_generation", + "cover", + "chinese_optimized" + ], + "serviceType": [ + "music_gen" + ], "description": "MiniMax AI 翻唱模型,基于参考音频生成翻唱版本" } + }, + { + "id": "MiniMax-Hailuo-2.3-fast", + "displayName": "海螺视频 2.3 快速版", + "spec": { + "capabilities": [ + "chat", + "video_generation", + "image_to_video", + "camera_control", + "fast", + "chinese_optimized" + ], + "serviceType": [ + "video_gen" + ] + }, + "routing": { + "tier": "lightweight", + "routingPriority": 101, + "eligibleForAgent": false, + "defaultReference": false, + "reasoning": { + "supportedModes": [ + "auto" + ], + "defaultMode": "auto" + } + } } ] } diff --git a/compute/model-specs/mistral.json b/compute/model-specs/mistral.json index 8697069..02693ee 100644 --- a/compute/model-specs/mistral.json +++ b/compute/model-specs/mistral.json @@ -5,11 +5,26 @@ "id": "mistral-medium-3.5", "displayName": "Mistral Medium 3.5", "family": "mistral-medium", - "match": { "exact": ["mistral-medium-3.5"], "patterns": ["mistral-medium-3.5*"] }, + "match": { + "exact": [ + "mistral-medium-3.5" + ], + "patterns": [ + "mistral-medium-3.5*" + ] + }, "spec": { "contextWindow": 262144, - "capabilities": ["chat", "reasoning", "code", "vision", "tool_use"], - "serviceType": ["chat"], + "capabilities": [ + "chat", + "reasoning", + "code", + "vision", + "tool_use" + ], + "serviceType": [ + "chat" + ], "defaultTemperature": 1, "supportsReasoning": true, "description": "Mistral Medium 3.5,128B 指令模型" @@ -19,12 +34,25 @@ "id": "mistral-large-latest", "displayName": "Mistral Large", "family": "mistral-large", - "match": { "patterns": ["mistral-large*"] }, + "match": { + "patterns": [ + "mistral-large*" + ] + }, "spec": { "contextWindow": 256000, "maxOutputTokens": 262144, - "capabilities": ["chat", "reasoning", "code", "vision", "tool_use", "long_context"], - "serviceType": ["chat"], + "capabilities": [ + "chat", + "reasoning", + "code", + "vision", + "tool_use", + "long_context" + ], + "serviceType": [ + "chat" + ], "defaultTemperature": 0.7 } }, @@ -32,12 +60,25 @@ "id": "mistral-small-latest", "displayName": "Mistral Small", "family": "mistral-small", - "match": { "patterns": ["mistral-small*"] }, + "match": { + "patterns": [ + "mistral-small*" + ] + }, "spec": { "contextWindow": 128000, "maxOutputTokens": 8192, - "capabilities": ["chat", "code", "vision", "reasoning", "fast", "tool_use"], - "serviceType": ["fast"], + "capabilities": [ + "chat", + "code", + "vision", + "reasoning", + "fast", + "tool_use" + ], + "serviceType": [ + "fast" + ], "defaultTemperature": 0.7 } }, @@ -45,12 +86,21 @@ "id": "codestral-latest", "displayName": "Codestral", "family": "codestral", - "match": { "patterns": ["codestral*"] }, + "match": { + "patterns": [ + "codestral*" + ] + }, "spec": { "contextWindow": 128000, "maxOutputTokens": 32768, - "capabilities": ["code", "fill_in_the_middle"], - "serviceType": ["chat"], + "capabilities": [ + "code", + "fill_in_the_middle" + ], + "serviceType": [ + "chat" + ], "defaultTemperature": 0.7 } } diff --git a/compute/model-specs/moonshot.json b/compute/model-specs/moonshot.json index ce0a212..9bc8f4c 100644 --- a/compute/model-specs/moonshot.json +++ b/compute/model-specs/moonshot.json @@ -5,29 +5,90 @@ "id": "kimi-k3", "displayName": "Kimi K3", "family": "kimi-k3", - "match": { "exact": ["kimi-k3"], "patterns": ["kimi-k3*"] }, + "match": { + "exact": [ + "kimi-k3" + ], + "patterns": [ + "kimi-k3*" + ] + }, "spec": { "contextWindow": 1048576, "maxOutputTokens": 131072, - "capabilities": ["chat", "reasoning", "code", "tool_use", "agent", "long_context", "vision"], - "serviceType": ["reasoning"], + "capabilities": [ + "chat", + "reasoning", + "code", + "tool_use", + "agent", + "long_context", + "vision" + ], + "serviceType": [ + "reasoning" + ], "supportsReasoning": true, "description": "Moonshot Kimi K3 — 2.8T 参数多模态推理模型,默认 reasoning_effort=max,始终启用思考" + }, + "routing": { + "tier": "flagship", + "routingPriority": 35, + "eligibleForAgent": true, + "defaultReference": false, + "reasoning": { + "supportedModes": [ + "auto", + "off", + "minimal", + "low", + "medium", + "high", + "xhigh" + ], + "defaultMode": "high" + } } }, { "id": "kimi-k2.7-code", "displayName": "Kimi K2.7 Code", "family": "kimi-k2.7", - "match": { "exact": ["kimi-k2.7-code"], "patterns": ["kimi-k2.7-code*"] }, + "match": { + "exact": [ + "kimi-k2.7-code" + ], + "patterns": [ + "kimi-k2.7-code*" + ] + }, "spec": { "contextWindow": 262144, "maxOutputTokens": 16384, - "capabilities": ["chat", "code", "vision", "tool_use"], - "serviceType": ["chat"], + "capabilities": [ + "chat", + "code", + "vision", + "tool_use" + ], + "serviceType": [ + "chat" + ], "defaultTemperature": 1, "supportsReasoning": true, "description": "Moonshot Kimi K2.7 Code 编程专用模型" + }, + "routing": { + "tier": "balanced", + "routingPriority": 50, + "eligibleForAgent": true, + "defaultReference": false, + "reasoning": { + "supportedModes": [ + "auto" + ], + "defaultMode": "auto" + } } }, { @@ -37,10 +98,38 @@ "spec": { "contextWindow": 262144, "maxOutputTokens": 16384, - "capabilities": ["chat", "reasoning", "code", "tool_use", "agent", "long_context", "vision"], - "serviceType": ["chat"], + "capabilities": [ + "chat", + "reasoning", + "code", + "tool_use", + "agent", + "long_context", + "vision" + ], + "serviceType": [ + "chat" + ], "defaultTemperature": 1, "supportsReasoning": true + }, + "routing": { + "tier": "balanced", + "routingPriority": 45, + "eligibleForAgent": true, + "defaultReference": false, + "reasoning": { + "supportedModes": [ + "auto", + "off", + "minimal", + "low", + "medium", + "high", + "xhigh" + ], + "defaultMode": "medium" + } } }, { @@ -50,8 +139,18 @@ "spec": { "contextWindow": 256000, "maxOutputTokens": 32768, - "capabilities": ["chat", "reasoning", "code", "tool_use", "agent", "long_context", "vision"], - "serviceType": ["chat"], + "capabilities": [ + "chat", + "reasoning", + "code", + "tool_use", + "agent", + "long_context", + "vision" + ], + "serviceType": [ + "chat" + ], "defaultTemperature": 1, "supportsReasoning": true } @@ -63,8 +162,16 @@ "spec": { "contextWindow": 256000, "maxOutputTokens": 16384, - "capabilities": ["reasoning", "math", "code", "deep_thinking", "long_context"], - "serviceType": ["reasoning"], + "capabilities": [ + "reasoning", + "math", + "code", + "deep_thinking", + "long_context" + ], + "serviceType": [ + "reasoning" + ], "defaultTemperature": 1, "supportsReasoning": true } @@ -76,8 +183,17 @@ "spec": { "contextWindow": 256000, "maxOutputTokens": 8192, - "capabilities": ["chat", "reasoning", "code", "tool_use", "agent", "long_context"], - "serviceType": ["chat"], + "capabilities": [ + "chat", + "reasoning", + "code", + "tool_use", + "agent", + "long_context" + ], + "serviceType": [ + "chat" + ], "defaultTemperature": 0.6, "supportsReasoning": true } @@ -89,8 +205,13 @@ "spec": { "contextWindow": 8192, "maxOutputTokens": 4096, - "capabilities": ["chat", "code"], - "serviceType": ["chat"], + "capabilities": [ + "chat", + "code" + ], + "serviceType": [ + "chat" + ], "defaultTemperature": 0 } }, @@ -101,8 +222,14 @@ "spec": { "contextWindow": 32768, "maxOutputTokens": 4096, - "capabilities": ["chat", "code", "long_context"], - "serviceType": ["chat"], + "capabilities": [ + "chat", + "code", + "long_context" + ], + "serviceType": [ + "chat" + ], "defaultTemperature": 0 } }, @@ -113,8 +240,14 @@ "spec": { "contextWindow": 131072, "maxOutputTokens": 4096, - "capabilities": ["chat", "code", "long_context"], - "serviceType": ["chat"], + "capabilities": [ + "chat", + "code", + "long_context" + ], + "serviceType": [ + "chat" + ], "defaultTemperature": 0 } } diff --git a/compute/model-specs/openai.json b/compute/model-specs/openai.json index 053adc0..1cbf39e 100644 --- a/compute/model-specs/openai.json +++ b/compute/model-specs/openai.json @@ -5,11 +5,24 @@ "id": "gpt-image-2", "displayName": "GPT Image 2", "family": "gpt-image", - "match": { "exact": ["gpt-image-2"], "patterns": ["gpt-image-2*"] }, + "match": { + "exact": [ + "gpt-image-2" + ], + "patterns": [ + "gpt-image-2*" + ] + }, "spec": { "contextWindow": 400000, - "capabilities": ["image_generation", "image_editing", "high_quality"], - "serviceType": ["image_gen"], + "capabilities": [ + "image_generation", + "image_editing", + "high_quality" + ], + "serviceType": [ + "image_gen" + ], "description": "OpenAI 最新文生图模型,支持高质量图片生成与编辑,400K 上下文" } }, @@ -17,28 +30,94 @@ "id": "gpt-5.5", "displayName": "GPT-5.5", "family": "gpt-5", - "match": { "exact": ["gpt-5.5"], "patterns": ["gpt-5.5*"] }, + "match": { + "exact": [ + "gpt-5.5" + ], + "patterns": [ + "gpt-5.5*" + ] + }, "spec": { "contextWindow": 1050000, "maxOutputTokens": 128000, - "capabilities": ["chat", "reasoning", "code", "vision", "long_context", "tool_use"], - "serviceType": ["chat"], + "capabilities": [ + "chat", + "reasoning", + "code", + "vision", + "long_context", + "tool_use" + ], + "serviceType": [ + "chat" + ], "defaultTemperature": 1, "supportsReasoning": true + }, + "routing": { + "tier": "flagship", + "routingPriority": 60, + "eligibleForAgent": true, + "defaultReference": false, + "reasoning": { + "supportedModes": [ + "auto", + "off", + "low", + "medium", + "high", + "xhigh" + ], + "defaultMode": "medium" + } } }, { "id": "gpt-5.4", "displayName": "GPT-5.4", "family": "gpt-5", - "match": { "exact": ["gpt-5.4"], "patterns": ["gpt-5.4*"] }, + "match": { + "exact": [ + "gpt-5.4" + ], + "patterns": [ + "gpt-5.4*" + ] + }, "spec": { "contextWindow": 1050000, "maxOutputTokens": 128000, - "capabilities": ["chat", "reasoning", "code", "vision", "long_context", "tool_use"], - "serviceType": ["chat"], + "capabilities": [ + "chat", + "reasoning", + "code", + "vision", + "long_context", + "tool_use" + ], + "serviceType": [ + "chat" + ], "defaultTemperature": 1, "supportsReasoning": true + }, + "routing": { + "tier": "balanced", + "routingPriority": 60, + "eligibleForAgent": true, + "defaultReference": false, + "reasoning": { + "supportedModes": [ + "auto", + "off", + "low", + "medium", + "high", + "xhigh" + ], + "defaultMode": "medium" + } } }, { @@ -48,8 +127,17 @@ "spec": { "contextWindow": 400000, "maxOutputTokens": 128000, - "capabilities": ["chat", "reasoning", "code", "vision", "long_context", "tool_use"], - "serviceType": ["chat"], + "capabilities": [ + "chat", + "reasoning", + "code", + "vision", + "long_context", + "tool_use" + ], + "serviceType": [ + "chat" + ], "defaultTemperature": 1, "supportsReasoning": true } @@ -61,8 +149,17 @@ "spec": { "contextWindow": 400000, "maxOutputTokens": 128000, - "capabilities": ["chat", "reasoning", "code", "vision", "long_context", "tool_use"], - "serviceType": ["chat"], + "capabilities": [ + "chat", + "reasoning", + "code", + "vision", + "long_context", + "tool_use" + ], + "serviceType": [ + "chat" + ], "defaultTemperature": 1, "supportsReasoning": true } @@ -74,8 +171,17 @@ "spec": { "contextWindow": 400000, "maxOutputTokens": 128000, - "capabilities": ["chat", "reasoning", "code", "vision", "long_context", "tool_use"], - "serviceType": ["chat"], + "capabilities": [ + "chat", + "reasoning", + "code", + "vision", + "long_context", + "tool_use" + ], + "serviceType": [ + "chat" + ], "defaultTemperature": 1, "supportsReasoning": true } @@ -84,12 +190,24 @@ "id": "gpt-5-mini", "displayName": "GPT-5 Mini", "family": "gpt-5", - "match": { "patterns": ["gpt-5-mini*"] }, + "match": { + "patterns": [ + "gpt-5-mini*" + ] + }, "spec": { "contextWindow": 400000, "maxOutputTokens": 128000, - "capabilities": ["chat", "fast", "tool_use", "code", "vision"], - "serviceType": ["chat"], + "capabilities": [ + "chat", + "fast", + "tool_use", + "code", + "vision" + ], + "serviceType": [ + "chat" + ], "defaultTemperature": 1, "supportsReasoning": true } @@ -98,12 +216,22 @@ "id": "gpt-5-nano", "displayName": "GPT-5 Nano", "family": "gpt-5", - "match": { "patterns": ["gpt-5-nano*"] }, + "match": { + "patterns": [ + "gpt-5-nano*" + ] + }, "spec": { "contextWindow": 400000, "maxOutputTokens": 128000, - "capabilities": ["chat", "code", "fast"], - "serviceType": ["fast"], + "capabilities": [ + "chat", + "code", + "fast" + ], + "serviceType": [ + "fast" + ], "defaultTemperature": 1 } }, @@ -114,8 +242,17 @@ "spec": { "contextWindow": 1047576, "maxOutputTokens": 32768, - "capabilities": ["chat", "reasoning", "code", "vision", "ultra_long_context", "tool_use"], - "serviceType": ["chat"], + "capabilities": [ + "chat", + "reasoning", + "code", + "vision", + "ultra_long_context", + "tool_use" + ], + "serviceType": [ + "chat" + ], "defaultTemperature": 1 } }, @@ -126,8 +263,15 @@ "spec": { "contextWindow": 128000, "maxOutputTokens": 16384, - "capabilities": ["chat", "vision", "image_understanding", "tool_use"], - "serviceType": ["vision"], + "capabilities": [ + "chat", + "vision", + "image_understanding", + "tool_use" + ], + "serviceType": [ + "vision" + ], "defaultTemperature": 1 } }, @@ -135,12 +279,23 @@ "id": "gpt-4o-mini", "displayName": "GPT-4o Mini", "family": "gpt-4o", - "match": { "patterns": ["gpt-4o-mini*"] }, + "match": { + "patterns": [ + "gpt-4o-mini*" + ] + }, "spec": { "contextWindow": 128000, "maxOutputTokens": 16384, - "capabilities": ["chat", "code", "vision", "tool_use"], - "serviceType": ["vision"], + "capabilities": [ + "chat", + "code", + "vision", + "tool_use" + ], + "serviceType": [ + "vision" + ], "defaultTemperature": 1 } }, @@ -151,8 +306,17 @@ "spec": { "contextWindow": 200000, "maxOutputTokens": 100000, - "capabilities": ["reasoning", "deep_thinking", "code", "math", "science", "tool_use"], - "serviceType": ["reasoning"], + "capabilities": [ + "reasoning", + "deep_thinking", + "code", + "math", + "science", + "tool_use" + ], + "serviceType": [ + "reasoning" + ], "defaultTemperature": null, "supportsReasoning": true } @@ -161,12 +325,23 @@ "id": "o3-mini", "displayName": "o3 Mini", "family": "o3", - "match": { "patterns": ["o3-mini*"] }, + "match": { + "patterns": [ + "o3-mini*" + ] + }, "spec": { "contextWindow": 200000, "maxOutputTokens": 100000, - "capabilities": ["reasoning", "math", "code", "fast"], - "serviceType": ["reasoning"], + "capabilities": [ + "reasoning", + "math", + "code", + "fast" + ], + "serviceType": [ + "reasoning" + ], "defaultTemperature": null, "supportsReasoning": true } @@ -175,12 +350,24 @@ "id": "o4-mini", "displayName": "o4 Mini", "family": "o4", - "match": { "patterns": ["o4-mini*"] }, + "match": { + "patterns": [ + "o4-mini*" + ] + }, "spec": { "contextWindow": 200000, "maxOutputTokens": 100000, - "capabilities": ["reasoning", "math", "code", "tool_use", "vision"], - "serviceType": ["reasoning"], + "capabilities": [ + "reasoning", + "math", + "code", + "tool_use", + "vision" + ], + "serviceType": [ + "reasoning" + ], "defaultTemperature": null, "supportsReasoning": true } @@ -189,12 +376,25 @@ "id": "gpt-5.2-pro", "displayName": "GPT-5.2 Pro", "family": "gpt-5", - "match": { "exact": ["gpt-5.2-pro"] }, + "match": { + "exact": [ + "gpt-5.2-pro" + ] + }, "spec": { "contextWindow": 400000, "maxOutputTokens": 128000, - "capabilities": ["chat", "reasoning", "code", "vision", "long_context", "tool_use"], - "serviceType": ["chat"], + "capabilities": [ + "chat", + "reasoning", + "code", + "vision", + "long_context", + "tool_use" + ], + "serviceType": [ + "chat" + ], "defaultTemperature": 1, "supportsReasoning": true, "description": "OpenAI GPT-5.2 Pro 专业版,最高性能" @@ -204,12 +404,25 @@ "id": "gpt-5-pro", "displayName": "GPT-5 Pro", "family": "gpt-5", - "match": { "exact": ["gpt-5-pro"] }, + "match": { + "exact": [ + "gpt-5-pro" + ] + }, "spec": { "contextWindow": 400000, "maxOutputTokens": 272000, - "capabilities": ["chat", "reasoning", "code", "vision", "long_context", "tool_use"], - "serviceType": ["chat"], + "capabilities": [ + "chat", + "reasoning", + "code", + "vision", + "long_context", + "tool_use" + ], + "serviceType": [ + "chat" + ], "defaultTemperature": 1, "supportsReasoning": true, "description": "OpenAI GPT-5 Pro 专业版高性能推理模型" @@ -219,12 +432,27 @@ "id": "gpt-4.1-mini", "displayName": "GPT-4.1 mini", "family": "gpt-4.1", - "match": { "exact": ["gpt-4.1-mini"], "patterns": ["gpt-4.1-mini*"] }, + "match": { + "exact": [ + "gpt-4.1-mini" + ], + "patterns": [ + "gpt-4.1-mini*" + ] + }, "spec": { "contextWindow": 1047576, "maxOutputTokens": 32768, - "capabilities": ["chat", "code", "vision", "ultra_long_context", "tool_use"], - "serviceType": ["chat"], + "capabilities": [ + "chat", + "code", + "vision", + "ultra_long_context", + "tool_use" + ], + "serviceType": [ + "chat" + ], "defaultTemperature": 1, "description": "OpenAI GPT-4.1 mini,1M 上下文,高性价比" } @@ -233,12 +461,26 @@ "id": "gpt-4.1-nano", "displayName": "GPT-4.1 nano", "family": "gpt-4.1", - "match": { "exact": ["gpt-4.1-nano"], "patterns": ["gpt-4.1-nano*"] }, + "match": { + "exact": [ + "gpt-4.1-nano" + ], + "patterns": [ + "gpt-4.1-nano*" + ] + }, "spec": { "contextWindow": 1047576, "maxOutputTokens": 32768, - "capabilities": ["chat", "code", "ultra_long_context", "fast"], - "serviceType": ["fast"], + "capabilities": [ + "chat", + "code", + "ultra_long_context", + "fast" + ], + "serviceType": [ + "fast" + ], "defaultTemperature": 1, "description": "OpenAI GPT-4.1 nano,1M 上下文,极致性价比" } @@ -247,11 +489,20 @@ "id": "text-embedding-3-small", "displayName": "text-embedding-3-small", "family": "text-embedding-3", - "match": { "exact": ["text-embedding-3-small"] }, + "match": { + "exact": [ + "text-embedding-3-small" + ] + }, "spec": { "contextWindow": 8192, - "capabilities": ["text_embedding", "semantic_search"], - "serviceType": ["embedding"], + "capabilities": [ + "text_embedding", + "semantic_search" + ], + "serviceType": [ + "embedding" + ], "description": "OpenAI 轻量文本向量化模型,1536 维" } }, @@ -259,11 +510,20 @@ "id": "text-embedding-3-large", "displayName": "text-embedding-3-large", "family": "text-embedding-3", - "match": { "exact": ["text-embedding-3-large"] }, + "match": { + "exact": [ + "text-embedding-3-large" + ] + }, "spec": { "contextWindow": 8192, - "capabilities": ["text_embedding", "semantic_search"], - "serviceType": ["embedding"], + "capabilities": [ + "text_embedding", + "semantic_search" + ], + "serviceType": [ + "embedding" + ], "description": "OpenAI 高精度文本向量化模型,3072 维" } }, @@ -271,10 +531,18 @@ "id": "tts-1", "displayName": "TTS-1", "family": "tts-1", - "match": { "exact": ["tts-1"] }, + "match": { + "exact": [ + "tts-1" + ] + }, "spec": { - "capabilities": ["tts"], - "serviceType": ["tts"], + "capabilities": [ + "tts" + ], + "serviceType": [ + "tts" + ], "description": "OpenAI 标准语音合成" } }, @@ -282,10 +550,18 @@ "id": "tts-1-hd", "displayName": "TTS-1-HD", "family": "tts-1", - "match": { "exact": ["tts-1-hd"] }, + "match": { + "exact": [ + "tts-1-hd" + ] + }, "spec": { - "capabilities": ["tts"], - "serviceType": ["tts"], + "capabilities": [ + "tts" + ], + "serviceType": [ + "tts" + ], "description": "OpenAI 高清语音合成" } }, @@ -293,10 +569,19 @@ "id": "whisper-1", "displayName": "Whisper", "family": "whisper", - "match": { "exact": ["whisper-1"] }, + "match": { + "exact": [ + "whisper-1" + ] + }, "spec": { - "capabilities": ["asr", "multilingual"], - "serviceType": ["asr"], + "capabilities": [ + "asr", + "multilingual" + ], + "serviceType": [ + "asr" + ], "description": "OpenAI 通用语音识别" } }, @@ -304,12 +589,24 @@ "id": "o3-pro", "displayName": "o3-pro", "family": "o3", - "match": { "exact": ["o3-pro"] }, + "match": { + "exact": [ + "o3-pro" + ] + }, "spec": { "contextWindow": 200000, "maxOutputTokens": 100000, - "capabilities": ["reasoning", "deep_thinking", "code", "math", "science"], - "serviceType": ["reasoning"], + "capabilities": [ + "reasoning", + "deep_thinking", + "code", + "math", + "science" + ], + "serviceType": [ + "reasoning" + ], "defaultTemperature": null, "supportsReasoning": true, "description": "OpenAI o3-pro 高级推理模型,200K 上下文" @@ -319,10 +616,19 @@ "id": "dall-e-3", "displayName": "DALL-E 3", "family": "dall-e", - "match": { "exact": ["dall-e-3"] }, + "match": { + "exact": [ + "dall-e-3" + ] + }, "spec": { - "capabilities": ["image_generation", "text_rendering"], - "serviceType": ["image_gen"], + "capabilities": [ + "image_generation", + "text_rendering" + ], + "serviceType": [ + "image_gen" + ], "description": "OpenAI 高质量文生图模型" } }, @@ -330,12 +636,24 @@ "id": "gpt-4o-realtime", "displayName": "GPT-4o Realtime", "family": "gpt-4o-realtime", - "match": { "exact": ["gpt-4o-realtime"] }, + "match": { + "exact": [ + "gpt-4o-realtime" + ] + }, "spec": { "contextWindow": 32000, "maxOutputTokens": 4096, - "capabilities": ["chat", "vision", "tts", "asr", "realtime"], - "serviceType": ["omni"], + "capabilities": [ + "chat", + "vision", + "tts", + "asr", + "realtime" + ], + "serviceType": [ + "omni" + ], "defaultTemperature": 0.7, "description": "OpenAI 全能实时模型,支持语音 + 文本 + 视觉" } @@ -344,12 +662,25 @@ "id": "gpt-4o-realtime-preview", "displayName": "GPT-4o Realtime Preview", "family": "gpt-4o-realtime", - "match": { "exact": ["gpt-4o-realtime-preview"], "patterns": ["gpt-4o-realtime-preview*"] }, + "match": { + "exact": [ + "gpt-4o-realtime-preview" + ], + "patterns": [ + "gpt-4o-realtime-preview*" + ] + }, "spec": { "contextWindow": 32000, "maxOutputTokens": 4096, - "capabilities": ["realtime", "speech_to_speech", "low_latency"], - "serviceType": ["realtime_voice"], + "capabilities": [ + "realtime", + "speech_to_speech", + "low_latency" + ], + "serviceType": [ + "realtime_voice" + ], "defaultTemperature": 0.7, "description": "OpenAI 实时语音交互模型(预览版)" } @@ -358,14 +689,209 @@ "id": "gpt-oss-120b", "displayName": "GPT OSS 120B", "family": "gpt-oss", - "match": { "exact": ["gpt-oss-120b", "openai/gpt-oss-120b:free", "gpt-oss-120b:free"] }, + "match": { + "exact": [ + "gpt-oss-120b", + "openai/gpt-oss-120b:free", + "gpt-oss-120b:free" + ] + }, "spec": { "contextWindow": 128000, "maxOutputTokens": 16384, - "capabilities": ["chat", "code", "reasoning"], - "serviceType": ["chat"], + "capabilities": [ + "chat", + "code", + "reasoning" + ], + "serviceType": [ + "chat" + ], "description": "OpenAI 开源 120B 模型(通过 OpenRouter 提供,:free 层)" } + }, + { + "id": "gpt-5.6-sol", + "displayName": "GPT-5.6 Sol", + "spec": { + "contextWindow": 1050000, + "maxOutputTokens": 128000, + "capabilities": [ + "chat", + "reasoning", + "code", + "vision", + "long_context", + "tool_use", + "agent" + ], + "serviceType": [ + "chat" + ], + "supportsReasoning": true + }, + "routing": { + "tier": "flagship", + "routingPriority": 10, + "eligibleForAgent": true, + "defaultReference": false, + "reasoning": { + "supportedModes": [ + "auto", + "off", + "low", + "medium", + "high", + "xhigh", + "max" + ], + "defaultMode": "low" + } + } + }, + { + "id": "gpt-5.6-terra", + "displayName": "GPT-5.6 Terra", + "spec": { + "contextWindow": 1050000, + "maxOutputTokens": 128000, + "capabilities": [ + "chat", + "reasoning", + "code", + "vision", + "long_context", + "tool_use", + "agent" + ], + "serviceType": [ + "chat" + ], + "supportsReasoning": true + }, + "routing": { + "tier": "balanced", + "routingPriority": 10, + "eligibleForAgent": true, + "defaultReference": false, + "reasoning": { + "supportedModes": [ + "auto", + "off", + "low", + "medium", + "high", + "xhigh", + "max" + ], + "defaultMode": "medium" + } + } + }, + { + "id": "gpt-5.6-luna", + "displayName": "GPT-5.6 Luna", + "spec": { + "contextWindow": 1050000, + "maxOutputTokens": 128000, + "capabilities": [ + "chat", + "reasoning", + "code", + "vision", + "long_context", + "tool_use", + "fast" + ], + "serviceType": [ + "chat" + ], + "supportsReasoning": true + }, + "routing": { + "tier": "lightweight", + "routingPriority": 10, + "eligibleForAgent": true, + "defaultReference": false, + "reasoning": { + "supportedModes": [ + "auto", + "off", + "low", + "medium", + "high", + "xhigh", + "max" + ], + "defaultMode": "medium" + } + } + }, + { + "id": "gpt-5.4-mini", + "displayName": "GPT-5.4 Mini", + "spec": { + "contextWindow": 400000, + "maxOutputTokens": 128000, + "capabilities": [ + "chat", + "reasoning", + "code", + "vision", + "long_context", + "tool_use", + "fast" + ], + "serviceType": [ + "chat" + ], + "supportsReasoning": true + }, + "routing": { + "tier": "lightweight", + "routingPriority": 25, + "eligibleForAgent": true, + "defaultReference": false, + "reasoning": { + "supportedModes": [ + "auto", + "off", + "low", + "medium", + "high", + "xhigh" + ], + "defaultMode": "low" + } + } + }, + { + "id": "gpt-5.3-codex-spark", + "displayName": "GPT-5.3 Codex Spark(Pro 专属)", + "spec": { + "contextWindow": 128000, + "capabilities": [ + "chat", + "code", + "tool_use", + "fast" + ], + "serviceType": [ + "chat" + ] + }, + "routing": { + "tier": "lightweight", + "routingPriority": 30, + "eligibleForAgent": true, + "defaultReference": false, + "reasoning": { + "supportedModes": [ + "auto" + ], + "defaultMode": "auto" + } + } } ] } diff --git a/compute/model-specs/perplexity.json b/compute/model-specs/perplexity.json index 6385387..3505837 100644 --- a/compute/model-specs/perplexity.json +++ b/compute/model-specs/perplexity.json @@ -5,12 +5,23 @@ "id": "sonar-pro", "displayName": "Sonar Pro", "family": "sonar-pro", - "match": { "exact": ["sonar-pro"] }, + "match": { + "exact": [ + "sonar-pro" + ] + }, "spec": { "contextWindow": 200000, "maxOutputTokens": 8192, - "capabilities": ["chat", "web_search", "reasoning", "citation"], - "serviceType": ["chat"], + "capabilities": [ + "chat", + "web_search", + "reasoning", + "citation" + ], + "serviceType": [ + "chat" + ], "description": "Perplexity 旗舰搜索增强模型,内置实时联网搜索和引用,200K 上下文" } }, @@ -18,12 +29,26 @@ "id": "sonar-reasoning-pro", "displayName": "Sonar Reasoning Pro", "family": "sonar-reasoning", - "match": { "exact": ["sonar-reasoning-pro"], "patterns": ["sonar-reasoning*"] }, + "match": { + "exact": [ + "sonar-reasoning-pro" + ], + "patterns": [ + "sonar-reasoning*" + ] + }, "spec": { "contextWindow": 128000, "maxOutputTokens": 8192, - "capabilities": ["chat", "web_search", "reasoning", "deep_thinking"], - "serviceType": ["chat"], + "capabilities": [ + "chat", + "web_search", + "reasoning", + "deep_thinking" + ], + "serviceType": [ + "chat" + ], "defaultTemperature": null, "supportsReasoning": true, "description": "Perplexity 深度推理模型,内置联网搜索和深度思考" @@ -33,12 +58,26 @@ "id": "sonar", "displayName": "Sonar", "family": "sonar", - "match": { "exact": ["sonar"], "patterns": ["sonar-*"] }, + "match": { + "exact": [ + "sonar" + ], + "patterns": [ + "sonar-*" + ] + }, "spec": { "contextWindow": 128000, "maxOutputTokens": 4096, - "capabilities": ["chat", "web_search", "citation", "fast"], - "serviceType": ["chat"], + "capabilities": [ + "chat", + "web_search", + "citation", + "fast" + ], + "serviceType": [ + "chat" + ], "description": "Perplexity 轻量搜索模型,低成本联网搜索" } } diff --git a/compute/model-specs/qwen.json b/compute/model-specs/qwen.json index 69c1c3e..704a03e 100644 --- a/compute/model-specs/qwen.json +++ b/compute/model-specs/qwen.json @@ -5,28 +5,80 @@ "id": "qwen3.8-max-preview", "displayName": "Qwen3.8 Max Preview", "family": "qwen3.8", - "match": { "exact": ["qwen3.8-max-preview"], "patterns": ["qwen3.8-max-preview*"] }, + "match": { + "exact": [ + "qwen3.8-max-preview" + ], + "patterns": [ + "qwen3.8-max-preview*" + ] + }, "spec": { "contextWindow": 1000000, "maxOutputTokens": 65536, - "capabilities": ["chat", "reasoning", "code", "multilingual", "tool_use", "long_context", "agent", "vision"], - "serviceType": ["chat"], + "capabilities": [ + "chat", + "reasoning", + "code", + "multilingual", + "tool_use", + "long_context", + "agent", + "vision" + ], + "serviceType": [ + "chat" + ], "defaultTemperature": 0.6, "defaultTopP": 0.95, "supportsReasoning": true, "description": "通义千问 Qwen3.8 Max 预览版,100 万上下文,支持视觉理解" + }, + "routing": { + "tier": "flagship", + "routingPriority": 40, + "eligibleForAgent": true, + "defaultReference": false, + "reasoning": { + "supportedModes": [ + "auto", + "off", + "minimal", + "low", + "medium", + "high", + "xhigh" + ], + "defaultMode": "high" + } } }, { "id": "qwen3.7-max", "displayName": "Qwen3.7 Max", "family": "qwen3.7", - "match": { "exact": ["qwen3.7-max"], "patterns": ["qwen3.7-max*"] }, + "match": { + "exact": [ + "qwen3.7-max" + ], + "patterns": [ + "qwen3.7-max*" + ] + }, "spec": { "contextWindow": 1000000, "maxOutputTokens": 65536, - "capabilities": ["chat", "reasoning", "code", "multilingual", "tool_use", "long_context"], - "serviceType": ["chat"], + "capabilities": [ + "chat", + "reasoning", + "code", + "multilingual", + "tool_use", + "long_context" + ], + "serviceType": [ + "chat" + ], "defaultTemperature": 1, "supportsReasoning": true, "description": "通义千问 Qwen3.7 Max 旗舰模型,100 万上下文" @@ -36,27 +88,74 @@ "id": "qwen3.7-plus", "displayName": "Qwen3.7 Plus", "family": "qwen3.7", - "match": { "exact": ["qwen3.7-plus"], "patterns": ["qwen3.7-plus*"] }, + "match": { + "exact": [ + "qwen3.7-plus" + ], + "patterns": [ + "qwen3.7-plus*" + ] + }, "spec": { "contextWindow": 1000000, "maxOutputTokens": 65536, - "capabilities": ["chat", "reasoning", "code", "vision", "multilingual", "tool_use", "long_context"], - "serviceType": ["chat"], + "capabilities": [ + "chat", + "reasoning", + "code", + "vision", + "multilingual", + "tool_use", + "long_context" + ], + "serviceType": [ + "chat" + ], "defaultTemperature": 1, "supportsReasoning": true, "description": "通义千问 Qwen3.7 Plus 高性价比多模态模型,100 万上下文" + }, + "routing": { + "tier": "balanced", + "routingPriority": 35, + "eligibleForAgent": true, + "defaultReference": false, + "reasoning": { + "supportedModes": [ + "auto", + "off", + "minimal", + "low", + "medium", + "high", + "xhigh" + ], + "defaultMode": "medium" + } } }, { "id": "qwen-max", "displayName": "Qwen Max", "family": "qwen-max", - "match": { "patterns": ["qwen-max*"] }, + "match": { + "patterns": [ + "qwen-max*" + ] + }, "spec": { "contextWindow": 32768, "maxOutputTokens": 8192, - "capabilities": ["chat", "reasoning", "code", "multilingual", "long_context"], - "serviceType": ["chat"], + "capabilities": [ + "chat", + "reasoning", + "code", + "multilingual", + "long_context" + ], + "serviceType": [ + "chat" + ], "defaultTemperature": 0.7 } }, @@ -64,12 +163,23 @@ "id": "qwen-plus", "displayName": "Qwen Plus", "family": "qwen-plus", - "match": { "patterns": ["qwen-plus*"] }, + "match": { + "patterns": [ + "qwen-plus*" + ] + }, "spec": { "contextWindow": 1000000, "maxOutputTokens": 32768, - "capabilities": ["chat", "reasoning", "code", "thinking_mode"], - "serviceType": ["chat"], + "capabilities": [ + "chat", + "reasoning", + "code", + "thinking_mode" + ], + "serviceType": [ + "chat" + ], "defaultTemperature": 0.7 } }, @@ -77,12 +187,23 @@ "id": "qwen-turbo", "displayName": "Qwen Turbo", "family": "qwen-turbo", - "match": { "patterns": ["qwen-turbo*"] }, + "match": { + "patterns": [ + "qwen-turbo*" + ] + }, "spec": { "contextWindow": 1000000, "maxOutputTokens": 16384, - "capabilities": ["chat", "code", "long_context", "fast"], - "serviceType": ["chat"], + "capabilities": [ + "chat", + "code", + "long_context", + "fast" + ], + "serviceType": [ + "chat" + ], "defaultTemperature": 0.7 } }, @@ -93,8 +214,19 @@ "spec": { "contextWindow": 262144, "maxOutputTokens": 65536, - "capabilities": ["chat", "reasoning", "code", "multilingual", "long_context", "tool_use", "agent", "vision"], - "serviceType": ["chat"], + "capabilities": [ + "chat", + "reasoning", + "code", + "multilingual", + "long_context", + "tool_use", + "agent", + "vision" + ], + "serviceType": [ + "chat" + ], "defaultTemperature": 0.7, "supportsReasoning": true } @@ -106,8 +238,19 @@ "spec": { "contextWindow": 1000000, "maxOutputTokens": 65536, - "capabilities": ["chat", "reasoning", "code", "multilingual", "long_context", "tool_use", "agent", "vision"], - "serviceType": ["chat"], + "capabilities": [ + "chat", + "reasoning", + "code", + "multilingual", + "long_context", + "tool_use", + "agent", + "vision" + ], + "serviceType": [ + "chat" + ], "defaultTemperature": 0.6, "supportsReasoning": true } @@ -119,8 +262,20 @@ "spec": { "contextWindow": 1000000, "maxOutputTokens": 65536, - "capabilities": ["chat", "reasoning", "code", "multilingual", "long_context", "tool_use", "agent", "vision"], - "serviceType": ["chat", "vision"], + "capabilities": [ + "chat", + "reasoning", + "code", + "multilingual", + "long_context", + "tool_use", + "agent", + "vision" + ], + "serviceType": [ + "chat", + "vision" + ], "defaultTemperature": 0.6, "supportsReasoning": true } @@ -129,12 +284,28 @@ "id": "qwen3.6-flash", "displayName": "Qwen3.6 Flash", "family": "qwen3.6", - "match": { "exact": ["qwen3.6-flash"] }, + "match": { + "exact": [ + "qwen3.6-flash" + ] + }, "spec": { "contextWindow": 1000000, "maxOutputTokens": 65536, - "capabilities": ["chat", "reasoning", "code", "multilingual", "long_context", "tool_use", "vision", "fast"], - "serviceType": ["chat", "vision"], + "capabilities": [ + "chat", + "reasoning", + "code", + "multilingual", + "long_context", + "tool_use", + "vision", + "fast" + ], + "serviceType": [ + "chat", + "vision" + ], "defaultTemperature": 0.6, "supportsReasoning": true, "description": "通义千问3.6 Flash,高性价比多模态模型,100万上下文" @@ -144,12 +315,22 @@ "id": "qwen-long", "displayName": "Qwen Long", "family": "qwen-long", - "match": { "exact": ["qwen-long"] }, + "match": { + "exact": [ + "qwen-long" + ] + }, "spec": { "contextWindow": 10000000, "maxOutputTokens": 32768, - "capabilities": ["chat", "ultra_long_context", "document_processing"], - "serviceType": ["chat"], + "capabilities": [ + "chat", + "ultra_long_context", + "document_processing" + ], + "serviceType": [ + "chat" + ], "defaultTemperature": 1, "description": "通义千问 Long,支持 1000 万上下文,适合超长文档处理" } @@ -158,12 +339,24 @@ "id": "qwen3-vl-plus", "displayName": "Qwen3-VL-Plus", "family": "qwen3-vl", - "match": { "exact": ["qwen3-vl-plus"] }, + "match": { + "exact": [ + "qwen3-vl-plus" + ] + }, "spec": { "contextWindow": 262144, "maxOutputTokens": 32768, - "capabilities": ["chat", "vision", "image_understanding", "ocr", "chart_analysis"], - "serviceType": ["vision"], + "capabilities": [ + "chat", + "vision", + "image_understanding", + "ocr", + "chart_analysis" + ], + "serviceType": [ + "vision" + ], "defaultTemperature": 0.7, "description": "通义千问3代视觉模型Plus版,支持图像理解" } @@ -172,12 +365,23 @@ "id": "qwen3-vl-flash", "displayName": "Qwen3-VL-Flash", "family": "qwen3-vl", - "match": { "exact": ["qwen3-vl-flash"] }, + "match": { + "exact": [ + "qwen3-vl-flash" + ] + }, "spec": { "contextWindow": 262144, "maxOutputTokens": 32768, - "capabilities": ["chat", "vision", "image_understanding", "fast"], - "serviceType": ["vision"], + "capabilities": [ + "chat", + "vision", + "image_understanding", + "fast" + ], + "serviceType": [ + "vision" + ], "defaultTemperature": 0.7, "description": "通义千问3代视觉模型Flash版,高性价比" } @@ -186,11 +390,21 @@ "id": "text-embedding-v3", "displayName": "text-embedding-v3", "family": "text-embedding-v3", - "match": { "exact": ["text-embedding-v3"] }, + "match": { + "exact": [ + "text-embedding-v3" + ] + }, "spec": { "contextWindow": 8192, - "capabilities": ["text_embedding", "semantic_search", "chinese_optimized"], - "serviceType": ["embedding"], + "capabilities": [ + "text_embedding", + "semantic_search", + "chinese_optimized" + ], + "serviceType": [ + "embedding" + ], "description": "阿里云文本向量化模型 v3" } }, @@ -198,11 +412,21 @@ "id": "text-embedding-v4", "displayName": "text-embedding-v4", "family": "text-embedding-v4", - "match": { "exact": ["text-embedding-v4"] }, + "match": { + "exact": [ + "text-embedding-v4" + ] + }, "spec": { "contextWindow": 8192, - "capabilities": ["text_embedding", "semantic_search", "rag"], - "serviceType": ["embedding"], + "capabilities": [ + "text_embedding", + "semantic_search", + "rag" + ], + "serviceType": [ + "embedding" + ], "description": "阿里云百炼文本向量模型v4,支持多维度与多语种" } }, @@ -210,11 +434,21 @@ "id": "qwen3-rerank", "displayName": "Qwen3-Rerank", "family": "qwen3-rerank", - "match": { "exact": ["qwen3-rerank"] }, + "match": { + "exact": [ + "qwen3-rerank" + ] + }, "spec": { "contextWindow": 120000, - "capabilities": ["rerank", "semantic_reranking", "multilingual"], - "serviceType": ["rerank"], + "capabilities": [ + "rerank", + "semantic_reranking", + "multilingual" + ], + "serviceType": [ + "rerank" + ], "description": "检索重排序,支持 100+ 语种" } }, @@ -222,10 +456,20 @@ "id": "cosyvoice-v2", "displayName": "CosyVoice V2", "family": "cosyvoice", - "match": { "exact": ["cosyvoice-v2"] }, + "match": { + "exact": [ + "cosyvoice-v2" + ] + }, "spec": { - "capabilities": ["tts", "multilingual", "chinese_optimized"], - "serviceType": ["tts"], + "capabilities": [ + "tts", + "multilingual", + "chinese_optimized" + ], + "serviceType": [ + "tts" + ], "description": "通义语音合成,支持中英文" } }, @@ -233,10 +477,19 @@ "id": "paraformer-v2", "displayName": "Paraformer V2", "family": "paraformer", - "match": { "exact": ["paraformer-v2"] }, + "match": { + "exact": [ + "paraformer-v2" + ] + }, "spec": { - "capabilities": ["asr", "chinese_optimized"], - "serviceType": ["asr"], + "capabilities": [ + "asr", + "chinese_optimized" + ], + "serviceType": [ + "asr" + ], "description": "通义语音识别" } }, @@ -244,32 +497,84 @@ "id": "wan2.7-image-pro", "displayName": "通义万相 2.7 Pro", "family": "wan2", - "match": { "exact": ["wan2.7-image-pro"] }, + "match": { + "exact": [ + "wan2.7-image-pro" + ] + }, "spec": { - "capabilities": ["image_generation", "chinese_optimized", "high_quality"], - "serviceType": ["image_gen"], + "capabilities": [ + "image_generation", + "chinese_optimized", + "high_quality" + ], + "serviceType": [ + "image_gen" + ], "description": "万相最新旗舰文生图模型,支持 4K 分辨率" + }, + "routing": { + "tier": "flagship", + "routingPriority": 100, + "eligibleForAgent": false, + "defaultReference": false, + "reasoning": { + "supportedModes": [ + "auto" + ], + "defaultMode": "auto" + } } }, { "id": "wan2.7-image", "displayName": "通义万相 2.7", "family": "wan2", - "match": { "exact": ["wan2.7-image"] }, + "match": { + "exact": [ + "wan2.7-image" + ] + }, "spec": { - "capabilities": ["image_generation", "chinese_optimized"], - "serviceType": ["image_gen"], + "capabilities": [ + "image_generation", + "chinese_optimized" + ], + "serviceType": [ + "image_gen" + ], "description": "万相最新标准文生图模型,高画质" + }, + "routing": { + "tier": "balanced", + "routingPriority": 107, + "eligibleForAgent": false, + "defaultReference": false, + "reasoning": { + "supportedModes": [ + "auto" + ], + "defaultMode": "auto" + } } }, { "id": "wan2.6-t2i", "displayName": "通义万相 2.6 文生图", "family": "wan2", - "match": { "exact": ["wan2.6-t2i"] }, + "match": { + "exact": [ + "wan2.6-t2i" + ] + }, "spec": { - "capabilities": ["image_generation", "chinese_optimized"], - "serviceType": ["image_gen"], + "capabilities": [ + "image_generation", + "chinese_optimized" + ], + "serviceType": [ + "image_gen" + ], "description": "万相 2.6 文生图专用模型,稳定可靠" } }, @@ -277,10 +582,19 @@ "id": "wan2.2-t2i-plus", "displayName": "通义万相 2.2 Plus", "family": "wan2", - "match": { "exact": ["wan2.2-t2i-plus"] }, + "match": { + "exact": [ + "wan2.2-t2i-plus" + ] + }, "spec": { - "capabilities": ["image_generation", "chinese_optimized"], - "serviceType": ["image_gen"], + "capabilities": [ + "image_generation", + "chinese_optimized" + ], + "serviceType": [ + "image_gen" + ], "description": "万相 2.2 增强版,画质与速度平衡" } }, @@ -288,10 +602,20 @@ "id": "wan2.2-t2i-flash", "displayName": "通义万相 2.2 Flash", "family": "wan2", - "match": { "exact": ["wan2.2-t2i-flash"] }, + "match": { + "exact": [ + "wan2.2-t2i-flash" + ] + }, "spec": { - "capabilities": ["image_generation", "chinese_optimized", "fast"], - "serviceType": ["image_gen"], + "capabilities": [ + "image_generation", + "chinese_optimized", + "fast" + ], + "serviceType": [ + "image_gen" + ], "description": "万相 2.2 快速版,生成速度极快" } }, @@ -299,10 +623,19 @@ "id": "wan2.6-t2v", "displayName": "通义万相 2.6 文生视频", "family": "wan2", - "match": { "exact": ["wan2.6-t2v"] }, + "match": { + "exact": [ + "wan2.6-t2v" + ] + }, "spec": { - "capabilities": ["video_generation", "chinese_optimized"], - "serviceType": ["video_gen"], + "capabilities": [ + "video_generation", + "chinese_optimized" + ], + "serviceType": [ + "video_gen" + ], "description": "万相 2.6 文生视频模型,支持文生视频和图生视频" } }, @@ -310,10 +643,20 @@ "id": "cosyvoice-clone", "displayName": "CosyVoice 声音复刻", "family": "cosyvoice", - "match": { "exact": ["cosyvoice-clone"] }, + "match": { + "exact": [ + "cosyvoice-clone" + ] + }, "spec": { - "capabilities": ["voice_clone", "chinese_optimized", "few_shot"], - "serviceType": ["voice_clone"], + "capabilities": [ + "voice_clone", + "chinese_optimized", + "few_shot" + ], + "serviceType": [ + "voice_clone" + ], "description": "通义声音复刻,少量样本即可克隆" } }, @@ -321,12 +664,25 @@ "id": "qwen-omni-turbo", "displayName": "Qwen-Omni-Turbo", "family": "qwen-omni", - "match": { "exact": ["qwen-omni-turbo"] }, + "match": { + "exact": [ + "qwen-omni-turbo" + ] + }, "spec": { "contextWindow": 32768, "maxOutputTokens": 2048, - "capabilities": ["chat", "vision", "tts", "asr", "multimodal", "tool_use"], - "serviceType": ["omni"], + "capabilities": [ + "chat", + "vision", + "tts", + "asr", + "multimodal", + "tool_use" + ], + "serviceType": [ + "omni" + ], "defaultTemperature": 0.7, "description": "通义全能模型,支持音视频文本多模态" } @@ -335,12 +691,22 @@ "id": "qwen3-max-trans", "displayName": "Qwen3-Max(翻译)", "family": "qwen3-trans", - "match": { "exact": ["qwen3-max-trans"] }, + "match": { + "exact": [ + "qwen3-max-trans" + ] + }, "spec": { "contextWindow": 131072, "maxOutputTokens": 8192, - "capabilities": ["translation", "multilingual", "chinese_optimized"], - "serviceType": ["translation"], + "capabilities": [ + "translation", + "multilingual", + "chinese_optimized" + ], + "serviceType": [ + "translation" + ], "defaultTemperature": 0.65, "description": "通义千问翻译,中英日韩等多语种互译" } @@ -349,12 +715,26 @@ "id": "qwen3-coder", "displayName": "Qwen3 Coder", "family": "qwen3-coder", - "match": { "exact": ["qwen3-coder", "qwen/qwen3-coder:free", "qwen3-coder:free"] }, + "match": { + "exact": [ + "qwen3-coder", + "qwen/qwen3-coder:free", + "qwen3-coder:free" + ] + }, "spec": { "contextWindow": 262144, "maxOutputTokens": 65536, - "capabilities": ["chat", "code", "long_context", "agent", "tool_use"], - "serviceType": ["chat"], + "capabilities": [ + "chat", + "code", + "long_context", + "agent", + "tool_use" + ], + "serviceType": [ + "chat" + ], "defaultTemperature": 0.7, "description": "通义千问3 Coder 编程模型(通过 OpenRouter 提供,:free 层)" } @@ -363,12 +743,26 @@ "id": "qwen3.7-max", "displayName": "Qwen3.7 Max", "family": "qwen3.7", - "match": { "exact": ["qwen3.7-max"] }, + "match": { + "exact": [ + "qwen3.7-max" + ] + }, "spec": { "contextWindow": 500000, "maxOutputTokens": 65536, - "capabilities": ["chat", "reasoning", "code", "vision", "tool_use", "agent", "deep_thinking"], - "serviceType": ["chat"], + "capabilities": [ + "chat", + "reasoning", + "code", + "vision", + "tool_use", + "agent", + "deep_thinking" + ], + "serviceType": [ + "chat" + ], "defaultTemperature": 0.7, "supportsReasoning": true, "description": "阿里通义千问 Qwen3.7 Max,原生 1M 上下文,Hybrid MoE 架构" @@ -378,12 +772,24 @@ "id": "qwen3.5-35b-a3b", "displayName": "Qwen3.5 35B-A3B", "family": "qwen3.5", - "match": { "exact": ["qwen3.5-35b-a3b"] }, + "match": { + "exact": [ + "qwen3.5-35b-a3b" + ] + }, "spec": { "contextWindow": 131072, "maxOutputTokens": 65536, - "capabilities": ["chat", "reasoning", "code", "vision", "tool_use"], - "serviceType": ["chat"], + "capabilities": [ + "chat", + "reasoning", + "code", + "vision", + "tool_use" + ], + "serviceType": [ + "chat" + ], "defaultTemperature": 0.7, "description": "Qwen3.5 35B-A3B MoE 模型(35B 总参/3B 激活),131K 上下文" } @@ -392,12 +798,24 @@ "id": "qwen3.5-27b", "displayName": "Qwen3.5 27B", "family": "qwen3.5", - "match": { "exact": ["qwen3.5-27b"] }, + "match": { + "exact": [ + "qwen3.5-27b" + ] + }, "spec": { "contextWindow": 131072, "maxOutputTokens": 65536, - "capabilities": ["chat", "reasoning", "code", "vision", "tool_use"], - "serviceType": ["chat"], + "capabilities": [ + "chat", + "reasoning", + "code", + "vision", + "tool_use" + ], + "serviceType": [ + "chat" + ], "defaultTemperature": 0.7, "description": "Qwen3.5 27B Dense 模型,131K 上下文" } @@ -406,12 +824,25 @@ "id": "qwen3-coder-480b", "displayName": "Qwen3 Coder 480B (硅基)", "family": "qwen3-coder", - "match": { "exact": ["qwen3-coder-480b", "Qwen/Qwen3-Coder-480B-A35B-Instruct"] }, + "match": { + "exact": [ + "qwen3-coder-480b", + "Qwen/Qwen3-Coder-480B-A35B-Instruct" + ] + }, "spec": { "contextWindow": 262144, "maxOutputTokens": 262144, - "capabilities": ["chat", "code", "long_context", "agent", "tool_use"], - "serviceType": ["chat"], + "capabilities": [ + "chat", + "code", + "long_context", + "agent", + "tool_use" + ], + "serviceType": [ + "chat" + ], "defaultTemperature": 0.7, "description": "Qwen3-Coder-480B-A35B,480B MoE(35B 激活),256K 上下文,面向 Agentic Coding" } @@ -420,12 +851,26 @@ "id": "qwen3-235b", "displayName": "Qwen3 235B (硅基)", "family": "qwen3-235b", - "match": { "exact": ["qwen3-235b", "Qwen/Qwen3-235B-A22B-Instruct-2507"] }, + "match": { + "exact": [ + "qwen3-235b", + "Qwen/Qwen3-235B-A22B-Instruct-2507" + ] + }, "spec": { "contextWindow": 262144, "maxOutputTokens": 262144, - "capabilities": ["chat", "code", "multilingual", "tool_use", "agent", "long_context"], - "serviceType": ["chat"], + "capabilities": [ + "chat", + "code", + "multilingual", + "tool_use", + "agent", + "long_context" + ], + "serviceType": [ + "chat" + ], "defaultTemperature": 0.7, "description": "Qwen3-235B-A22B-Instruct-2507,235B MoE 通用指令模型,262K 上下文" } @@ -434,10 +879,20 @@ "id": "qwen-image-2.0-pro", "displayName": "千问图像 2.0 Pro", "family": "qwen-image-2", - "match": { "exact": ["qwen-image-2.0-pro"] }, + "match": { + "exact": [ + "qwen-image-2.0-pro" + ] + }, "spec": { - "capabilities": ["image_generation", "chinese_optimized", "high_quality"], - "serviceType": ["image_gen"], + "capabilities": [ + "image_generation", + "chinese_optimized", + "high_quality" + ], + "serviceType": [ + "image_gen" + ], "description": "千问图像生成 2.0 Pro 旗舰版,高画质多风格" } }, @@ -445,10 +900,19 @@ "id": "qwen-image-2.0", "displayName": "千问图像 2.0", "family": "qwen-image-2", - "match": { "exact": ["qwen-image-2.0"] }, + "match": { + "exact": [ + "qwen-image-2.0" + ] + }, "spec": { - "capabilities": ["image_generation", "chinese_optimized"], - "serviceType": ["image_gen"], + "capabilities": [ + "image_generation", + "chinese_optimized" + ], + "serviceType": [ + "image_gen" + ], "description": "千问图像生成 2.0 标准版" } } diff --git a/compute/model-specs/stability.json b/compute/model-specs/stability.json index f44573e..e206bee 100644 --- a/compute/model-specs/stability.json +++ b/compute/model-specs/stability.json @@ -5,10 +5,23 @@ "id": "stable-diffusion-3.5-large", "displayName": "Stable Diffusion 3.5 Large", "family": "stable-diffusion-3", - "match": { "exact": ["stable-diffusion-3.5-large"], "patterns": ["stable-diffusion-3.5*"] }, + "match": { + "exact": [ + "stable-diffusion-3.5-large" + ], + "patterns": [ + "stable-diffusion-3.5*" + ] + }, "spec": { - "capabilities": ["image_generation", "high_quality", "controllable"], - "serviceType": ["image_gen"], + "capabilities": [ + "image_generation", + "high_quality", + "controllable" + ], + "serviceType": [ + "image_gen" + ], "description": "Stability AI 旗舰文生图模型,支持多种分辨率和风格" } } diff --git a/compute/model-specs/tencent.json b/compute/model-specs/tencent.json index 36f1fd9..bdd75f2 100644 --- a/compute/model-specs/tencent.json +++ b/compute/model-specs/tencent.json @@ -5,11 +5,26 @@ "id": "hy3-preview", "displayName": "混元 Hy3 Preview", "family": "hy3", - "match": { "exact": ["hy3-preview"], "patterns": ["hy3-preview*"] }, + "match": { + "exact": [ + "hy3-preview" + ], + "patterns": [ + "hy3-preview*" + ] + }, "spec": { "contextWindow": 262144, - "capabilities": ["chat", "reasoning", "code", "multilingual", "tool_use"], - "serviceType": ["chat"], + "capabilities": [ + "chat", + "reasoning", + "code", + "multilingual", + "tool_use" + ], + "serviceType": [ + "chat" + ], "defaultTemperature": 1, "supportsReasoning": true, "description": "腾讯混元 Hy3 预览版,高效 MoE 模型" @@ -19,12 +34,26 @@ "id": "hunyuan-2.0-thinking-20251109", "displayName": "混元 2.0 Think", "family": "hunyuan-2", - "match": { "exact": ["hunyuan-2.0-thinking-20251109"], "patterns": ["hunyuan-2.0-thinking*"] }, + "match": { + "exact": [ + "hunyuan-2.0-thinking-20251109" + ], + "patterns": [ + "hunyuan-2.0-thinking*" + ] + }, "spec": { "contextWindow": 196608, "maxOutputTokens": 65536, - "capabilities": ["chat", "reasoning", "deep_thinking", "long_context"], - "serviceType": ["reasoning"], + "capabilities": [ + "chat", + "reasoning", + "deep_thinking", + "long_context" + ], + "serviceType": [ + "reasoning" + ], "defaultTemperature": null, "supportsReasoning": true, "description": "腾讯混元最新推理模型,MoE架构406B总参数,深度思考" @@ -34,12 +63,26 @@ "id": "hunyuan-2.0-instruct-20251111", "displayName": "混元 2.0 Instruct", "family": "hunyuan-2", - "match": { "exact": ["hunyuan-2.0-instruct-20251111"], "patterns": ["hunyuan-2.0-instruct*"] }, + "match": { + "exact": [ + "hunyuan-2.0-instruct-20251111" + ], + "patterns": [ + "hunyuan-2.0-instruct*" + ] + }, "spec": { "contextWindow": 147456, "maxOutputTokens": 16384, - "capabilities": ["chat", "code", "long_context", "tool_use"], - "serviceType": ["chat"], + "capabilities": [ + "chat", + "code", + "long_context", + "tool_use" + ], + "serviceType": [ + "chat" + ], "defaultTemperature": 1, "description": "腾讯混元 2.0 指令模型,支持联网搜索和 Function Calling" } @@ -48,12 +91,28 @@ "id": "hunyuan-turbos-latest", "displayName": "混元 Turbo S", "family": "hunyuan-turbo", - "match": { "exact": ["hunyuan-turbos-latest"], "patterns": ["hunyuan-turbos*"] }, + "match": { + "exact": [ + "hunyuan-turbos-latest" + ], + "patterns": [ + "hunyuan-turbos*" + ] + }, "spec": { "contextWindow": 32768, "maxOutputTokens": 16384, - "capabilities": ["chat", "reasoning", "code", "vision", "fast", "tool_use"], - "serviceType": ["chat"], + "capabilities": [ + "chat", + "reasoning", + "code", + "vision", + "fast", + "tool_use" + ], + "serviceType": [ + "chat" + ], "defaultTemperature": 1, "description": "腾讯混元高速模型,支持推理和工具调用" } @@ -62,12 +121,28 @@ "id": "hunyuan-t1-latest", "displayName": "混元 T1", "family": "hunyuan-t1", - "match": { "exact": ["hunyuan-t1-latest"], "patterns": ["hunyuan-t1*"] }, + "match": { + "exact": [ + "hunyuan-t1-latest" + ], + "patterns": [ + "hunyuan-t1*" + ] + }, "spec": { "contextWindow": 262144, "maxOutputTokens": 32768, - "capabilities": ["chat", "reasoning", "deep_thinking", "code", "math", "long_context"], - "serviceType": ["reasoning"], + "capabilities": [ + "chat", + "reasoning", + "deep_thinking", + "code", + "math", + "long_context" + ], + "serviceType": [ + "reasoning" + ], "defaultTemperature": null, "supportsReasoning": true, "description": "腾讯混元 T1 深度推理模型,256K 上下文,专攻数学/代码/复杂推理" @@ -77,12 +152,26 @@ "id": "hunyuan-t1-vision", "displayName": "混元 T1 Vision", "family": "hunyuan-t1", - "match": { "exact": ["hunyuan-t1-vision"] }, + "match": { + "exact": [ + "hunyuan-t1-vision" + ] + }, "spec": { "contextWindow": 131072, "maxOutputTokens": 32768, - "capabilities": ["chat", "reasoning", "deep_thinking", "code", "math", "vision", "image_understanding"], - "serviceType": ["reasoning"], + "capabilities": [ + "chat", + "reasoning", + "deep_thinking", + "code", + "math", + "vision", + "image_understanding" + ], + "serviceType": [ + "reasoning" + ], "defaultTemperature": null, "supportsReasoning": true, "description": "腾讯混元 T1 视觉推理模型,支持图片理解 + 深度推理" @@ -92,12 +181,26 @@ "id": "hunyuan-turbos-vision", "displayName": "混元 Turbo S Vision", "family": "hunyuan-turbo", - "match": { "exact": ["hunyuan-turbos-vision"] }, + "match": { + "exact": [ + "hunyuan-turbos-vision" + ] + }, "spec": { "contextWindow": 32768, "maxOutputTokens": 16384, - "capabilities": ["chat", "reasoning", "code", "vision", "image_understanding", "fast", "tool_use"], - "serviceType": ["chat"], + "capabilities": [ + "chat", + "reasoning", + "code", + "vision", + "image_understanding", + "fast", + "tool_use" + ], + "serviceType": [ + "chat" + ], "defaultTemperature": 1, "description": "腾讯混元 Turbo S 视觉模型,支持图片理解,高速推理" } diff --git a/compute/model-specs/volcengine.json b/compute/model-specs/volcengine.json index 198e563..7721a13 100644 --- a/compute/model-specs/volcengine.json +++ b/compute/model-specs/volcengine.json @@ -5,12 +5,29 @@ "id": "doubao-seed-2.0-pro", "displayName": "豆包 2.0 Pro", "family": "doubao-seed-2", - "match": { "exact": ["doubao-seed-2.0-pro"], "patterns": ["doubao-seed-2.0-pro*"] }, + "match": { + "exact": [ + "doubao-seed-2.0-pro" + ], + "patterns": [ + "doubao-seed-2.0-pro*" + ] + }, "spec": { "contextWindow": 256000, "maxOutputTokens": 128000, - "capabilities": ["chat", "reasoning", "code", "multilingual", "long_context", "tool_use", "vision"], - "serviceType": ["chat"], + "capabilities": [ + "chat", + "reasoning", + "code", + "multilingual", + "long_context", + "tool_use", + "vision" + ], + "serviceType": [ + "chat" + ], "defaultTemperature": 1, "description": "火山引擎豆包 Seed 2.0 旗舰模型,256K 上下文,支持复杂推理、Agent 和多模态" } @@ -19,12 +36,31 @@ "id": "doubao-seed-2.0-lite", "displayName": "豆包 2.0 Lite", "family": "doubao-seed-2", - "match": { "exact": ["doubao-seed-2.0-lite"], "patterns": ["doubao-seed-2.0-lite*"] }, + "match": { + "exact": [ + "doubao-seed-2.0-lite" + ], + "patterns": [ + "doubao-seed-2.0-lite*" + ] + }, "spec": { "contextWindow": 256000, "maxOutputTokens": 32000, - "capabilities": ["chat", "reasoning", "code", "multilingual", "long_context", "tool_use", "vision", "audio_understanding", "video_understanding"], - "serviceType": ["chat"], + "capabilities": [ + "chat", + "reasoning", + "code", + "multilingual", + "long_context", + "tool_use", + "vision", + "audio_understanding", + "video_understanding" + ], + "serviceType": [ + "chat" + ], "defaultTemperature": 1, "description": "豆包 Seed 2.0 全模态均衡模型,支持视频/图像/音频/文本统一理解" } @@ -33,12 +69,32 @@ "id": "doubao-seed-2.0-mini", "displayName": "豆包 2.0 Mini", "family": "doubao-seed-2", - "match": { "exact": ["doubao-seed-2.0-mini"], "patterns": ["doubao-seed-2.0-mini*"] }, + "match": { + "exact": [ + "doubao-seed-2.0-mini" + ], + "patterns": [ + "doubao-seed-2.0-mini*" + ] + }, "spec": { "contextWindow": 256000, "maxOutputTokens": 32000, - "capabilities": ["chat", "reasoning", "code", "multilingual", "long_context", "tool_use", "vision", "audio_understanding", "video_understanding", "fast"], - "serviceType": ["chat"], + "capabilities": [ + "chat", + "reasoning", + "code", + "multilingual", + "long_context", + "tool_use", + "vision", + "audio_understanding", + "video_understanding", + "fast" + ], + "serviceType": [ + "chat" + ], "defaultTemperature": 1, "description": "豆包 Seed 2.0 全模态轻量模型,低延迟高并发,支持全模态理解" } @@ -47,12 +103,26 @@ "id": "doubao-seed-2.0-code", "displayName": "豆包 2.0 Code", "family": "doubao-seed-2", - "match": { "exact": ["doubao-seed-2.0-code"] }, + "match": { + "exact": [ + "doubao-seed-2.0-code" + ] + }, "spec": { "contextWindow": 256000, "maxOutputTokens": 128000, - "capabilities": ["chat", "reasoning", "code", "long_context", "tool_use", "vision", "deep_thinking"], - "serviceType": ["chat"], + "capabilities": [ + "chat", + "reasoning", + "code", + "long_context", + "tool_use", + "vision", + "deep_thinking" + ], + "serviceType": [ + "chat" + ], "defaultTemperature": 1, "description": "豆包 Seed 2.0 编程模型,面向 Agentic Coding 场景优化" } @@ -61,12 +131,29 @@ "id": "doubao-seed-1.8", "displayName": "豆包 Seed-1.8", "family": "doubao-seed-1", - "match": { "exact": ["doubao-seed-1.8"], "patterns": ["doubao-seed-1.8*"] }, + "match": { + "exact": [ + "doubao-seed-1.8" + ], + "patterns": [ + "doubao-seed-1.8*" + ] + }, "spec": { "contextWindow": 256000, "maxOutputTokens": 16000, - "capabilities": ["chat", "reasoning", "code", "multilingual", "long_context", "tool_use", "vision"], - "serviceType": ["chat"], + "capabilities": [ + "chat", + "reasoning", + "code", + "multilingual", + "long_context", + "tool_use", + "vision" + ], + "serviceType": [ + "chat" + ], "defaultTemperature": 1, "description": "火山引擎豆包 1.8 旗舰模型,256K 上下文,支持深度思考和多模态" } @@ -75,12 +162,29 @@ "id": "doubao-seed-1.6", "displayName": "豆包 Seed-1.6", "family": "doubao-seed-1", - "match": { "exact": ["doubao-seed-1.6"], "patterns": ["doubao-seed-1.6"] }, + "match": { + "exact": [ + "doubao-seed-1.6" + ], + "patterns": [ + "doubao-seed-1.6" + ] + }, "spec": { "contextWindow": 256000, "maxOutputTokens": 32000, - "capabilities": ["chat", "reasoning", "code", "multilingual", "long_context", "tool_use", "vision"], - "serviceType": ["chat"], + "capabilities": [ + "chat", + "reasoning", + "code", + "multilingual", + "long_context", + "tool_use", + "vision" + ], + "serviceType": [ + "chat" + ], "defaultTemperature": 1, "description": "火山引擎豆包 1.6 旗舰模型,256K 上下文" } @@ -89,12 +193,24 @@ "id": "doubao-seed-1.6-thinking", "displayName": "豆包 Seed-1.6 思考版", "family": "doubao-seed-1", - "match": { "exact": ["doubao-seed-1.6-thinking"] }, + "match": { + "exact": [ + "doubao-seed-1.6-thinking" + ] + }, "spec": { "contextWindow": 256000, "maxOutputTokens": 16000, - "capabilities": ["reasoning", "math", "code", "deep_thinking", "long_context"], - "serviceType": ["chat"], + "capabilities": [ + "reasoning", + "math", + "code", + "deep_thinking", + "long_context" + ], + "serviceType": [ + "chat" + ], "defaultTemperature": null, "supportsReasoning": true, "description": "火山引擎豆包 1.6 深度思考模型,256K 上下文" @@ -104,12 +220,24 @@ "id": "doubao-seed-1.6-flash", "displayName": "豆包 Seed-1.6 Flash", "family": "doubao-seed-1", - "match": { "exact": ["doubao-seed-1.6-flash"] }, + "match": { + "exact": [ + "doubao-seed-1.6-flash" + ] + }, "spec": { "contextWindow": 256000, "maxOutputTokens": 16000, - "capabilities": ["chat", "code", "fast", "long_context", "vision"], - "serviceType": ["chat"], + "capabilities": [ + "chat", + "code", + "fast", + "long_context", + "vision" + ], + "serviceType": [ + "chat" + ], "defaultTemperature": 1, "description": "火山引擎豆包 1.6 快速版,成本较前代下降 63%" } @@ -118,12 +246,22 @@ "id": "doubao-seed-1.6-lite", "displayName": "豆包 Seed-1.6 Lite", "family": "doubao-seed-1", - "match": { "exact": ["doubao-seed-1.6-lite"] }, + "match": { + "exact": [ + "doubao-seed-1.6-lite" + ] + }, "spec": { "contextWindow": 256000, "maxOutputTokens": 32000, - "capabilities": ["chat", "code", "fast"], - "serviceType": ["chat"], + "capabilities": [ + "chat", + "code", + "fast" + ], + "serviceType": [ + "chat" + ], "defaultTemperature": 1, "description": "火山引擎豆包 1.6 轻量版,极致性价比" } @@ -132,12 +270,24 @@ "id": "doubao-seed-1.6-vision", "displayName": "豆包 Seed-1.6 视觉版", "family": "doubao-seed-1", - "match": { "exact": ["doubao-seed-1.6-vision"] }, + "match": { + "exact": [ + "doubao-seed-1.6-vision" + ] + }, "spec": { "contextWindow": 256000, "maxOutputTokens": 32000, - "capabilities": ["chat", "vision", "video_understanding", "gui_agent", "long_context"], - "serviceType": ["vision"], + "capabilities": [ + "chat", + "vision", + "video_understanding", + "gui_agent", + "long_context" + ], + "serviceType": [ + "vision" + ], "defaultTemperature": 1, "description": "火山引擎豆包 1.6 视觉模型,256K 上下文,支持视频理解" } @@ -146,12 +296,23 @@ "id": "doubao-seed-code", "displayName": "豆包 Seed-Code", "family": "doubao-seed-code", - "match": { "exact": ["doubao-seed-code"] }, + "match": { + "exact": [ + "doubao-seed-code" + ] + }, "spec": { "contextWindow": 256000, "maxOutputTokens": 32768, - "capabilities": ["code", "reasoning", "long_context", "deep_thinking"], - "serviceType": ["chat"], + "capabilities": [ + "code", + "reasoning", + "long_context", + "deep_thinking" + ], + "serviceType": [ + "chat" + ], "defaultTemperature": 1, "description": "火山引擎豆包编程专用模型,256K 上下文" } @@ -160,12 +321,23 @@ "id": "deepseek-v3.2", "displayName": "DeepSeek V3.2 (火山引擎)", "family": "deepseek-v3", - "match": { "exact": ["deepseek-v3.2"] }, + "match": { + "exact": [ + "deepseek-v3.2" + ] + }, "spec": { "contextWindow": 128000, "maxOutputTokens": 32000, - "capabilities": ["chat", "reasoning", "code", "multilingual"], - "serviceType": ["chat"], + "capabilities": [ + "chat", + "reasoning", + "code", + "multilingual" + ], + "serviceType": [ + "chat" + ], "defaultTemperature": 1, "description": "火山引擎托管的 DeepSeek V3.2,128K 上下文" } @@ -174,12 +346,24 @@ "id": "deepseek-r1", "displayName": "DeepSeek R1 (火山引擎)", "family": "deepseek-r1", - "match": { "exact": ["deepseek-r1"] }, + "match": { + "exact": [ + "deepseek-r1" + ] + }, "spec": { "contextWindow": 128000, "maxOutputTokens": 65536, - "capabilities": ["reasoning", "math", "code", "science", "deep_thinking"], - "serviceType": ["reasoning"], + "capabilities": [ + "reasoning", + "math", + "code", + "science", + "deep_thinking" + ], + "serviceType": [ + "reasoning" + ], "defaultTemperature": null, "supportsReasoning": true, "description": "火山引擎托管的 DeepSeek R1 推理模型,128K 上下文" @@ -189,11 +373,22 @@ "id": "doubao-embedding", "displayName": "豆包 Embedding", "family": "doubao-embedding", - "match": { "exact": ["doubao-embedding"] }, + "match": { + "exact": [ + "doubao-embedding" + ] + }, "spec": { "contextWindow": 4096, - "capabilities": ["text_embedding", "semantic_search", "rag", "chinese_optimized"], - "serviceType": ["embedding"], + "capabilities": [ + "text_embedding", + "semantic_search", + "rag", + "chinese_optimized" + ], + "serviceType": [ + "embedding" + ], "description": "火山引擎豆包标准向量模型,默认 2048 维度,可选 512/1024/2048" } }, @@ -201,11 +396,22 @@ "id": "doubao-embedding-large", "displayName": "豆包 Embedding Large", "family": "doubao-embedding", - "match": { "exact": ["doubao-embedding-large"] }, + "match": { + "exact": [ + "doubao-embedding-large" + ] + }, "spec": { "contextWindow": 4096, - "capabilities": ["text_embedding", "semantic_search", "rag", "chinese_optimized"], - "serviceType": ["embedding"], + "capabilities": [ + "text_embedding", + "semantic_search", + "rag", + "chinese_optimized" + ], + "serviceType": [ + "embedding" + ], "description": "火山引擎豆包大号向量模型,默认 2048 维度,可选 512/1024/2048/4096" } }, @@ -213,10 +419,20 @@ "id": "volc-mega-tts-clone", "displayName": "火山声音复刻", "family": "volc-tts", - "match": { "exact": ["volc-mega-tts-clone"] }, + "match": { + "exact": [ + "volc-mega-tts-clone" + ] + }, "spec": { - "capabilities": ["voice_clone", "chinese_optimized", "few_shot"], - "serviceType": ["voice_clone"], + "capabilities": [ + "voice_clone", + "chinese_optimized", + "few_shot" + ], + "serviceType": [ + "voice_clone" + ], "description": "火山引擎声音复刻,支持极少样本克隆" } }, @@ -224,10 +440,21 @@ "id": "volc-realtime-voice", "displayName": "火山实时语音", "family": "volc-voice", - "match": { "exact": ["volc-realtime-voice"] }, + "match": { + "exact": [ + "volc-realtime-voice" + ] + }, "spec": { - "capabilities": ["realtime", "speech_to_speech", "low_latency", "chinese_optimized"], - "serviceType": ["realtime_voice"], + "capabilities": [ + "realtime", + "speech_to_speech", + "low_latency", + "chinese_optimized" + ], + "serviceType": [ + "realtime_voice" + ], "description": "火山引擎实时语音交互" } }, @@ -235,10 +462,20 @@ "id": "volc-simultaneous", "displayName": "火山同声传译", "family": "volc-interpret", - "match": { "exact": ["volc-simultaneous"] }, + "match": { + "exact": [ + "volc-simultaneous" + ] + }, "spec": { - "capabilities": ["simultaneous_interpretation", "chinese_optimized", "low_latency"], - "serviceType": ["simultaneous_interpret"], + "capabilities": [ + "simultaneous_interpretation", + "chinese_optimized", + "low_latency" + ], + "serviceType": [ + "simultaneous_interpret" + ], "description": "火山引擎同声传译,支持中英双向" } }, @@ -246,10 +483,20 @@ "id": "volc-translation", "displayName": "火山翻译", "family": "volc-translation", - "match": { "exact": ["volc-translation"] }, + "match": { + "exact": [ + "volc-translation" + ] + }, "spec": { - "capabilities": ["translation", "multilingual", "chinese_optimized"], - "serviceType": ["translation"], + "capabilities": [ + "translation", + "multilingual", + "chinese_optimized" + ], + "serviceType": [ + "translation" + ], "description": "火山引擎机器翻译,支持多语种互译" } }, @@ -257,43 +504,152 @@ "id": "doubao-seedance-2.0", "displayName": "Seedance 2.0", "family": "doubao-seedance-2", - "match": { "exact": ["doubao-seedance-2-0-260128", "doubao-seedance-2.0"], "patterns": ["doubao-seedance-2-0*"] }, + "match": { + "exact": [ + "doubao-seedance-2-0-260128", + "doubao-seedance-2.0" + ], + "patterns": [ + "doubao-seedance-2-0*" + ] + }, "spec": { - "capabilities": ["video_generation", "image_to_video", "text_to_video", "video_editing", "video_extension", "audio_generation", "first_last_frame"], - "serviceType": ["video_gen"], + "capabilities": [ + "video_generation", + "image_to_video", + "text_to_video", + "video_editing", + "video_extension", + "audio_generation", + "first_last_frame" + ], + "serviceType": [ + "video_gen" + ], "description": "Seedance 2.0 豆包最强视频生成模型,4-15秒 2K 视频,原生同步音频,支持最多9张图片+3个视频+3个音频参考输入,~$0.14/秒" + }, + "routing": { + "tier": "flagship", + "routingPriority": 120, + "eligibleForAgent": false, + "defaultReference": false, + "reasoning": { + "supportedModes": [ + "auto" + ], + "defaultMode": "auto" + } } }, { "id": "doubao-seedance-2.0-fast", "displayName": "Seedance 2.0 Fast", "family": "doubao-seedance-2", - "match": { "exact": ["doubao-seedance-2-0-fast-260128", "doubao-seedance-2.0-fast"], "patterns": ["doubao-seedance-2-0-fast*"] }, + "match": { + "exact": [ + "doubao-seedance-2-0-fast-260128", + "doubao-seedance-2.0-fast" + ], + "patterns": [ + "doubao-seedance-2-0-fast*" + ] + }, "spec": { - "capabilities": ["video_generation", "image_to_video", "text_to_video", "video_editing", "video_extension", "audio_generation", "first_last_frame", "fast"], - "serviceType": ["video_gen"], + "capabilities": [ + "video_generation", + "image_to_video", + "text_to_video", + "video_editing", + "video_extension", + "audio_generation", + "first_last_frame", + "fast" + ], + "serviceType": [ + "video_gen" + ], "description": "Seedance 2.0 快速版,音画同生,多模态生视频+编辑+延长" + }, + "routing": { + "tier": "balanced", + "routingPriority": 119, + "eligibleForAgent": false, + "defaultReference": false, + "reasoning": { + "supportedModes": [ + "auto" + ], + "defaultMode": "auto" + } } }, { "id": "doubao-seedance-2.0-mini", "displayName": "Seedance 2.0 Mini", "family": "doubao-seedance-2", - "match": { "exact": ["doubao-seedance-2-0-mini-260615", "doubao-seedance-2.0-mini"], "patterns": ["doubao-seedance-2-0-mini*"] }, + "match": { + "exact": [ + "doubao-seedance-2-0-mini-260615", + "doubao-seedance-2.0-mini" + ], + "patterns": [ + "doubao-seedance-2-0-mini*" + ] + }, "spec": { - "capabilities": ["video_generation", "image_to_video", "text_to_video", "video_editing", "video_extension", "audio_generation", "first_last_frame", "fast", "cost_effective"], - "serviceType": ["video_gen"], + "capabilities": [ + "video_generation", + "image_to_video", + "text_to_video", + "video_editing", + "video_extension", + "audio_generation", + "first_last_frame", + "fast", + "cost_effective" + ], + "serviceType": [ + "video_gen" + ], "description": "Seedance 2.0 轻量版,音画同生,高性价比" + }, + "routing": { + "tier": "lightweight", + "routingPriority": 118, + "eligibleForAgent": false, + "defaultReference": false, + "reasoning": { + "supportedModes": [ + "auto" + ], + "defaultMode": "auto" + } } }, { "id": "doubao-seedance-1.5-pro", "displayName": "Seedance 1.5 Pro", "family": "doubao-seedance-1", - "match": { "exact": ["doubao-seedance-1-5-pro-251215", "doubao-seedance-1.5-pro"], "patterns": ["doubao-seedance-1-5*"] }, + "match": { + "exact": [ + "doubao-seedance-1-5-pro-251215", + "doubao-seedance-1.5-pro" + ], + "patterns": [ + "doubao-seedance-1-5*" + ] + }, "spec": { - "capabilities": ["video_generation", "image_to_video", "text_to_video", "first_last_frame", "audio_generation"], - "serviceType": ["video_gen"], + "capabilities": [ + "video_generation", + "image_to_video", + "text_to_video", + "first_last_frame", + "audio_generation" + ], + "serviceType": [ + "video_gen" + ], "description": "Seedance 1.5 Pro 音画同生,12秒视频,多参考图输入(即将下线)" } }, @@ -301,10 +657,25 @@ "id": "doubao-seedance-1.0-pro", "displayName": "Seedance 1.0 Pro", "family": "doubao-seedance-1", - "match": { "exact": ["doubao-seedance-1-0-pro-250528", "doubao-seedance-1.0-pro"], "patterns": ["doubao-seedance-1-0-pro*"] }, + "match": { + "exact": [ + "doubao-seedance-1-0-pro-250528", + "doubao-seedance-1.0-pro" + ], + "patterns": [ + "doubao-seedance-1-0-pro*" + ] + }, "spec": { - "capabilities": ["video_generation", "image_to_video", "text_to_video", "first_last_frame"], - "serviceType": ["video_gen"], + "capabilities": [ + "video_generation", + "image_to_video", + "text_to_video", + "first_last_frame" + ], + "serviceType": [ + "video_gen" + ], "description": "Seedance 1.0 Pro 文生视频/图生视频,支持首尾帧控制" } }, @@ -312,12 +683,66 @@ "id": "doubao-seedance-1.0-pro-fast", "displayName": "Seedance 1.0 Pro Fast", "family": "doubao-seedance-1", - "match": { "exact": ["doubao-seedance-1-0-pro-fast-251015", "doubao-seedance-1.0-pro-fast"], "patterns": ["doubao-seedance-1-0-pro-fast*"] }, + "match": { + "exact": [ + "doubao-seedance-1-0-pro-fast-251015", + "doubao-seedance-1.0-pro-fast" + ], + "patterns": [ + "doubao-seedance-1-0-pro-fast*" + ] + }, "spec": { - "capabilities": ["video_generation", "image_to_video", "text_to_video", "fast"], - "serviceType": ["video_gen"], + "capabilities": [ + "video_generation", + "image_to_video", + "text_to_video", + "fast" + ], + "serviceType": [ + "video_gen" + ], "description": "Seedance 1.0 Pro 快速版,图生视频-首帧,5秒 720P 仅需 10 秒" } + }, + { + "id": "doubao-seed-2.1-turbo", + "displayName": "Doubao Seed 2.1 Turbo", + "spec": { + "contextWindow": 256000, + "maxOutputTokens": 128000, + "capabilities": [ + "chat", + "reasoning", + "code", + "multilingual", + "long_context", + "tool_use", + "vision" + ], + "serviceType": [ + "chat" + ], + "supportsReasoning": true + }, + "routing": { + "tier": "balanced", + "routingPriority": 40, + "eligibleForAgent": true, + "defaultReference": false, + "reasoning": { + "supportedModes": [ + "auto", + "off", + "minimal", + "low", + "medium", + "high", + "xhigh" + ], + "defaultMode": "medium" + } + } } ] } diff --git a/compute/model-specs/xai.json b/compute/model-specs/xai.json index 617e077..c8255e7 100644 --- a/compute/model-specs/xai.json +++ b/compute/model-specs/xai.json @@ -5,11 +5,26 @@ "id": "grok-4-3", "displayName": "Grok 4.3", "family": "grok-4", - "match": { "exact": ["grok-4.3"], "patterns": ["grok-4.3*"] }, + "match": { + "exact": [ + "grok-4.3" + ], + "patterns": [ + "grok-4.3*" + ] + }, "spec": { "contextWindow": 1000000, - "capabilities": ["reasoning", "code", "vision", "tool_use", "long_context"], - "serviceType": ["chat"], + "capabilities": [ + "reasoning", + "code", + "vision", + "tool_use", + "long_context" + ], + "serviceType": [ + "chat" + ], "supportsReasoning": true, "description": "xAI Grok 4.3 推理模型,100 万上下文" } @@ -21,8 +36,19 @@ "spec": { "contextWindow": 2000000, "maxOutputTokens": 16384, - "capabilities": ["chat", "reasoning", "code", "vision", "tool_use", "fast", "long_context"], - "serviceType": ["chat", "reasoning"], + "capabilities": [ + "chat", + "reasoning", + "code", + "vision", + "tool_use", + "fast", + "long_context" + ], + "serviceType": [ + "chat", + "reasoning" + ], "defaultTemperature": 1, "supportsReasoning": true } @@ -34,8 +60,17 @@ "spec": { "contextWindow": 2000000, "maxOutputTokens": 16384, - "capabilities": ["chat", "reasoning", "code", "vision", "tool_use"], - "serviceType": ["chat", "reasoning"], + "capabilities": [ + "chat", + "reasoning", + "code", + "vision", + "tool_use" + ], + "serviceType": [ + "chat", + "reasoning" + ], "defaultTemperature": 1, "supportsReasoning": true } diff --git a/compute/model-specs/xiaomi.json b/compute/model-specs/xiaomi.json index 877f4e9..6ca248d 100644 --- a/compute/model-specs/xiaomi.json +++ b/compute/model-specs/xiaomi.json @@ -27,6 +27,24 @@ "defaultTemperature": 1, "supportsReasoning": true, "description": "小米 MiMo 旗舰推理模型,支持文本/工具调用" + }, + "routing": { + "tier": "flagship", + "routingPriority": 50, + "eligibleForAgent": true, + "defaultReference": false, + "reasoning": { + "supportedModes": [ + "auto", + "off", + "minimal", + "low", + "medium", + "high", + "xhigh" + ], + "defaultMode": "high" + } } }, { @@ -59,6 +77,24 @@ "defaultTemperature": 1, "supportsReasoning": true, "description": "小米 MiMo 全模态模型,支持图像/音频/视频理解" + }, + "routing": { + "tier": "lightweight", + "routingPriority": 40, + "eligibleForAgent": true, + "defaultReference": false, + "reasoning": { + "supportedModes": [ + "auto", + "off", + "minimal", + "low", + "medium", + "high", + "xhigh" + ], + "defaultMode": "low" + } } }, { @@ -165,6 +201,18 @@ "tts" ], "description": "小米 MiMo 语音合成,支持多语言与风格控制" + }, + "routing": { + "tier": "lightweight", + "routingPriority": 114, + "eligibleForAgent": false, + "defaultReference": false, + "reasoning": { + "supportedModes": [ + "auto" + ], + "defaultMode": "auto" + } } }, { @@ -185,6 +233,18 @@ "asr" ], "description": "小米 MiMo 语音识别模型" + }, + "routing": { + "tier": "lightweight", + "routingPriority": 123, + "eligibleForAgent": false, + "defaultReference": false, + "reasoning": { + "supportedModes": [ + "auto" + ], + "defaultMode": "auto" + } } }, { diff --git a/compute/model-specs/xunfei.json b/compute/model-specs/xunfei.json index fcddd52..0bfa50b 100644 --- a/compute/model-specs/xunfei.json +++ b/compute/model-specs/xunfei.json @@ -5,12 +5,27 @@ "id": "spark-x", "displayName": "讯飞星火 X1", "family": "spark-x", - "match": { "exact": ["spark-x"], "patterns": ["spark-x*"] }, + "match": { + "exact": [ + "spark-x" + ], + "patterns": [ + "spark-x*" + ] + }, "spec": { "contextWindow": 65536, "maxOutputTokens": 128000, - "capabilities": ["chat", "reasoning", "deep_thinking", "math", "code"], - "serviceType": ["reasoning"], + "capabilities": [ + "chat", + "reasoning", + "deep_thinking", + "math", + "code" + ], + "serviceType": [ + "reasoning" + ], "defaultTemperature": 1.2, "supportsReasoning": true, "description": "讯飞深度推理模型,64K 输入/128K 输出,支持思考模式与函数调用" @@ -20,12 +35,26 @@ "id": "4.0Ultra", "displayName": "讯飞星火 4.0 Ultra", "family": "spark-4", - "match": { "exact": ["4.0Ultra"], "patterns": ["4.0Ultra*"] }, + "match": { + "exact": [ + "4.0Ultra" + ], + "patterns": [ + "4.0Ultra*" + ] + }, "spec": { "contextWindow": 32768, "maxOutputTokens": 32768, - "capabilities": ["chat", "reasoning", "code", "tool_use"], - "serviceType": ["chat"], + "capabilities": [ + "chat", + "reasoning", + "code", + "tool_use" + ], + "serviceType": [ + "chat" + ], "defaultTemperature": 1, "description": "讯飞星火最强通用模型,支持推理、代码和工具调用" } diff --git a/compute/model-specs/zhipu.json b/compute/model-specs/zhipu.json index 923f2c2..3bda3ce 100644 --- a/compute/model-specs/zhipu.json +++ b/compute/model-specs/zhipu.json @@ -5,14 +5,48 @@ "id": "glm-5.2", "displayName": "GLM-5.2", "family": "glm-5.2", - "match": { "exact": ["glm-5.2"], "patterns": ["glm-5.2*"] }, + "match": { + "exact": [ + "glm-5.2" + ], + "patterns": [ + "glm-5.2*" + ] + }, "spec": { "contextWindow": 1048576, "maxOutputTokens": 32768, - "capabilities": ["reasoning", "deep_thinking", "code", "multilingual", "tool_use", "long_context"], - "serviceType": ["chat"], + "capabilities": [ + "reasoning", + "deep_thinking", + "code", + "multilingual", + "tool_use", + "long_context" + ], + "serviceType": [ + "chat" + ], "supportsReasoning": true, "description": "智谱 GLM-5.2 大推理模型,100 万上下文" + }, + "routing": { + "tier": "flagship", + "routingPriority": 45, + "eligibleForAgent": true, + "defaultReference": false, + "reasoning": { + "supportedModes": [ + "auto", + "off", + "minimal", + "low", + "medium", + "high", + "xhigh" + ], + "defaultMode": "high" + } } }, { @@ -22,10 +56,40 @@ "spec": { "contextWindow": 200000, "maxOutputTokens": 128000, - "capabilities": ["chat", "reasoning", "code", "multilingual", "deep_thinking", "long_context", "math", "tool_use", "agent"], - "serviceType": ["chat"], + "capabilities": [ + "chat", + "reasoning", + "code", + "multilingual", + "deep_thinking", + "long_context", + "math", + "tool_use", + "agent" + ], + "serviceType": [ + "chat" + ], "defaultTemperature": 1, "supportsReasoning": true + }, + "routing": { + "tier": "balanced", + "routingPriority": 65, + "eligibleForAgent": true, + "defaultReference": false, + "reasoning": { + "supportedModes": [ + "auto", + "off", + "minimal", + "low", + "medium", + "high", + "xhigh" + ], + "defaultMode": "medium" + } } }, { @@ -35,8 +99,20 @@ "spec": { "contextWindow": 200000, "maxOutputTokens": 128000, - "capabilities": ["chat", "reasoning", "code", "multilingual", "deep_thinking", "long_context", "math", "tool_use", "agent"], - "serviceType": ["chat"], + "capabilities": [ + "chat", + "reasoning", + "code", + "multilingual", + "deep_thinking", + "long_context", + "math", + "tool_use", + "agent" + ], + "serviceType": [ + "chat" + ], "defaultTemperature": 1, "supportsReasoning": true } @@ -48,8 +124,18 @@ "spec": { "contextWindow": 200000, "maxOutputTokens": 128000, - "capabilities": ["chat", "reasoning", "code", "deep_thinking", "long_context", "tool_use", "agent"], - "serviceType": ["chat"], + "capabilities": [ + "chat", + "reasoning", + "code", + "deep_thinking", + "long_context", + "tool_use", + "agent" + ], + "serviceType": [ + "chat" + ], "defaultTemperature": 1, "supportsReasoning": true } @@ -61,8 +147,18 @@ "spec": { "contextWindow": 200000, "maxOutputTokens": 128000, - "capabilities": ["chat", "reasoning", "code", "multilingual", "deep_thinking", "long_context", "tool_use"], - "serviceType": ["chat"], + "capabilities": [ + "chat", + "reasoning", + "code", + "multilingual", + "deep_thinking", + "long_context", + "tool_use" + ], + "serviceType": [ + "chat" + ], "defaultTemperature": 1, "supportsReasoning": true } @@ -74,8 +170,16 @@ "spec": { "contextWindow": 200000, "maxOutputTokens": 128000, - "capabilities": ["chat", "reasoning", "code", "multilingual", "deep_thinking"], - "serviceType": ["chat"], + "capabilities": [ + "chat", + "reasoning", + "code", + "multilingual", + "deep_thinking" + ], + "serviceType": [ + "chat" + ], "defaultTemperature": 1, "supportsReasoning": true } @@ -84,12 +188,24 @@ "id": "glm-4.7-thinking", "displayName": "GLM-4.7 Thinking", "family": "glm-4.7", - "match": { "exact": ["glm-4.7-thinking"] }, + "match": { + "exact": [ + "glm-4.7-thinking" + ] + }, "spec": { "contextWindow": 200000, "maxOutputTokens": 128000, - "capabilities": ["reasoning", "math", "code", "deep_thinking", "long_context"], - "serviceType": ["reasoning"], + "capabilities": [ + "reasoning", + "math", + "code", + "deep_thinking", + "long_context" + ], + "serviceType": [ + "reasoning" + ], "defaultTemperature": null, "supportsReasoning": true, "description": "智谱GLM-4.7深度思考模式,交错式/保留式/轮级思考" @@ -99,12 +215,30 @@ "id": "glm-5v-turbo", "displayName": "GLM-5V-Turbo", "family": "glm-5v", - "match": { "exact": ["glm-5v-turbo"] }, + "match": { + "exact": [ + "glm-5v-turbo" + ] + }, "spec": { "contextWindow": 200000, "maxOutputTokens": 128000, - "capabilities": ["chat", "vision", "video_understanding", "image_understanding", "file_understanding", "reasoning", "code", "deep_thinking", "long_context", "tool_use", "agent"], - "serviceType": ["vision"], + "capabilities": [ + "chat", + "vision", + "video_understanding", + "image_understanding", + "file_understanding", + "reasoning", + "code", + "deep_thinking", + "long_context", + "tool_use", + "agent" + ], + "serviceType": [ + "vision" + ], "defaultTemperature": 1, "supportsReasoning": true, "description": "智谱首个多模态 Coding 基座模型,支持视频、图像、文本和文件输入" @@ -114,12 +248,25 @@ "id": "glm-4.6v", "displayName": "GLM-4.6V", "family": "glm-4.6", - "match": { "exact": ["glm-4.6v"] }, + "match": { + "exact": [ + "glm-4.6v" + ] + }, "spec": { "contextWindow": 128000, "maxOutputTokens": 32768, - "capabilities": ["chat", "vision", "video_understanding", "image_understanding", "long_context", "tool_use"], - "serviceType": ["vision"], + "capabilities": [ + "chat", + "vision", + "video_understanding", + "image_understanding", + "long_context", + "tool_use" + ], + "serviceType": [ + "vision" + ], "defaultTemperature": 1, "description": "智谱GLM-4.6V多模态版,106B/12B MoE,支持图像视频理解" } @@ -128,11 +275,22 @@ "id": "embedding-3", "displayName": "智谱 embedding-3", "family": "zhipu-embedding", - "match": { "exact": ["embedding-3"] }, + "match": { + "exact": [ + "embedding-3" + ] + }, "spec": { "contextWindow": 8192, - "capabilities": ["text_embedding", "semantic_search", "rag", "custom_dimensions"], - "serviceType": ["embedding"], + "capabilities": [ + "text_embedding", + "semantic_search", + "rag", + "custom_dimensions" + ], + "serviceType": [ + "embedding" + ], "description": "智谱嵌入模型v3,支持自定义维度;单条输入最多 3072 tokens" } } diff --git a/compute/smart-routing/model-catalog.json b/compute/smart-routing/model-catalog.json deleted file mode 100644 index c8e230b..0000000 --- a/compute/smart-routing/model-catalog.json +++ /dev/null @@ -1,1099 +0,0 @@ -{ - "$schema": "https://desirecore.net/schemas/smart-model-catalog.json", - "version": 1, - "updatedAt": "2026-08-09T13:45:49.000Z", - "source": "config-center", - "tiers": [ - { - "id": "flagship", - "label": "旗舰", - "labelEn": "Flagship", - "description": "最高能力,优先用于复杂推理、关键交付和长程智能体任务。", - "defaultReasoning": "high" - }, - { - "id": "balanced", - "label": "均衡", - "labelEn": "Balanced", - "description": "质量、速度与成本平衡,适合大多数日常任务。", - "defaultReasoning": "medium" - }, - { - "id": "lightweight", - "label": "轻量", - "labelEn": "Lightweight", - "description": "优先低延迟与低成本,适合明确、短链路和批量任务。", - "defaultReasoning": "low" - } - ], - "providers": [ - { - "providerId": "provider-openai-codex-plan-001", - "provider": "openai-codex", - "displayName": "ChatGPT 订阅 (Codex)", - "models": [ - { - "model": "gpt-5.6-sol", - "displayName": "GPT-5.6 Sol", - "tier": "flagship", - "routingPriority": 10, - "serviceTypes": [ - "chat" - ], - "capabilities": [ - "chat", - "reasoning", - "code", - "vision", - "long_context", - "tool_use", - "agent" - ], - "contextWindow": 1050000, - "maxOutputTokens": 128000, - "supportedReasoning": [ - "auto", - "off", - "low", - "medium", - "high", - "xhigh", - "max" - ], - "defaultReasoning": "low", - "eligibleForAgent": true, - "defaultReference": false - }, - { - "model": "gpt-5.6-terra", - "displayName": "GPT-5.6 Terra", - "tier": "balanced", - "routingPriority": 10, - "serviceTypes": [ - "chat" - ], - "capabilities": [ - "chat", - "reasoning", - "code", - "vision", - "long_context", - "tool_use", - "agent" - ], - "contextWindow": 1050000, - "maxOutputTokens": 128000, - "supportedReasoning": [ - "auto", - "off", - "low", - "medium", - "high", - "xhigh", - "max" - ], - "defaultReasoning": "medium", - "eligibleForAgent": true, - "defaultReference": false - }, - { - "model": "gpt-5.6-luna", - "displayName": "GPT-5.6 Luna", - "tier": "lightweight", - "routingPriority": 10, - "serviceTypes": [ - "chat" - ], - "capabilities": [ - "chat", - "reasoning", - "code", - "vision", - "long_context", - "tool_use", - "fast" - ], - "contextWindow": 1050000, - "maxOutputTokens": 128000, - "supportedReasoning": [ - "auto", - "off", - "low", - "medium", - "high", - "xhigh", - "max" - ], - "defaultReasoning": "medium", - "eligibleForAgent": true, - "defaultReference": false - }, - { - "model": "gpt-5.5", - "displayName": "GPT-5.5", - "tier": "flagship", - "routingPriority": 60, - "serviceTypes": [ - "chat" - ], - "capabilities": [ - "chat", - "reasoning", - "code", - "vision", - "long_context", - "tool_use", - "agent" - ], - "contextWindow": 1050000, - "maxOutputTokens": 128000, - "supportedReasoning": [ - "auto", - "off", - "low", - "medium", - "high", - "xhigh" - ], - "defaultReasoning": "medium", - "eligibleForAgent": true, - "defaultReference": false - }, - { - "model": "gpt-5.4", - "displayName": "GPT-5.4", - "tier": "balanced", - "routingPriority": 60, - "serviceTypes": [ - "chat" - ], - "capabilities": [ - "chat", - "reasoning", - "code", - "vision", - "long_context", - "tool_use", - "agent" - ], - "contextWindow": 1050000, - "maxOutputTokens": 128000, - "supportedReasoning": [ - "auto", - "off", - "low", - "medium", - "high", - "xhigh" - ], - "defaultReasoning": "medium", - "eligibleForAgent": true, - "defaultReference": false - }, - { - "model": "gpt-5.4-mini", - "displayName": "GPT-5.4 Mini", - "tier": "lightweight", - "routingPriority": 25, - "serviceTypes": [ - "chat" - ], - "capabilities": [ - "chat", - "reasoning", - "code", - "vision", - "long_context", - "tool_use", - "fast" - ], - "contextWindow": 400000, - "maxOutputTokens": 128000, - "supportedReasoning": [ - "auto", - "off", - "low", - "medium", - "high", - "xhigh" - ], - "defaultReasoning": "low", - "eligibleForAgent": true, - "defaultReference": false - }, - { - "model": "gpt-5.3-codex-spark", - "displayName": "GPT-5.3 Codex Spark(Pro 专属)", - "tier": "lightweight", - "routingPriority": 30, - "serviceTypes": [ - "chat" - ], - "capabilities": [ - "chat", - "code", - "tool_use", - "fast" - ], - "contextWindow": 128000, - "maxOutputTokens": null, - "supportedReasoning": [ - "auto" - ], - "defaultReasoning": "auto", - "eligibleForAgent": true, - "defaultReference": false - } - ] - }, - { - "providerId": "provider-anthropic-claude-plan-001", - "provider": "anthropic-claude", - "displayName": "Claude 订阅 (Claude Code)", - "models": [ - { - "model": "claude-fable-5", - "displayName": "Claude Fable 5", - "tier": "flagship", - "routingPriority": 20, - "serviceTypes": [ - "chat" - ], - "capabilities": [ - "chat", - "reasoning", - "code", - "vision", - "tool_use", - "agent", - "long_context" - ], - "contextWindow": 1000000, - "maxOutputTokens": 128000, - "supportedReasoning": [ - "auto", - "low", - "medium", - "high", - "xhigh", - "max" - ], - "defaultReasoning": "xhigh", - "eligibleForAgent": true, - "defaultReference": false - }, - { - "model": "claude-opus-5", - "displayName": "Claude Opus 5", - "tier": "flagship", - "routingPriority": 25, - "serviceTypes": [ - "chat" - ], - "capabilities": [ - "chat", - "reasoning", - "code", - "vision", - "tool_use", - "agent", - "long_context" - ], - "contextWindow": 1000000, - "maxOutputTokens": 128000, - "supportedReasoning": [ - "auto", - "low", - "medium", - "high", - "xhigh", - "max" - ], - "defaultReasoning": "xhigh", - "eligibleForAgent": true, - "defaultReference": false - }, - { - "model": "claude-sonnet-5", - "displayName": "Claude Sonnet 5", - "tier": "balanced", - "routingPriority": 20, - "serviceTypes": [ - "chat" - ], - "capabilities": [ - "chat", - "reasoning", - "code", - "vision", - "tool_use", - "agent", - "long_context" - ], - "contextWindow": 1000000, - "maxOutputTokens": 128000, - "supportedReasoning": [ - "auto", - "low", - "medium", - "high", - "xhigh", - "max" - ], - "defaultReasoning": "xhigh", - "eligibleForAgent": true, - "defaultReference": false - }, - { - "model": "claude-haiku-4-5", - "displayName": "Claude Haiku 4.5", - "tier": "lightweight", - "routingPriority": 20, - "serviceTypes": [ - "chat" - ], - "capabilities": [ - "chat", - "code", - "vision", - "tool_use" - ], - "contextWindow": 200000, - "maxOutputTokens": 64000, - "supportedReasoning": [ - "auto" - ], - "defaultReasoning": "auto", - "eligibleForAgent": true, - "defaultReference": false - } - ] - }, - { - "providerId": "desirecore-cloud", - "provider": "desirecore-cloud", - "displayName": "官方算力", - "models": [ - { - "model": "wan2.7-image-pro", - "displayName": "通义万相 2.7 Pro", - "tier": "flagship", - "routingPriority": 100, - "serviceTypes": [ - "image_gen" - ], - "capabilities": [ - "chat", - "image_generation", - "chinese_optimized", - "high_quality" - ], - "contextWindow": null, - "maxOutputTokens": null, - "supportedReasoning": [ - "auto" - ], - "defaultReasoning": "auto", - "eligibleForAgent": false, - "defaultReference": false - }, - { - "model": "MiniMax-Hailuo-2.3-fast", - "displayName": "海螺视频 2.3 快速版", - "tier": "lightweight", - "routingPriority": 101, - "serviceTypes": [ - "video_gen" - ], - "capabilities": [ - "chat", - "video_generation", - "image_to_video", - "camera_control", - "fast", - "chinese_optimized" - ], - "contextWindow": null, - "maxOutputTokens": null, - "supportedReasoning": [ - "auto" - ], - "defaultReasoning": "auto", - "eligibleForAgent": false, - "defaultReference": false - }, - { - "model": "MiniMax-Hailuo-2.3", - "displayName": "海螺视频 2.3", - "tier": "balanced", - "routingPriority": 102, - "serviceTypes": [ - "video_gen" - ], - "capabilities": [ - "chat", - "video_generation", - "text_to_video", - "image_to_video", - "camera_control", - "chinese_optimized", - "high_quality" - ], - "contextWindow": null, - "maxOutputTokens": null, - "supportedReasoning": [ - "auto" - ], - "defaultReasoning": "auto", - "eligibleForAgent": false, - "defaultReference": false - }, - { - "model": "mimo-v2.5-pro", - "displayName": "MiMo V2.5 Pro", - "tier": "flagship", - "routingPriority": 50, - "serviceTypes": [ - "chat", - "reasoning" - ], - "capabilities": [ - "chat", - "reasoning", - "tool_use", - "code" - ], - "contextWindow": 1000000, - "maxOutputTokens": 131072, - "supportedReasoning": [ - "auto", - "off", - "minimal", - "low", - "medium", - "high", - "xhigh" - ], - "defaultReasoning": "high", - "eligibleForAgent": true, - "defaultReference": false - }, - { - "model": "qwen3.7-plus", - "displayName": "Qwen3.7 Plus", - "tier": "balanced", - "routingPriority": 35, - "serviceTypes": [ - "chat" - ], - "capabilities": [ - "chat", - "reasoning", - "code", - "vision", - "multilingual", - "tool_use", - "long_context" - ], - "contextWindow": 1000000, - "maxOutputTokens": 65536, - "supportedReasoning": [ - "auto", - "off", - "minimal", - "low", - "medium", - "high", - "xhigh" - ], - "defaultReasoning": "medium", - "eligibleForAgent": true, - "defaultReference": false - }, - { - "model": "mimo-v2.5", - "displayName": "MiMo V2.5", - "tier": "lightweight", - "routingPriority": 40, - "serviceTypes": [ - "chat", - "vision" - ], - "capabilities": [ - "chat", - "reasoning", - "vision", - "tool_use", - "code" - ], - "contextWindow": 1000000, - "maxOutputTokens": 131072, - "supportedReasoning": [ - "auto", - "off", - "minimal", - "low", - "medium", - "high", - "xhigh" - ], - "defaultReasoning": "low", - "eligibleForAgent": true, - "defaultReference": false - }, - { - "model": "MiniMax-M3", - "displayName": "MiniMax M3", - "tier": "balanced", - "routingPriority": 30, - "serviceTypes": [ - "chat" - ], - "capabilities": [ - "chat", - "reasoning", - "code", - "vision", - "video_understanding", - "tool_use", - "long_context" - ], - "contextWindow": 1048576, - "maxOutputTokens": 512000, - "supportedReasoning": [ - "auto", - "off", - "minimal", - "low", - "medium", - "high", - "xhigh" - ], - "defaultReasoning": "medium", - "eligibleForAgent": true, - "defaultReference": false - }, - { - "model": "wan2.7-image", - "displayName": "通义万相 2.7", - "tier": "balanced", - "routingPriority": 107, - "serviceTypes": [ - "image_gen" - ], - "capabilities": [ - "chat", - "image_generation", - "chinese_optimized" - ], - "contextWindow": null, - "maxOutputTokens": null, - "supportedReasoning": [ - "auto" - ], - "defaultReasoning": "auto", - "eligibleForAgent": false, - "defaultReference": false - }, - { - "model": "glm-5.1", - "displayName": "GLM-5.1", - "tier": "balanced", - "routingPriority": 65, - "serviceTypes": [ - "chat" - ], - "capabilities": [ - "chat", - "reasoning", - "code", - "multilingual", - "deep_thinking", - "long_context", - "math", - "tool_use", - "agent" - ], - "contextWindow": 200000, - "maxOutputTokens": 128000, - "supportedReasoning": [ - "auto", - "off", - "minimal", - "low", - "medium", - "high", - "xhigh" - ], - "defaultReasoning": "medium", - "eligibleForAgent": true, - "defaultReference": false - }, - { - "model": "deepseek-v4-flash", - "displayName": "DeepSeek V4 Flash", - "tier": "lightweight", - "routingPriority": 35, - "serviceTypes": [ - "chat", - "reasoning" - ], - "capabilities": [ - "chat", - "code", - "reasoning", - "deep_thinking", - "multilingual", - "tool_use" - ], - "contextWindow": 1000000, - "maxOutputTokens": 384000, - "supportedReasoning": [ - "auto", - "high", - "max" - ], - "defaultReasoning": "high", - "eligibleForAgent": true, - "defaultReference": false - }, - { - "model": "deepseek-v4-pro", - "displayName": "DeepSeek V4 Pro", - "tier": "flagship", - "routingPriority": 30, - "serviceTypes": [ - "chat", - "reasoning" - ], - "capabilities": [ - "chat", - "reasoning", - "deep_thinking", - "code", - "math", - "science", - "multilingual", - "tool_use" - ], - "contextWindow": 1000000, - "maxOutputTokens": 384000, - "supportedReasoning": [ - "auto", - "high", - "max" - ], - "defaultReasoning": "high", - "eligibleForAgent": true, - "defaultReference": true - }, - { - "model": "kimi-k2.6", - "displayName": "Kimi K2.6", - "tier": "balanced", - "routingPriority": 45, - "serviceTypes": [ - "chat" - ], - "capabilities": [ - "chat", - "reasoning", - "code", - "tool_use", - "agent", - "long_context", - "vision" - ], - "contextWindow": 262144, - "maxOutputTokens": 16384, - "supportedReasoning": [ - "auto", - "off", - "minimal", - "low", - "medium", - "high", - "xhigh" - ], - "defaultReasoning": "medium", - "eligibleForAgent": true, - "defaultReference": false - }, - { - "model": "kimi-k2.7-code", - "displayName": "Kimi K2.7 Code", - "tier": "balanced", - "routingPriority": 50, - "serviceTypes": [ - "chat" - ], - "capabilities": [ - "chat", - "code", - "vision", - "tool_use" - ], - "contextWindow": 262144, - "maxOutputTokens": 16384, - "supportedReasoning": [ - "auto" - ], - "defaultReasoning": "auto", - "eligibleForAgent": true, - "defaultReference": false - }, - { - "model": "image-01", - "displayName": "MiniMax Image 01", - "tier": "balanced", - "routingPriority": 113, - "serviceTypes": [ - "image_gen" - ], - "capabilities": [ - "chat", - "image_generation", - "subject_reference", - "chinese_optimized" - ], - "contextWindow": null, - "maxOutputTokens": null, - "supportedReasoning": [ - "auto" - ], - "defaultReasoning": "auto", - "eligibleForAgent": false, - "defaultReference": false - }, - { - "model": "mimo-v2.5-tts", - "displayName": "MiMo V2.5 TTS", - "tier": "lightweight", - "routingPriority": 114, - "serviceTypes": [ - "tts" - ], - "capabilities": [ - "chat", - "tts", - "multilingual", - "style_control" - ], - "contextWindow": 8192, - "maxOutputTokens": null, - "supportedReasoning": [ - "auto" - ], - "defaultReasoning": "auto", - "eligibleForAgent": false, - "defaultReference": false - }, - { - "model": "happyhorse-1.1-i2v", - "displayName": "HappyHorse 1.1 I2V", - "tier": "flagship", - "routingPriority": 115, - "serviceTypes": [ - "video_gen" - ], - "capabilities": [ - "chat", - "video_generation", - "image_to_video", - "high_quality" - ], - "contextWindow": null, - "maxOutputTokens": null, - "supportedReasoning": [ - "auto" - ], - "defaultReasoning": "auto", - "eligibleForAgent": false, - "defaultReference": false - }, - { - "model": "happyhorse-1.1-t2v", - "displayName": "HappyHorse 1.1 T2V", - "tier": "flagship", - "routingPriority": 116, - "serviceTypes": [ - "video_gen" - ], - "capabilities": [ - "chat", - "video_generation", - "text_to_video", - "high_quality" - ], - "contextWindow": null, - "maxOutputTokens": null, - "supportedReasoning": [ - "auto" - ], - "defaultReasoning": "auto", - "eligibleForAgent": false, - "defaultReference": false - }, - { - "model": "happyhorse-1.1-r2v", - "displayName": "HappyHorse 1.1 R2V", - "tier": "flagship", - "routingPriority": 117, - "serviceTypes": [ - "video_gen" - ], - "capabilities": [ - "chat", - "video_generation", - "reference_to_video", - "multi_image", - "high_quality" - ], - "contextWindow": null, - "maxOutputTokens": null, - "supportedReasoning": [ - "auto" - ], - "defaultReasoning": "auto", - "eligibleForAgent": false, - "defaultReference": false - }, - { - "model": "doubao-seedance-2.0-mini", - "displayName": "Seedance 2.0 Mini", - "tier": "lightweight", - "routingPriority": 118, - "serviceTypes": [ - "video_gen" - ], - "capabilities": [ - "chat", - "video_generation", - "image_to_video", - "text_to_video", - "video_editing", - "video_extension", - "audio_generation", - "first_last_frame", - "fast", - "cost_effective" - ], - "contextWindow": null, - "maxOutputTokens": null, - "supportedReasoning": [ - "auto" - ], - "defaultReasoning": "auto", - "eligibleForAgent": false, - "defaultReference": false - }, - { - "model": "doubao-seedance-2.0-fast", - "displayName": "Seedance 2.0 Fast", - "tier": "balanced", - "routingPriority": 119, - "serviceTypes": [ - "video_gen" - ], - "capabilities": [ - "chat", - "video_generation", - "image_to_video", - "text_to_video", - "video_editing", - "video_extension", - "audio_generation", - "first_last_frame", - "fast" - ], - "contextWindow": null, - "maxOutputTokens": null, - "supportedReasoning": [ - "auto" - ], - "defaultReasoning": "auto", - "eligibleForAgent": false, - "defaultReference": false - }, - { - "model": "doubao-seedance-2.0", - "displayName": "Seedance 2.0", - "tier": "flagship", - "routingPriority": 120, - "serviceTypes": [ - "video_gen" - ], - "capabilities": [ - "chat", - "video_generation", - "image_to_video", - "text_to_video", - "video_editing", - "video_extension", - "audio_generation", - "first_last_frame" - ], - "contextWindow": null, - "maxOutputTokens": null, - "supportedReasoning": [ - "auto" - ], - "defaultReasoning": "auto", - "eligibleForAgent": false, - "defaultReference": false - }, - { - "model": "glm-5.2", - "displayName": "GLM-5.2", - "tier": "flagship", - "routingPriority": 45, - "serviceTypes": [ - "chat" - ], - "capabilities": [ - "chat", - "reasoning", - "deep_thinking", - "code", - "multilingual", - "tool_use", - "long_context" - ], - "contextWindow": 1048576, - "maxOutputTokens": 32768, - "supportedReasoning": [ - "auto", - "off", - "minimal", - "low", - "medium", - "high", - "xhigh" - ], - "defaultReasoning": "high", - "eligibleForAgent": true, - "defaultReference": false - }, - { - "model": "kimi-k3", - "displayName": "Kimi K3", - "tier": "flagship", - "routingPriority": 35, - "serviceTypes": [ - "reasoning" - ], - "capabilities": [ - "chat", - "reasoning", - "code", - "tool_use", - "agent", - "long_context", - "vision" - ], - "contextWindow": 1048576, - "maxOutputTokens": 131072, - "supportedReasoning": [ - "auto", - "off", - "minimal", - "low", - "medium", - "high", - "xhigh" - ], - "defaultReasoning": "high", - "eligibleForAgent": true, - "defaultReference": false - }, - { - "model": "mimo-v2.5-asr", - "displayName": "MiMo V2.5 ASR", - "tier": "lightweight", - "routingPriority": 123, - "serviceTypes": [ - "asr" - ], - "capabilities": [ - "chat", - "asr", - "multilingual" - ], - "contextWindow": null, - "maxOutputTokens": null, - "supportedReasoning": [ - "auto" - ], - "defaultReasoning": "auto", - "eligibleForAgent": false, - "defaultReference": false - }, - { - "model": "qwen3.8-max-preview", - "displayName": "Qwen3.8 Max Preview", - "tier": "flagship", - "routingPriority": 40, - "serviceTypes": [ - "chat" - ], - "capabilities": [ - "chat", - "reasoning", - "code", - "multilingual", - "tool_use", - "long_context", - "agent", - "vision" - ], - "contextWindow": 1000000, - "maxOutputTokens": 65536, - "supportedReasoning": [ - "auto", - "off", - "minimal", - "low", - "medium", - "high", - "xhigh" - ], - "defaultReasoning": "high", - "eligibleForAgent": true, - "defaultReference": false - }, - { - "model": "doubao-seed-2.1-turbo", - "displayName": "Doubao Seed 2.1 Turbo", - "tier": "balanced", - "routingPriority": 40, - "serviceTypes": [ - "chat" - ], - "capabilities": [ - "chat", - "reasoning", - "code", - "multilingual", - "long_context", - "tool_use", - "vision" - ], - "contextWindow": 256000, - "maxOutputTokens": 128000, - "supportedReasoning": [ - "auto", - "off", - "minimal", - "low", - "medium", - "high", - "xhigh" - ], - "defaultReasoning": "medium", - "eligibleForAgent": true, - "defaultReference": false - } - ] - } - ] -} diff --git a/manifest.json b/manifest.json index b811b83..62d03cd 100644 --- a/manifest.json +++ b/manifest.json @@ -1,6 +1,6 @@ { "version": "1.0.0", - "presetDataVersion": 89, + "presetDataVersion": 90, "updatedAt": "2026-08-10", "description": "DesireCore 官方配置中心" } diff --git a/schemas/model-spec.schema.json b/schemas/model-spec.schema.json index 24c921f..ddc82f7 100644 --- a/schemas/model-spec.schema.json +++ b/schemas/model-spec.schema.json @@ -2,7 +2,7 @@ "$schema": "http://json-schema.org/draft-07/schema#", "$id": "https://desirecore.net/schemas/config-center/model-spec.schema.json", "title": "ModelSpecFile", - "description": "模型规格库(compute/model-specs/*.json)数据契约。\n\n用途:维护模型的「内在参数」(上下文窗口、最大输出、能力标签、serviceType、默认采样参数等),这些参数与「从哪家 provider、什么价格调用」无关,是模型的客观物理属性。\n\n接入路径(首期仅 cloud):登录后从 NewAPI pricing 拉到的模型,只承担「可用模型清单 + 价签」职责;客户端按 modelName 用通用匹配机制查询本规格库,补全 tags 无法表达的结构化参数(maxOutputTokens / defaultTemperature 等)。\n\n与 provider.schema.json 的区别:provider 文件是「完整 provider 接入定义」,本文件是「跨 provider 共享的模型参数字典」。本文件是老客户端不会读取的新文件,因此 schema 可以更宽松(允许 null),且不破坏已发布客户端兼容契约。\n\n严禁写入价格字段(inputPrice/outputPrice/cache 等)——价签真相源永远是 NewAPI pricing。", + "description": "模型规格库(compute/model-specs/*.json)数据契约。\n\n用途:维护模型的唯一规格主数据:内在参数(上下文窗口、最大输出、能力标签、serviceType、默认采样参数等)以及智能路由策略(量级、排序、Agent 可选性和标准化 reasoning 合同)。同一事实不得再写入独立 smart-routing 目录。\n\nProvider 文件只描述接入面、可用性和明确的接入面覆盖;历史 Provider 条目中已有的规格字段为旧客户端兼容副本,不能覆盖本文件。\n\n严禁写入价格字段(inputPrice/outputPrice/cache 等)——价签真相源永远是 NewAPI pricing。", "type": "object", "required": ["specs"], "properties": { @@ -52,6 +52,66 @@ }, "additionalProperties": false }, + "routing": { + "type": "object", + "description": "智能路由策略。存在即表示该精确模型可进入路由候选;模型能力和 reasoning 合同均以本条目为准,Provider 只能为接入面收紧。", + "required": ["tier", "routingPriority", "eligibleForAgent", "defaultReference", "reasoning"], + "properties": { + "tier": { + "type": "string", + "enum": ["flagship", "balanced", "lightweight"], + "description": "模型在智能路由中的能力量级。" + }, + "routingPriority": { + "type": "integer", + "minimum": 0, + "maximum": 10000, + "description": "同一量级内的稳定优先级,数值越小越优先。" + }, + "eligibleForAgent": { + "type": "boolean", + "description": "是否允许作为 Agent 主模型;媒体专用模型必须为 false。" + }, + "defaultReference": { + "type": "boolean", + "description": "是否是默认模型的策略参考,只影响同级排序,不是强制选择。" + }, + "reasoning": { + "type": "object", + "description": "模型级标准化 reasoning 合同。auto 为不发送参数,off 为显式关闭;Provider 接入面可收紧此集合,但不得扩张。", + "required": ["supportedModes", "defaultMode"], + "properties": { + "supportedModes": { + "type": "array", + "minItems": 1, + "uniqueItems": true, + "items": { + "type": "string", + "enum": ["auto", "off", "minimal", "low", "medium", "high", "xhigh", "max"] + }, + "description": "产品层可用的 reasoning 档位。" + }, + "defaultMode": { + "type": "string", + "enum": ["auto", "off", "minimal", "low", "medium", "high", "xhigh", "max"], + "description": "没有显式请求时的策略默认档位,必须包含在 supportedModes 中。" + } + }, + "allOf": [ + { "if": { "properties": { "defaultMode": { "const": "auto" } } }, "then": { "properties": { "supportedModes": { "contains": { "const": "auto" } } } } }, + { "if": { "properties": { "defaultMode": { "const": "off" } } }, "then": { "properties": { "supportedModes": { "contains": { "const": "off" } } } } }, + { "if": { "properties": { "defaultMode": { "const": "minimal" } } }, "then": { "properties": { "supportedModes": { "contains": { "const": "minimal" } } } } }, + { "if": { "properties": { "defaultMode": { "const": "low" } } }, "then": { "properties": { "supportedModes": { "contains": { "const": "low" } } } } }, + { "if": { "properties": { "defaultMode": { "const": "medium" } } }, "then": { "properties": { "supportedModes": { "contains": { "const": "medium" } } } } }, + { "if": { "properties": { "defaultMode": { "const": "high" } } }, "then": { "properties": { "supportedModes": { "contains": { "const": "high" } } } } }, + { "if": { "properties": { "defaultMode": { "const": "xhigh" } } }, "then": { "properties": { "supportedModes": { "contains": { "const": "xhigh" } } } } }, + { "if": { "properties": { "defaultMode": { "const": "max" } } }, "then": { "properties": { "supportedModes": { "contains": { "const": "max" } } } } } + ], + "additionalProperties": false + } + }, + "additionalProperties": false + }, "spec": { "type": "object", "description": "模型内在参数(不含任何价格字段)", diff --git a/schemas/model-specs-index.schema.json b/schemas/model-specs-index.schema.json new file mode 100644 index 0000000..c9b8909 --- /dev/null +++ b/schemas/model-specs-index.schema.json @@ -0,0 +1,51 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "https://desirecore.net/schemas/config-center/model-specs-index.schema.json", + "title": "ModelSpecsIndex", + "description": "compute/model-specs 的加载顺序与智能路由三档定义。量级属于 model-specs 域,不得另建 smart-routing 目录。", + "type": "object", + "required": ["order", "routingTiers"], + "properties": { + "description": { + "type": "string", + "description": "索引说明。" + }, + "order": { + "type": "array", + "minItems": 1, + "uniqueItems": true, + "items": { "type": "string", "minLength": 1 }, + "description": "模型规格文件 basename 的稳定加载顺序。" + }, + "routingTiers": { + "type": "array", + "minItems": 3, + "maxItems": 3, + "items": { + "type": "object", + "required": ["id", "label", "labelEn", "description", "fallbackOrder"], + "properties": { + "id": { + "type": "string", + "enum": ["flagship", "balanced", "lightweight"], + "description": "量级稳定标识。" + }, + "label": { "type": "string", "minLength": 1, "description": "中文标签。" }, + "labelEn": { "type": "string", "minLength": 1, "description": "英文标签。" }, + "description": { "type": "string", "minLength": 1, "description": "适用任务说明。" }, + "fallbackOrder": { + "type": "array", + "minItems": 3, + "maxItems": 3, + "uniqueItems": true, + "items": { "type": "string", "enum": ["flagship", "balanced", "lightweight"] }, + "description": "该档位缺少可用候选时的量级降级/升级顺序,首项必须等于 id。" + } + }, + "additionalProperties": false + }, + "description": "智能路由量级定义与回退策略。" + } + }, + "additionalProperties": false +} diff --git a/schemas/provider.schema.json b/schemas/provider.schema.json index f3e337f..eb099ad 100644 --- a/schemas/provider.schema.json +++ b/schemas/provider.schema.json @@ -174,7 +174,7 @@ }, "models": { "type": "array", - "description": "此提供商下的可用模型列表", + "description": "此接入面当前可调用的模型列表。可用性、凭据、价格与 API 映射属于 Provider;模型能力、上下文、Smart tier 与产品 reasoning 合同以 compute/model-specs 为准。", "items": { "$ref": "#/definitions/model" } }, "tombstones": { @@ -196,18 +196,18 @@ "properties": { "modelName": { "type": "string", - "description": "模型 ID,用于 API 调用(如 gpt-5-mini、claude-sonnet-4)", + "description": "此 Provider 接入面实际接受的模型 ID,用于 API 调用并与 ModelSpec 的精确/受控别名匹配(如 gpt-5-mini、claude-sonnet-4)。", "minLength": 1 }, "displayName": { "type": "string", - "description": "模型显示名称(如 GPT-5 Mini、Claude Sonnet 4)", + "description": "旧客户端展示兼容副本。新 Smart 路径以 ModelSpec.displayName 为模型事实,此字段仅随接入面保留。", "minLength": 1 }, "serviceType": { "type": ["string", "array"], "items": { "type": "string" }, - "description": "服务类型,支持单个字符串或数组:chat、reasoning、fast、responses、translation、tts、asr、voice_clone、realtime_voice、simultaneous_interpret、vision、ocr、image_gen、video_gen、embedding、rerank、omni、computer_use 等" + "description": "旧客户端兼容的接入面服务声明;新 Smart 路径以 ModelSpec.spec 为能力事实。支持单个字符串或数组:chat、reasoning、fast、responses、translation、tts、asr、voice_clone、realtime_voice、simultaneous_interpret、vision、ocr、image_gen、video_gen、embedding、rerank、omni、computer_use 等" }, "description": { "type": "string", @@ -215,17 +215,17 @@ }, "contextWindow": { "type": "number", - "description": "上下文窗口大小(token 数)", + "description": "旧客户端兼容副本;Smart 以 ModelSpec.spec.contextWindow 为模型事实,本地接入面覆盖只能收紧。", "minimum": 0 }, "maxOutputTokens": { "type": "number", - "description": "单次请求最大输出 token 数", + "description": "旧客户端兼容副本;新模型规格以 ModelSpec.spec.maxOutputTokens 为准。", "minimum": 0 }, "capabilities": { "type": "array", - "description": "模型能力标签:chat、vision、tool_use、code、reasoning 等", + "description": "旧客户端兼容副本;Smart 的能力标签以 ModelSpec.spec.capabilities 为准,接入面或用户覆盖只能收紧,不能扩张。", "items": { "type": "string" } }, "inputPrice": { @@ -252,7 +252,7 @@ }, "extra": { "type": "object", - "description": "模型特定配置:如 TTS 模型音色列表、ASR 支持格式、模型级 reasoning effort 能力等。这里是兼容扩展面:旧客户端会安全保留并忽略未知子字段。", + "description": "接入面特定配置:如 TTS 模型音色列表、ASR 支持格式与本 Provider 实际接受的 reasoning effort。这里是兼容扩展面:旧客户端会安全保留并忽略未知子字段。", "properties": { "reasoning": { "type": "object", @@ -266,12 +266,12 @@ "type": "string", "enum": ["none", "minimal", "low", "medium", "high", "xhigh", "max"] }, - "description": "当前模型与接入面实际接受的 OpenAI reasoning effort。none 在产品层映射为 off;Ultra 是多 Agent 编排模式,禁止写入。" + "description": "当前接入面实际接受的 OpenAI reasoning effort;它只能收紧精确 ModelSpec.routing.reasoning 合同,不能扩张。none 在产品层映射为 off;Ultra 是多 Agent 编排模式,禁止写入。" }, "defaultEffort": { "type": "string", "enum": ["minimal", "low", "medium", "high", "xhigh", "max"], - "description": "当前模型在此接入面的推荐显式默认档位,必须同时存在于 supportedEfforts。" + "description": "当前接入面推荐的显式默认档位;仅当它仍属于 ModelSpec 合同时生效,且必须同时存在于 supportedEfforts。" } }, "allOf": [ diff --git a/schemas/smart-model-catalog.schema.json b/schemas/smart-model-catalog.schema.json deleted file mode 100644 index b7ee989..0000000 --- a/schemas/smart-model-catalog.schema.json +++ /dev/null @@ -1,273 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "$id": "https://desirecore.net/schemas/smart-model-catalog.json", - "title": "SmartModelCatalog", - "description": "智能路由量级、Provider 和模型能力目录;Config Center、内置兜底与未来接口共用此契约。", - "type": "object", - "required": [ - "version", - "updatedAt", - "source", - "tiers", - "providers" - ], - "properties": { - "$schema": { - "type": "string", - "description": "本数据对应的 JSON Schema 标识。" - }, - "version": { - "type": "integer", - "minimum": 1, - "maximum": 1, - "description": "目录结构版本;当前客户端只接受 v1,不兼容的新语义必须递增版本并由新客户端接入。" - }, - "updatedAt": { - "type": "string", - "format": "date-time", - "description": "本目录最近一次人工/自动核对时间。" - }, - "source": { - "type": "string", - "enum": [ - "builtin", - "config-center", - "provider-api" - ], - "description": "目录来源:config-center=配置中心下发,builtin=客户端离线兜底,provider-api=未来接口实时数据。" - }, - "tiers": { - "type": "array", - "minItems": 3, - "maxItems": 3, - "items": { - "type": "object", - "required": [ - "id", - "label", - "labelEn", - "description", - "defaultReasoning" - ], - "properties": { - "id": { - "type": "string", - "enum": [ - "flagship", - "balanced", - "lightweight" - ], - "description": "智能路由量级:flagship=最高能力,balanced=质量与成本平衡,lightweight=最快最省。" - }, - "label": { - "type": "string", - "minLength": 1, - "description": "中文量级标签。" - }, - "labelEn": { - "type": "string", - "minLength": 1, - "description": "英文量级标签。" - }, - "description": { - "type": "string", - "minLength": 1, - "description": "该量级的任务选择目标。" - }, - "defaultReasoning": { - "type": "string", - "enum": [ - "auto", - "off", - "minimal", - "low", - "medium", - "high", - "xhigh", - "max" - ], - "description": "该量级在模型支持时优先采用的默认思考深度。" - } - }, - "additionalProperties": false - }, - "description": "三档量级的自描述定义。" - }, - "providers": { - "type": "array", - "minItems": 1, - "items": { - "type": "object", - "required": [ - "providerId", - "provider", - "displayName", - "models" - ], - "properties": { - "providerId": { - "type": "string", - "minLength": 1, - "maxLength": 200, - "description": "compute.json 中的 Provider 唯一 ID。" - }, - "provider": { - "type": "string", - "minLength": 1, - "maxLength": 120, - "description": "Provider 协议标识。" - }, - "displayName": { - "type": "string", - "minLength": 1, - "maxLength": 200, - "description": "Provider 展示名称。" - }, - "models": { - "type": "array", - "minItems": 1, - "items": { - "type": "object", - "required": [ - "model", - "displayName", - "tier", - "routingPriority", - "serviceTypes", - "capabilities", - "contextWindow", - "maxOutputTokens", - "supportedReasoning", - "defaultReasoning", - "eligibleForAgent", - "defaultReference" - ], - "properties": { - "model": { - "type": "string", - "minLength": 1, - "maxLength": 300, - "description": "传给对应 Provider 的真实 modelName;禁止使用 smart 等虚拟名称。" - }, - "displayName": { - "type": "string", - "minLength": 1, - "maxLength": 200, - "description": "客户端展示名称。" - }, - "tier": { - "type": "string", - "enum": [ - "flagship", - "balanced", - "lightweight" - ], - "description": "此模型在智能路由中的能力量级。" - }, - "routingPriority": { - "type": "integer", - "minimum": 0, - "maximum": 10000, - "description": "同一量级内的稳定选择顺序,数值越小越优先;凭据与硬能力校验仍先于此排序。" - }, - "serviceTypes": { - "type": "array", - "minItems": 1, - "maxItems": 16, - "uniqueItems": true, - "items": { - "type": "string", - "minLength": 1, - "maxLength": 64, - "pattern": "^[a-z0-9_]+$", - "description": "可用于任务硬约束匹配的规范能力标签,例如 vision、code、tool_use、long_context。" - }, - "description": "模型服务类型快照,例如 chat、reasoning、image_gen、video_gen。" - }, - "capabilities": { - "type": "array", - "maxItems": 64, - "uniqueItems": true, - "items": { - "type": "string", - "minLength": 1, - "maxLength": 64, - "pattern": "^[a-z0-9_]+$", - "description": "可用于任务硬约束匹配的规范能力标签,例如 vision、code、tool_use、long_context。" - }, - "description": "模型能力快照;任务 requiredCapabilities 必须全部命中。" - }, - "contextWindow": { - "type": [ - "integer", - "null" - ], - "minimum": 1, - "maximum": 10000000, - "description": "上下文窗口 token 数;非文本模型或未知时为 null。" - }, - "maxOutputTokens": { - "type": [ - "integer", - "null" - ], - "minimum": 1, - "maximum": 1000000, - "description": "最大输出 token 数;未知或不适用时为 null。" - }, - "supportedReasoning": { - "type": "array", - "minItems": 1, - "maxItems": 8, - "uniqueItems": true, - "items": { - "type": "string", - "enum": [ - "auto", - "off", - "minimal", - "low", - "medium", - "high", - "xhigh", - "max" - ], - "description": "本次 Run 或当前 assignment 的思考深度;最终值仍受目标 Provider × Model 能力矩阵约束。" - }, - "description": "该 Provider × Model 接入面声明的可用 reasoning 档位。" - }, - "defaultReasoning": { - "type": "string", - "enum": [ - "auto", - "off", - "minimal", - "low", - "medium", - "high", - "xhigh", - "max" - ], - "description": "未显式指定时的模型参考 reasoning;路由还会结合量级默认值并做能力协商。" - }, - "eligibleForAgent": { - "type": "boolean", - "description": "是否可作为 Agent 主模型。图像/视频生成、ASR/TTS 等专用模型为 false。" - }, - "defaultReference": { - "type": "boolean", - "description": "是否为 Provider/defaultServiceMap 给出的默认参考。它只影响同级排序,不是强制答案。" - } - }, - "additionalProperties": false - }, - "description": "该接入面当前已核对的模型目录。" - } - }, - "additionalProperties": false - }, - "description": "参与智能路由和能力匹配的 Provider 目录。" - } - }, - "additionalProperties": false -} diff --git a/scripts/validate.mjs b/scripts/validate.mjs index 5ffb1c2..f784ccb 100644 --- a/scripts/validate.mjs +++ b/scripts/validate.mjs @@ -46,12 +46,11 @@ function pickSchemaKey(absPath) { if (rel === 'manifest.json') return 'manifest' if (rel === 'compute/pricing.json') return 'pricing' if (rel === 'compute/service-map.json') return 'service-map' - if (rel === 'compute/smart-routing/model-catalog.json') return 'smart-model-catalog' + if (rel === 'compute/model-specs/_index.json') return 'model-specs-index' if (rel === 'compute/providers/_index.json') return 'providers-index' if (rel === 'runtimes/recommended.json') return 'runtime-recommended' if (rel === 'runtimes/versions-fallback.json') return 'runtime-versions-fallback' if (rel === 'compute/coding-plans/_index.json') return 'providers-index' - if (rel === 'compute/model-specs/_index.json') return 'providers-index' if (rel.startsWith('compute/providers/') && rel.endsWith('.json')) return 'provider' if (rel.startsWith('compute/coding-plans/') && rel.endsWith('.json')) return 'provider' if (rel.startsWith('compute/model-specs/') && rel.endsWith('.json')) return 'model-spec'