Add TensorX provider with 32 models (#2696)
* Add TensorX provider with 32 models TensorX is an EU-sovereign OpenAI-compatible inference platform (https://tensorx.ai) offering 40+ open-source and frontier models. This adds: - providers/tensorx/provider.toml (OpenAI-compatible, api.tensorx.ai/v1) - providers/tensorx/logo.svg - 32 chat model TOMLs across 8 vendors: - z-ai (7 GLM models, base_model from zhipuai metadata) - deepseek (7 models incl. V4 Flash/Pro, R1, Chat V3 variants) - minimax (5 M2/M3 variants) - moonshotai (3 Kimi K2 models) - qwen (5 models incl. Qwen3.5, VL, Coder) - meta-llama (2 Llama models) - nvidia (1 Nemotron model) - openai (2 GPT-OSS models) 21 models use base_model inheritance from existing models/ metadata. 11 models have full provider TOML definitions. Non-chat models (embedding, TTS, STT), internal aliases, and duplicate entries are excluded. Pricing, limits, and capabilities are sourced from the TensorX API (https://api.tensorix.ai/v1/model/info). * Address PR #2696 review feedback - Fix logo viewBox origin (25 15 -> 0 0) to match repo convention - Add provider-audited reasoning_options to all 6 reasoning models (gpt-oss-120b/20b, deepseek-r1-0528/v3.2/chat-v3.1, qwen3.5-9b) values audited against TensorX API; mandatory-reasoning models omit 'none' (gpt-oss, deepseek-r1-0528) - Correct GPT-OSS release_date from 2024-12-01 to 2025-08-05 - Factor Qwen3.5-9B through canonical base_model; create models/alibaba/qwen3.5-9b.toml with provider-agnostic facts. Fixes attachment/modalities (was text-only; HF confirms VL model with image/video/audio input) * Address second-round review feedback on PR #2696 - Remove fixed width/height from logo.svg per logo guidelines - Reconcile model list with the advertised TensorX catalog: drop 9 delisted models (deepseek-chat-v3-0324, llama-3.3-70b, llama-4-maverick, minimax-m2/m2.1/m2.7, gpt-oss-20b, qwen-2.5-72b, glm-4.6) - Use canonical base_model for openai/gpt-oss-120b and deepseek/deepseek-r1-0528; inherit canonical limits - Add missing description to remaining inline models - Declare reasoning_options on every reasoning model, audited per-model against the TensorX API (validation errors + behavioural probes); exact request syntax recorded as TOML comments - Remove unsupported audio input modality from Qwen3.5 9B canonical
This commit is contained in:
@@ -3,7 +3,7 @@ description = "Qwen instruction model for multilingual chat, reasoning, and tool
|
||||
family = "qwen"
|
||||
release_date = "2026-02-23"
|
||||
last_updated = "2026-02-23"
|
||||
attachment = false
|
||||
attachment = true
|
||||
reasoning = true
|
||||
temperature = true
|
||||
tool_call = true
|
||||
@@ -15,7 +15,7 @@ context = 262_144
|
||||
output = 65_536
|
||||
|
||||
[modalities]
|
||||
input = ["text"]
|
||||
input = ["text", "image", "video"]
|
||||
output = ["text"]
|
||||
|
||||
[[weights]]
|
||||
|
||||
@@ -0,0 +1,6 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 70 70">
|
||||
<g transform="translate(-25,-15)">
|
||||
<path d="M85.5,71.73l-1.63,1.64c-1.32-1.13-24.09-20.22-51.45,1.67l-1.05-1.04,46.82-41.57,1.35,1.35c-.89,1.93-9.96,22.55,5.96,37.95Z" fill="currentColor"/>
|
||||
<path d="M31.52,21.38l1.63-1.64c1.32,1.13,24.09,20.22,51.45-1.67l1.05,1.04-46.82,41.57-1.35-1.35c.89-1.93,9.96-22.55-5.96-37.95Z" fill="currentColor"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 415 B |
@@ -0,0 +1,30 @@
|
||||
name = "DeepSeek Chat V3.1"
|
||||
description = "DeepSeek chat model for instruction following, coding, and analysis"
|
||||
family = "deepseek"
|
||||
release_date = "2025-08-21"
|
||||
last_updated = "2025-08-21"
|
||||
attachment = false
|
||||
reasoning = true
|
||||
temperature = true
|
||||
tool_call = true
|
||||
knowledge = "2024-11"
|
||||
open_weights = true
|
||||
|
||||
|
||||
[[reasoning_options]]
|
||||
type = "effort" # API: {"reasoning_effort": <value>}; "none" disables reasoning
|
||||
values = ["none", "minimal", "low", "medium", "high", "xhigh", "max"]
|
||||
|
||||
[cost]
|
||||
input = 0.2
|
||||
output = 0.8
|
||||
cache_read = 0.05
|
||||
cache_write = 0.25
|
||||
|
||||
[limit]
|
||||
context = 164000
|
||||
output = 163840
|
||||
|
||||
[modalities]
|
||||
input = ["text"]
|
||||
output = ["text"]
|
||||
@@ -0,0 +1,18 @@
|
||||
base_model = "deepseek/deepseek-r1"
|
||||
name = "DeepSeek R1-0528"
|
||||
release_date = "2025-05-28"
|
||||
last_updated = "2025-05-28"
|
||||
|
||||
[[reasoning_options]]
|
||||
type = "effort" # API: {"reasoning_effort": <value>}; reasoning is mandatory, "none" is rejected
|
||||
values = ["minimal", "low", "medium", "high", "xhigh", "max"]
|
||||
|
||||
[cost]
|
||||
input = 0.66
|
||||
output = 2.6
|
||||
cache_read = 0.165
|
||||
cache_write = 0.825
|
||||
|
||||
[limit]
|
||||
context = 164000
|
||||
output = 8192
|
||||
@@ -0,0 +1,30 @@
|
||||
name = "DeepSeek V3.2"
|
||||
description = "DeepSeek chat model for instruction following, coding, and analysis"
|
||||
family = "deepseek"
|
||||
release_date = "2025-12-01"
|
||||
last_updated = "2025-12-01"
|
||||
attachment = false
|
||||
reasoning = true
|
||||
temperature = true
|
||||
tool_call = true
|
||||
knowledge = "2025-05"
|
||||
open_weights = true
|
||||
|
||||
|
||||
[[reasoning_options]]
|
||||
type = "effort" # API: {"reasoning_effort": <value>}; "none" disables reasoning
|
||||
values = ["none", "minimal", "low", "medium", "high", "xhigh", "max"]
|
||||
|
||||
[cost]
|
||||
input = 0.3
|
||||
output = 0.5
|
||||
cache_read = 0.075
|
||||
cache_write = 0.375
|
||||
|
||||
[limit]
|
||||
context = 163840
|
||||
output = 163840
|
||||
|
||||
[modalities]
|
||||
input = ["text"]
|
||||
output = ["text"]
|
||||
@@ -0,0 +1,13 @@
|
||||
base_model = "deepseek/deepseek-v4-flash"
|
||||
|
||||
[[reasoning_options]]
|
||||
type = "toggle" # API: {"chat_template_kwargs": {"thinking": true}} (default off)
|
||||
|
||||
[cost]
|
||||
input = 0.15
|
||||
output = 0.3
|
||||
cache_read = 0.0375
|
||||
cache_write = 0.1875
|
||||
|
||||
[limit]
|
||||
context = 1048576
|
||||
@@ -0,0 +1,13 @@
|
||||
base_model = "deepseek/deepseek-v4-pro"
|
||||
|
||||
[[reasoning_options]]
|
||||
type = "toggle" # API: {"chat_template_kwargs": {"thinking": true}} (default off)
|
||||
|
||||
[cost]
|
||||
input = 1.75
|
||||
output = 3.5
|
||||
cache_read = 0.4375
|
||||
cache_write = 2.185
|
||||
|
||||
[limit]
|
||||
context = 1048576
|
||||
@@ -0,0 +1,15 @@
|
||||
base_model = "minimax/MiniMax-M2.5"
|
||||
|
||||
[[reasoning_options]]
|
||||
type = "effort" # API: {"reasoning_effort": <value>}; reasoning is mandatory, "none" is rejected
|
||||
values = ["minimal", "low", "medium", "high", "xhigh", "max"]
|
||||
|
||||
[cost]
|
||||
input = 0.3
|
||||
output = 1.2
|
||||
cache_read = 0.075
|
||||
cache_write = 0.375
|
||||
|
||||
[limit]
|
||||
context = 196608
|
||||
output = 65536
|
||||
@@ -0,0 +1,13 @@
|
||||
base_model = "minimax/MiniMax-M3"
|
||||
|
||||
[[reasoning_options]]
|
||||
type = "toggle" # API: {"chat_template_kwargs": {"thinking_mode": "enabled" | "disabled"}} (default "adaptive")
|
||||
|
||||
[cost]
|
||||
input = 0.4
|
||||
output = 2
|
||||
cache_read = 0.1
|
||||
|
||||
[limit]
|
||||
context = 1048576
|
||||
output = 131072
|
||||
@@ -0,0 +1,8 @@
|
||||
base_model = "moonshotai/kimi-k2.5"
|
||||
reasoning_options = []
|
||||
|
||||
[cost]
|
||||
input = 0.5
|
||||
output = 2.8
|
||||
cache_read = 0.125
|
||||
cache_write = 0.625
|
||||
@@ -0,0 +1,10 @@
|
||||
base_model = "moonshotai/kimi-k2.6"
|
||||
|
||||
[[reasoning_options]]
|
||||
type = "toggle" # API: {"chat_template_kwargs": {"thinking": false}} (default on)
|
||||
|
||||
[cost]
|
||||
input = 1
|
||||
output = 4
|
||||
cache_read = 0.25
|
||||
cache_write = 1.25
|
||||
@@ -0,0 +1,9 @@
|
||||
base_model = "moonshotai/kimi-k2.7-code"
|
||||
|
||||
[[reasoning_options]]
|
||||
type = "toggle" # API: {"chat_template_kwargs": {"thinking": false}} (default on)
|
||||
|
||||
[cost]
|
||||
input = 1.25
|
||||
output = 4.5
|
||||
cache_read = 0.3125
|
||||
@@ -0,0 +1,11 @@
|
||||
base_model = "nvidia/nemotron-3-super-120b-a12b"
|
||||
|
||||
[[reasoning_options]]
|
||||
type = "effort" # API: {"reasoning_effort": <value>}; "none" disables reasoning
|
||||
values = ["none", "minimal", "low", "medium", "high", "xhigh", "max"]
|
||||
|
||||
[cost]
|
||||
input = 0.3
|
||||
output = 0.9
|
||||
cache_read = 0.075
|
||||
cache_write = 0.375
|
||||
@@ -0,0 +1,12 @@
|
||||
base_model = "openai/gpt-oss-120b"
|
||||
knowledge = "2024-10"
|
||||
|
||||
[[reasoning_options]]
|
||||
type = "effort" # API: {"reasoning_effort": <value>}; reasoning is mandatory, "none" is rejected
|
||||
values = ["minimal", "low", "medium", "high", "xhigh", "max"]
|
||||
|
||||
[cost]
|
||||
input = 0.04
|
||||
output = 0.2
|
||||
cache_read = 0.01
|
||||
cache_write = 0.05
|
||||
@@ -0,0 +1,25 @@
|
||||
name = "Qwen3 235B-A22B-2507"
|
||||
description = "Qwen instruction model for multilingual chat, reasoning, and tool use"
|
||||
family = "qwen"
|
||||
release_date = "2025-07-21"
|
||||
last_updated = "2025-07-21"
|
||||
attachment = false
|
||||
reasoning = false
|
||||
temperature = true
|
||||
tool_call = true
|
||||
knowledge = "2025-06-30"
|
||||
open_weights = true
|
||||
|
||||
[cost]
|
||||
input = 0.072
|
||||
output = 0.464
|
||||
cache_read = 0.018
|
||||
cache_write = 0.09
|
||||
|
||||
[limit]
|
||||
context = 131000
|
||||
output = 262144
|
||||
|
||||
[modalities]
|
||||
input = ["text"]
|
||||
output = ["text"]
|
||||
@@ -0,0 +1,10 @@
|
||||
base_model = "alibaba/qwen3-coder-30b-a3b-instruct"
|
||||
|
||||
[cost]
|
||||
input = 0.06
|
||||
output = 0.25
|
||||
cache_read = 0.015
|
||||
cache_write = 0.075
|
||||
|
||||
[limit]
|
||||
context = 262000
|
||||
@@ -0,0 +1,25 @@
|
||||
name = "Qwen3 VL 235B-A22B Instruct"
|
||||
description = "Qwen vision-language model for visual reasoning, documents, and agent tasks"
|
||||
family = "qwen"
|
||||
release_date = "2025-09-23"
|
||||
last_updated = "2025-09-23"
|
||||
attachment = true
|
||||
reasoning = false
|
||||
temperature = true
|
||||
tool_call = true
|
||||
knowledge = "2025-03-31"
|
||||
open_weights = true
|
||||
|
||||
[cost]
|
||||
input = 0.21
|
||||
output = 1.9
|
||||
cache_read = 0.0525
|
||||
cache_write = 0.2625
|
||||
|
||||
[limit]
|
||||
context = 131000
|
||||
output = 131072
|
||||
|
||||
[modalities]
|
||||
input = ["text", "image"]
|
||||
output = ["text"]
|
||||
@@ -0,0 +1,14 @@
|
||||
base_model = "alibaba/qwen3.5-122b-a10b"
|
||||
|
||||
[[reasoning_options]]
|
||||
type = "effort" # API: {"reasoning_effort": <value>}; "none" disables reasoning
|
||||
values = ["none", "minimal", "low", "medium", "high", "xhigh", "max"]
|
||||
|
||||
[cost]
|
||||
input = 0.5
|
||||
output = 3.5
|
||||
cache_read = 0.125
|
||||
cache_write = 0.625
|
||||
|
||||
[limit]
|
||||
output = 262144
|
||||
@@ -0,0 +1,12 @@
|
||||
base_model = "alibaba/qwen3.5-9b"
|
||||
|
||||
|
||||
[[reasoning_options]]
|
||||
type = "effort" # API: {"reasoning_effort": <value>}; "none" disables reasoning
|
||||
values = ["none", "minimal", "low", "medium", "high", "xhigh", "max"]
|
||||
|
||||
[cost]
|
||||
input = 0.15
|
||||
output = 0.2
|
||||
cache_read = 0.0375
|
||||
cache_write = 0.1875
|
||||
@@ -0,0 +1,19 @@
|
||||
base_model = "zhipuai/glm-4.7"
|
||||
|
||||
[[reasoning_options]]
|
||||
type = "effort" # API: {"reasoning_effort": <value>}; "none" disables reasoning
|
||||
values = ["none", "minimal", "low", "medium", "high", "xhigh", "max"]
|
||||
|
||||
[cost]
|
||||
input = 0.6
|
||||
output = 2.2
|
||||
cache_read = 0.15
|
||||
cache_write = 0.75
|
||||
|
||||
[limit]
|
||||
context = 200000
|
||||
output = 200000
|
||||
|
||||
[modalities]
|
||||
input = ["text", "image"]
|
||||
output = ["text"]
|
||||
@@ -0,0 +1,17 @@
|
||||
base_model = "zhipuai/glm-5-turbo"
|
||||
|
||||
[[reasoning_options]]
|
||||
type = "toggle" # API: {"chat_template_kwargs": {"enable_thinking": false}} (default on)
|
||||
|
||||
[[reasoning_options]]
|
||||
type = "effort" # API: {"reasoning_effort": <value>}; "none" disables reasoning
|
||||
values = ["none", "minimal", "low", "medium", "high", "xhigh", "max"]
|
||||
|
||||
[cost]
|
||||
input = 1.2
|
||||
output = 4
|
||||
cache_read = 0.3
|
||||
cache_write = 1.5
|
||||
|
||||
[limit]
|
||||
context = 202752
|
||||
@@ -0,0 +1,18 @@
|
||||
base_model = "zhipuai/glm-5.1"
|
||||
|
||||
[[reasoning_options]]
|
||||
type = "toggle" # API: {"chat_template_kwargs": {"enable_thinking": false}} (default on)
|
||||
|
||||
[[reasoning_options]]
|
||||
type = "effort" # API: {"reasoning_effort": <value>}; "none" disables reasoning
|
||||
values = ["none", "minimal", "low", "medium", "high", "xhigh", "max"]
|
||||
|
||||
[cost]
|
||||
input = 1.4
|
||||
output = 4.4
|
||||
cache_read = 0.35
|
||||
cache_write = 1.75
|
||||
|
||||
[limit]
|
||||
context = 202752
|
||||
output = 202752
|
||||
@@ -0,0 +1,16 @@
|
||||
base_model = "zhipuai/glm-5.2"
|
||||
|
||||
[[reasoning_options]]
|
||||
type = "toggle" # API: {"chat_template_kwargs": {"enable_thinking": false}} (default on)
|
||||
|
||||
[[reasoning_options]]
|
||||
type = "effort" # API: {"reasoning_effort": <value>}; "none" disables reasoning
|
||||
values = ["none", "minimal", "low", "medium", "high", "xhigh", "max"]
|
||||
|
||||
[cost]
|
||||
input = 1.5
|
||||
output = 4.5
|
||||
cache_read = 0.375
|
||||
|
||||
[limit]
|
||||
context = 1048576
|
||||
@@ -0,0 +1,15 @@
|
||||
base_model = "zhipuai/glm-5"
|
||||
|
||||
[[reasoning_options]]
|
||||
type = "effort" # API: {"reasoning_effort": <value>}; "none" disables reasoning
|
||||
values = ["none", "minimal", "low", "medium", "high", "xhigh", "max"]
|
||||
|
||||
[cost]
|
||||
input = 1
|
||||
output = 3.2
|
||||
cache_read = 0.25
|
||||
cache_write = 1.25
|
||||
|
||||
[limit]
|
||||
context = 202752
|
||||
output = 202752
|
||||
@@ -0,0 +1,17 @@
|
||||
base_model = "zhipuai/glm-5v-turbo"
|
||||
|
||||
[[reasoning_options]]
|
||||
type = "toggle" # API: {"chat_template_kwargs": {"enable_thinking": false}} (default on)
|
||||
|
||||
[[reasoning_options]]
|
||||
type = "effort" # API: {"reasoning_effort": <value>}; "none" disables reasoning
|
||||
values = ["none", "minimal", "low", "medium", "high", "xhigh", "max"]
|
||||
|
||||
[cost]
|
||||
input = 1.2
|
||||
output = 4
|
||||
cache_read = 0.3
|
||||
cache_write = 1.5
|
||||
|
||||
[limit]
|
||||
context = 202752
|
||||
@@ -0,0 +1,5 @@
|
||||
name = "TensorX"
|
||||
env = ["TENSORX_API_KEY"]
|
||||
npm = "@ai-sdk/openai-compatible"
|
||||
api = "https://api.tensorx.ai/v1"
|
||||
doc = "https://docs.tensorx.ai/"
|
||||
Reference in New Issue
Block a user