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:
Craig Donnelly
2026-08-01 17:55:51 +02:00
committed by GitHub
parent 6dd993d5a7
commit 1a4e693bb9
26 changed files with 383 additions and 2 deletions
+2 -2
View File
@@ -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]]
+6
View File
@@ -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
+15
View File
@@ -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
+5
View File
@@ -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/"