From 898095f2584aae134f9f4829cbebcf662361f01a Mon Sep 17 00:00:00 2001 From: Infersia Date: Sat, 1 Aug 2026 21:19:00 +1000 Subject: [PATCH 1/5] Add Infersia provider Adds the Infersia provider with three Qwen3 models and StepFun Step 3.7 Flash, plus shared models/ metadata for Qwen3 14B and 8B, which the catalogue did not have. --- models/alibaba/qwen3-14b.toml | 27 +++++++++ models/alibaba/qwen3-8b.toml | 26 +++++++++ providers/infersia/logo.svg | 29 ++++++++++ providers/infersia/models/qwen/qwen3-14b.toml | 32 +++++++++++ providers/infersia/models/qwen/qwen3-8b.toml | 32 +++++++++++ .../infersia/models/qwen/qwen3.6-35b-a3b.toml | 36 ++++++++++++ .../models/stepfun-ai/step-3.7-flash.toml | 56 +++++++++++++++++++ providers/infersia/provider.toml | 7 +++ 8 files changed, 245 insertions(+) create mode 100644 models/alibaba/qwen3-14b.toml create mode 100644 models/alibaba/qwen3-8b.toml create mode 100644 providers/infersia/logo.svg create mode 100644 providers/infersia/models/qwen/qwen3-14b.toml create mode 100644 providers/infersia/models/qwen/qwen3-8b.toml create mode 100644 providers/infersia/models/qwen/qwen3.6-35b-a3b.toml create mode 100644 providers/infersia/models/stepfun-ai/step-3.7-flash.toml create mode 100644 providers/infersia/provider.toml diff --git a/models/alibaba/qwen3-14b.toml b/models/alibaba/qwen3-14b.toml new file mode 100644 index 0000000000..eb8611c23d --- /dev/null +++ b/models/alibaba/qwen3-14b.toml @@ -0,0 +1,27 @@ +name = "Qwen3 14B" +description = "Dense open Qwen model with hybrid thinking for chat, reasoning, and coding" +family = "qwen" +release_date = "2025-04" +last_updated = "2025-04" +attachment = false +reasoning = true +temperature = true +tool_call = true +structured_output = true +knowledge = "2025-04" +open_weights = true + +[limit] +context = 131_072 +# 8_192 is what the first-party alibaba and alibaba-cn entries use, and what +# OpenRouter publishes. Providers that serve a larger ceiling override it — +# Infersia serves 16_384 and declares that in its own entry. +output = 8_192 + +[modalities] +input = ["text"] +output = ["text"] + +[[weights]] +label = "Hugging Face" +url = "https://huggingface.co/Qwen/Qwen3-14B" diff --git a/models/alibaba/qwen3-8b.toml b/models/alibaba/qwen3-8b.toml new file mode 100644 index 0000000000..85f9e14a4d --- /dev/null +++ b/models/alibaba/qwen3-8b.toml @@ -0,0 +1,26 @@ +name = "Qwen3 8B" +description = "Compact dense Qwen model with hybrid thinking for agents and high-volume tasks" +family = "qwen" +release_date = "2025-04" +last_updated = "2025-04" +attachment = false +reasoning = true +temperature = true +tool_call = true +structured_output = true +knowledge = "2025-04" +open_weights = true + +[limit] +context = 131_072 +# 8_192 is what the first-party alibaba and alibaba-cn entries use, and what +# OpenRouter publishes. Providers that serve a larger ceiling override it. +output = 8_192 + +[modalities] +input = ["text"] +output = ["text"] + +[[weights]] +label = "Hugging Face" +url = "https://huggingface.co/Qwen/Qwen3-8B" diff --git a/providers/infersia/logo.svg b/providers/infersia/logo.svg new file mode 100644 index 0000000000..15a2c0ead0 --- /dev/null +++ b/providers/infersia/logo.svg @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/providers/infersia/models/qwen/qwen3-14b.toml b/providers/infersia/models/qwen/qwen3-14b.toml new file mode 100644 index 0000000000..5a592d01b0 --- /dev/null +++ b/providers/infersia/models/qwen/qwen3-14b.toml @@ -0,0 +1,32 @@ +# Infersia serving details for Qwen3 14B. +# +# Sources: +# Pricing https://infersia.com/models/qwen/qwen3-14b +# Limits https://api.infersia.com/v1/models (context_length, max_completion_tokens) +# +# Served AWQ int4 with an fp8 KV cache. The 131_072 window is reached with YaRN +# (factor 4.0 over the model's native 32_768) and is verified in service. + +base_model = "alibaba/qwen3-14b" +reasoning = true + +# Qwen3 hybrid thinking. Infersia defaults it off, so an ordinary chat turn does +# not spend 500-1500 unrequested reasoning tokens; send the kwarg to turn it on. +[[reasoning_options]] +type = "toggle" # API: {"chat_template_kwargs": {"enable_thinking": true}} + +[limit] +context = 131_072 +output = 16_384 + +[modalities] +input = ["text"] +output = ["text"] + +[provider] +shape = "completions" + +[cost] +input = 0.09 +output = 0.22 +cache_read = 0.0225 diff --git a/providers/infersia/models/qwen/qwen3-8b.toml b/providers/infersia/models/qwen/qwen3-8b.toml new file mode 100644 index 0000000000..64429407b1 --- /dev/null +++ b/providers/infersia/models/qwen/qwen3-8b.toml @@ -0,0 +1,32 @@ +# Infersia serving details for Qwen3 8B. +# +# Sources: +# Pricing https://infersia.com/models/qwen/qwen3-8b +# Limits https://api.infersia.com/v1/models (context_length, max_completion_tokens) +# +# Served AWQ int4 with an fp8 KV cache, at the model's native 32_768 window +# rather than the YaRN-extended 131_072 the base entry describes. + +base_model = "alibaba/qwen3-8b" +reasoning = true + +# Qwen3 hybrid thinking. Infersia defaults it off, so an ordinary chat turn does +# not spend 500-1500 unrequested reasoning tokens; send the kwarg to turn it on. +[[reasoning_options]] +type = "toggle" # API: {"chat_template_kwargs": {"enable_thinking": true}} + +[limit] +context = 32_768 +output = 8_192 + +[modalities] +input = ["text"] +output = ["text"] + +[provider] +shape = "completions" + +[cost] +input = 0.05 +output = 0.15 +cache_read = 0.0125 diff --git a/providers/infersia/models/qwen/qwen3.6-35b-a3b.toml b/providers/infersia/models/qwen/qwen3.6-35b-a3b.toml new file mode 100644 index 0000000000..8160dd06e9 --- /dev/null +++ b/providers/infersia/models/qwen/qwen3.6-35b-a3b.toml @@ -0,0 +1,36 @@ +# Infersia serving details for Qwen3.6 35B-A3B. +# +# Sources: +# Pricing https://infersia.com/models/qwen/qwen3.6-35b-a3b +# Limits https://api.infersia.com/v1/models (context_length, max_completion_tokens) +# +# Served AWQ int4 with an fp8 KV cache. The 262K context is the model's native +# window, not a YaRN extension. + +base_model = "alibaba/qwen3.6-35b-a3b" +reasoning = true + +# Qwen3 hybrid thinking. Infersia defaults it off, so an ordinary chat turn does +# not spend 500-1500 unrequested reasoning tokens; send the kwarg to turn it on. +[[reasoning_options]] +type = "toggle" # API: {"chat_template_kwargs": {"enable_thinking": true}} + +# Overrides the base entry's 65_536 output ceiling — Infersia caps completions +# at 32_768 tokens. +[limit] +context = 262_144 +output = 32_768 + +# Text and image only. The base entry also lists video and audio: the weights +# support both, this endpoint accepts neither. +[modalities] +input = ["text", "image"] +output = ["text"] + +[provider] +shape = "completions" + +[cost] +input = 0.10 +output = 0.90 +cache_read = 0.025 diff --git a/providers/infersia/models/stepfun-ai/step-3.7-flash.toml b/providers/infersia/models/stepfun-ai/step-3.7-flash.toml new file mode 100644 index 0000000000..db0460636c --- /dev/null +++ b/providers/infersia/models/stepfun-ai/step-3.7-flash.toml @@ -0,0 +1,56 @@ +# Infersia serving details for StepFun Step 3.7 Flash. +# +# Sources: +# Pricing https://infersia.com/models/stepfun-ai/step-3.7-flash +# Limits https://api.infersia.com/v1/models (context_length, max_completion_tokens) +# +# Served as StepFun's own NVFP4 release on a single B200 — not a quantisation +# we produced. StepFun publish no NVFP4-vs-BF16 quality delta, so this is not +# claimed as full-precision parity. +# +# The directory is `stepfun-ai/` because a provider file's path is that +# provider's own API id and we serve this as `stepfun-ai/step-3.7-flash`. The +# shared entry it inherits from is keyed by lab, at models/stepfun/. + +base_model = "stepfun/step-3.7-flash" +# The shared entry sets limit.input = 256_000 alongside its 256_000 context. +# [limit] deep-merges, so overriding only `context` and `output` below would +# leave input = 256_000 against a context of 131_072 — an input ceiling larger +# than the whole window. Dropping the inherited field is what the other +# providers of this model do rather than asserting a second number, because the +# real constraint is the single 131_072 window shared between prompt and +# completion, not a separate input cap. +base_model_omit = ["limit.input"] +structured_output = true +reasoning = true + +# Three depths, set per request. Infersia defaults to "medium" when the caller +# sends none — the template only emits its reasoning instruction when the +# variable is defined, and left undefined the model will occasionally deliberate +# until it hits the token ceiling and returns nothing. +[[reasoning_options]] +type = "effort" # API: {"chat_template_kwargs": {"reasoning_effort": "low"}} +values = ["low", "medium", "high"] + +# The model's full context, served on a single B200. Output is capped at 32_768, +# which is the only field below the shared entry. +[limit] +context = 262_144 +output = 32_768 + +# Text and image. The shared entry also lists video: the weights support it, +# this endpoint does not accept it. Image input is verified end to end — base64 +# data URIs and remote URLs, single and multiple images per prompt. +[modalities] +input = ["text", "image"] +output = ["text"] + +[provider] +shape = "completions" + +# Under StepFun's own published rates ($0.20 / $1.15 / $0.04), which are also +# the median across the providers listed for this model. +[cost] +input = 0.18 +output = 1.05 +cache_read = 0.036 diff --git a/providers/infersia/provider.toml b/providers/infersia/provider.toml new file mode 100644 index 0000000000..cc6c2472e9 --- /dev/null +++ b/providers/infersia/provider.toml @@ -0,0 +1,7 @@ +name = "Infersia" +env = ["INFERSIA_API_KEY"] +npm = "@ai-sdk/openai-compatible" +api = "https://api.infersia.com/v1" +# The catalogue rather than /docs: the schema asks for the page "where models +# are listed", and /docs is the API reference — it never names a model. +doc = "https://infersia.com/models" From f14f24edc314d2dc61566c007d7a98a7ed6f77c9 Mon Sep 17 00:00:00 2001 From: PEV123 Date: Sun, 2 Aug 2026 13:27:40 +1000 Subject: [PATCH 2/5] Add DeepSeek V4 Flash 0731, and correct two stale comments MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Declares the reasoning controls verified against the live endpoint: `enable_thinking` as a chat-template toggle (thinking defaults off) and the top-level OpenAI `reasoning_effort` field over DeepSeek's published low/high/max levels. On a short prompt, 280 completion tokens with thinking off against 7,972 at max effort. Deliberation is returned on both the streaming and non-streaming paths and billed as completion tokens; `interleaved` is the bare flag because the response field is vLLM's `reasoning`, which the schema's field enum cannot name — claiming reasoning_content would point clients at an empty key. Context is 1_048_576 — the model's full window, larger than the base entry's rounded 1_000_000 — against completions capped at 32_768. Two fixes to the Step 3.7 Flash entry while here. Its base_model_omit justification argued against a 131_072 context since raised to 262_144; the omit is still right, but now because the inherited 256_000 input ceiling sits below the window and would understate what a caller may send. Both entries also named the hardware they run on, which is not something this catalogue records for any other provider. --- .../deepseek/deepseek-v4-flash-0731.toml | 57 +++++++++++++++++++ .../models/stepfun-ai/step-3.7-flash.toml | 20 +++---- 2 files changed, 67 insertions(+), 10 deletions(-) create mode 100644 providers/infersia/models/deepseek/deepseek-v4-flash-0731.toml diff --git a/providers/infersia/models/deepseek/deepseek-v4-flash-0731.toml b/providers/infersia/models/deepseek/deepseek-v4-flash-0731.toml new file mode 100644 index 0000000000..77bc0214fa --- /dev/null +++ b/providers/infersia/models/deepseek/deepseek-v4-flash-0731.toml @@ -0,0 +1,57 @@ +# Infersia serving details for DeepSeek V4 Flash 0731. +# +# Sources: +# Pricing https://infersia.com/models/deepseek/deepseek-v4-flash-0731 +# Limits https://api.infersia.com/v1/models (context_length, max_completion_tokens) +# +# Served as DeepSeek's own MXFP4 release — not a quantisation we produced. The +# KV cache is fp8 in DeepSeek's sparse-MLA layout, which is what makes the full +# 1M window practical to serve rather than nominal. +# +# The directory is `deepseek/` because a provider file's path is that provider's +# own API id and we serve this as `deepseek/deepseek-v4-flash-0731`. + +base_model = "deepseek/deepseek-v4-flash" +name = "DeepSeek V4 Flash 0731" +description = "The official release of DeepSeek-V4-Flash, superseding the preview, with substantially enhanced agentic capabilities. Same structure as DeepSeek-V4-Flash-DSpark — it ships with a speculative decoding module attached." +release_date = "2026-07-31" +last_updated = "2026-07-31" +interleaved = true + +# Verified against the live endpoint, not transcribed from docs. Thinking +# defaults OFF (280 completion tokens on a short prompt); the toggle turns it +# on, and depth is set with the TOP-LEVEL OpenAI `reasoning_effort` field — not +# a template kwarg. Only the values that verifiably do something are listed: +# `none` forces thinking off even when the toggle is on, and `max` injects the +# deepest deliberation prompt (7,972 tokens on the same short prompt). +# DeepSeek's docs also name low/high, but the serving engine accepts those as +# no-ops, and a level that changes nothing is not a level. +# +# Deliberation is returned in the message field `reasoning` — vLLM's name, not +# DeepSeek's `reasoning_content`. That is why `interleaved` is the bare flag +# below rather than a field declaration: the schema can only name +# reasoning_content or reasoning_details, and claiming either would point +# clients at an empty key. Returned on both the streaming and non-streaming +# paths, billed as completion tokens. +[[reasoning_options]] +type = "toggle" # API: {"chat_template_kwargs": {"enable_thinking": true}} + +[[reasoning_options]] +type = "effort" # API: top-level {"reasoning_effort": "max"} +values = ["none", "max"] + +# Both fields differ from the base entry, in opposite directions. The context is +# larger — 1_048_576 is the model's full window and what we serve, against the +# base entry's rounded 1_000_000 — while completions are capped at 32_768 rather +# than 384_000. +[limit] +context = 1_048_576 +output = 32_768 + +[provider] +shape = "completions" + +[cost] +input = 0.14 +output = 0.28 +cache_read = 0.035 diff --git a/providers/infersia/models/stepfun-ai/step-3.7-flash.toml b/providers/infersia/models/stepfun-ai/step-3.7-flash.toml index db0460636c..1e792f0eca 100644 --- a/providers/infersia/models/stepfun-ai/step-3.7-flash.toml +++ b/providers/infersia/models/stepfun-ai/step-3.7-flash.toml @@ -4,9 +4,9 @@ # Pricing https://infersia.com/models/stepfun-ai/step-3.7-flash # Limits https://api.infersia.com/v1/models (context_length, max_completion_tokens) # -# Served as StepFun's own NVFP4 release on a single B200 — not a quantisation -# we produced. StepFun publish no NVFP4-vs-BF16 quality delta, so this is not -# claimed as full-precision parity. +# Served as StepFun's own NVFP4 release — not a quantisation we produced. +# StepFun publish no NVFP4-vs-BF16 quality delta, so this is not claimed as +# full-precision parity. # # The directory is `stepfun-ai/` because a provider file's path is that # provider's own API id and we serve this as `stepfun-ai/step-3.7-flash`. The @@ -15,11 +15,11 @@ base_model = "stepfun/step-3.7-flash" # The shared entry sets limit.input = 256_000 alongside its 256_000 context. # [limit] deep-merges, so overriding only `context` and `output` below would -# leave input = 256_000 against a context of 131_072 — an input ceiling larger -# than the whole window. Dropping the inherited field is what the other -# providers of this model do rather than asserting a second number, because the -# real constraint is the single 131_072 window shared between prompt and -# completion, not a separate input cap. +# carry that 256_000 input ceiling onto our 262_144 window and understate what +# a caller may send. Dropping the inherited field is what the other providers +# of this model do rather than asserting a second number, because the real +# constraint is the single 262_144 window shared between prompt and completion, +# not a separate input cap. base_model_omit = ["limit.input"] structured_output = true reasoning = true @@ -32,8 +32,8 @@ reasoning = true type = "effort" # API: {"chat_template_kwargs": {"reasoning_effort": "low"}} values = ["low", "medium", "high"] -# The model's full context, served on a single B200. Output is capped at 32_768, -# which is the only field below the shared entry. +# The model's full context. Output is capped at 32_768, which is the only field +# below the shared entry. [limit] context = 262_144 output = 32_768 From df65ed76f6d5ef64ab0e6d9a576a122c414f5f68 Mon Sep 17 00:00:00 2001 From: PEV123 Date: Sun, 2 Aug 2026 15:11:34 +1000 Subject: [PATCH 3/5] Answer the review: one reasoning shape, override-only files, wire paths up top MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The toggle+effort pair on DeepSeek no longer lists "none" — off is the toggle, not an effort level, and the only depth value that verifiably changes anything is "max". Each file using a template kwarg now states the exact wire path in its leading comment block. The provider files are override-only now: reasoning, identical limits and identical modalities restated from the base entries are dropped and inherited through the merge instead. The 3.6-35B modality narrowing (text+image against the base's four) stays, because it is a real delta. The StepFun cost comment read as citing rates the numbers contradicted; it now says plainly that the authored values are Infersia's own, priced under StepFun's published $0.20/$1.15/$0.04. --- .../models/deepseek/deepseek-v4-flash-0731.toml | 16 +++++++++------- providers/infersia/models/qwen/qwen3-14b.toml | 10 ++++------ providers/infersia/models/qwen/qwen3-8b.toml | 9 +++------ .../infersia/models/qwen/qwen3.6-35b-a3b.toml | 6 +++--- .../models/stepfun-ai/step-3.7-flash.toml | 9 ++++++--- 5 files changed, 25 insertions(+), 25 deletions(-) diff --git a/providers/infersia/models/deepseek/deepseek-v4-flash-0731.toml b/providers/infersia/models/deepseek/deepseek-v4-flash-0731.toml index 77bc0214fa..a518bbbc20 100644 --- a/providers/infersia/models/deepseek/deepseek-v4-flash-0731.toml +++ b/providers/infersia/models/deepseek/deepseek-v4-flash-0731.toml @@ -10,6 +10,10 @@ # # The directory is `deepseek/` because a provider file's path is that provider's # own API id and we serve this as `deepseek/deepseek-v4-flash-0731`. +# +# Toggle: chat_template_kwargs.enable_thinking = true|false (default false) +# Effort: top-level reasoning_effort = "max" (deepest; "low"/"high" are +# accepted by the engine but do not change depth, so they are not listed) base_model = "deepseek/deepseek-v4-flash" name = "DeepSeek V4 Flash 0731" @@ -20,12 +24,10 @@ interleaved = true # Verified against the live endpoint, not transcribed from docs. Thinking # defaults OFF (280 completion tokens on a short prompt); the toggle turns it -# on, and depth is set with the TOP-LEVEL OpenAI `reasoning_effort` field — not -# a template kwarg. Only the values that verifiably do something are listed: -# `none` forces thinking off even when the toggle is on, and `max` injects the -# deepest deliberation prompt (7,972 tokens on the same short prompt). -# DeepSeek's docs also name low/high, but the serving engine accepts those as -# no-ops, and a level that changes nothing is not a level. +# on, and `reasoning_effort = "max"` injects the deepest deliberation prompt +# (7,972 tokens on the same short prompt). Off is the toggle, not an effort +# level, so `none` is not listed; DeepSeek's documented low/high are accepted +# by the engine as no-ops and a level that changes nothing is not a level. # # Deliberation is returned in the message field `reasoning` — vLLM's name, not # DeepSeek's `reasoning_content`. That is why `interleaved` is the bare flag @@ -38,7 +40,7 @@ type = "toggle" # API: {"chat_template_kwargs": {"enable_thinking": true}} [[reasoning_options]] type = "effort" # API: top-level {"reasoning_effort": "max"} -values = ["none", "max"] +values = ["max"] # Both fields differ from the base entry, in opposite directions. The context is # larger — 1_048_576 is the model's full window and what we serve, against the diff --git a/providers/infersia/models/qwen/qwen3-14b.toml b/providers/infersia/models/qwen/qwen3-14b.toml index 5a592d01b0..1da7092c73 100644 --- a/providers/infersia/models/qwen/qwen3-14b.toml +++ b/providers/infersia/models/qwen/qwen3-14b.toml @@ -6,23 +6,21 @@ # # Served AWQ int4 with an fp8 KV cache. The 131_072 window is reached with YaRN # (factor 4.0 over the model's native 32_768) and is verified in service. +# +# Toggle: chat_template_kwargs.enable_thinking = true|false (default false) base_model = "alibaba/qwen3-14b" -reasoning = true # Qwen3 hybrid thinking. Infersia defaults it off, so an ordinary chat turn does # not spend 500-1500 unrequested reasoning tokens; send the kwarg to turn it on. [[reasoning_options]] type = "toggle" # API: {"chat_template_kwargs": {"enable_thinking": true}} +# Only the output ceiling differs from the base entry; context and modalities +# are inherited unchanged. [limit] -context = 131_072 output = 16_384 -[modalities] -input = ["text"] -output = ["text"] - [provider] shape = "completions" diff --git a/providers/infersia/models/qwen/qwen3-8b.toml b/providers/infersia/models/qwen/qwen3-8b.toml index 64429407b1..257740fe4e 100644 --- a/providers/infersia/models/qwen/qwen3-8b.toml +++ b/providers/infersia/models/qwen/qwen3-8b.toml @@ -6,22 +6,19 @@ # # Served AWQ int4 with an fp8 KV cache, at the model's native 32_768 window # rather than the YaRN-extended 131_072 the base entry describes. +# +# Toggle: chat_template_kwargs.enable_thinking = true|false (default false) base_model = "alibaba/qwen3-8b" -reasoning = true # Qwen3 hybrid thinking. Infersia defaults it off, so an ordinary chat turn does # not spend 500-1500 unrequested reasoning tokens; send the kwarg to turn it on. [[reasoning_options]] type = "toggle" # API: {"chat_template_kwargs": {"enable_thinking": true}} +# Only the context differs from the base entry — native window, no YaRN. [limit] context = 32_768 -output = 8_192 - -[modalities] -input = ["text"] -output = ["text"] [provider] shape = "completions" diff --git a/providers/infersia/models/qwen/qwen3.6-35b-a3b.toml b/providers/infersia/models/qwen/qwen3.6-35b-a3b.toml index 8160dd06e9..21e537f5d9 100644 --- a/providers/infersia/models/qwen/qwen3.6-35b-a3b.toml +++ b/providers/infersia/models/qwen/qwen3.6-35b-a3b.toml @@ -6,9 +6,10 @@ # # Served AWQ int4 with an fp8 KV cache. The 262K context is the model's native # window, not a YaRN extension. +# +# Toggle: chat_template_kwargs.enable_thinking = true|false (default false) base_model = "alibaba/qwen3.6-35b-a3b" -reasoning = true # Qwen3 hybrid thinking. Infersia defaults it off, so an ordinary chat turn does # not spend 500-1500 unrequested reasoning tokens; send the kwarg to turn it on. @@ -16,9 +17,8 @@ reasoning = true type = "toggle" # API: {"chat_template_kwargs": {"enable_thinking": true}} # Overrides the base entry's 65_536 output ceiling — Infersia caps completions -# at 32_768 tokens. +# at 32_768 tokens. Context is inherited unchanged. [limit] -context = 262_144 output = 32_768 # Text and image only. The base entry also lists video and audio: the weights diff --git a/providers/infersia/models/stepfun-ai/step-3.7-flash.toml b/providers/infersia/models/stepfun-ai/step-3.7-flash.toml index 1e792f0eca..f3f6f2665d 100644 --- a/providers/infersia/models/stepfun-ai/step-3.7-flash.toml +++ b/providers/infersia/models/stepfun-ai/step-3.7-flash.toml @@ -11,6 +11,9 @@ # The directory is `stepfun-ai/` because a provider file's path is that # provider's own API id and we serve this as `stepfun-ai/step-3.7-flash`. The # shared entry it inherits from is keyed by lab, at models/stepfun/. +# +# Effort: chat_template_kwargs.reasoning_effort = "low"|"medium"|"high" +# (Infersia defaults to "medium" when the caller sends none) base_model = "stepfun/step-3.7-flash" # The shared entry sets limit.input = 256_000 alongside its 256_000 context. @@ -22,7 +25,6 @@ base_model = "stepfun/step-3.7-flash" # not a separate input cap. base_model_omit = ["limit.input"] structured_output = true -reasoning = true # Three depths, set per request. Infersia defaults to "medium" when the caller # sends none — the template only emits its reasoning instruction when the @@ -48,8 +50,9 @@ output = ["text"] [provider] shape = "completions" -# Under StepFun's own published rates ($0.20 / $1.15 / $0.04), which are also -# the median across the providers listed for this model. +# Infersia's rates, authored below. Deliberately under StepFun's own published +# $0.20 / $1.15 / $0.04, which is also the median across the providers listed +# for this model. [cost] input = 0.18 output = 1.05 From 55b67770a4da993fd43975db64097253317ace68 Mon Sep 17 00:00:00 2001 From: PEV123 Date: Tue, 4 Aug 2026 06:12:11 +1000 Subject: [PATCH 4/5] Inherit the canonical 0731 entry instead of restating it MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit #3957 factored DeepSeek V4 Flash 0731 into its own lab entry and moved every provider onto it. This still pointed at the April preview and hand-copied name, description and both dates — which is the same override-only violation the review already raised, arriving by a different route: the fields stopped being deltas when the canonical entry started carrying them. Now inherits `deepseek/deepseek-v4-flash-0731` and keeps only what genuinely differs here: the served window, our completion cap, pricing, and the reasoning controls verified against the endpoint. Also merges dev, so the branch is current. --- .../deepseek/deepseek-v4-flash-0731.toml | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) diff --git a/providers/infersia/models/deepseek/deepseek-v4-flash-0731.toml b/providers/infersia/models/deepseek/deepseek-v4-flash-0731.toml index a518bbbc20..2322697223 100644 --- a/providers/infersia/models/deepseek/deepseek-v4-flash-0731.toml +++ b/providers/infersia/models/deepseek/deepseek-v4-flash-0731.toml @@ -15,11 +15,7 @@ # Effort: top-level reasoning_effort = "max" (deepest; "low"/"high" are # accepted by the engine but do not change depth, so they are not listed) -base_model = "deepseek/deepseek-v4-flash" -name = "DeepSeek V4 Flash 0731" -description = "The official release of DeepSeek-V4-Flash, superseding the preview, with substantially enhanced agentic capabilities. Same structure as DeepSeek-V4-Flash-DSpark — it ships with a speculative decoding module attached." -release_date = "2026-07-31" -last_updated = "2026-07-31" +base_model = "deepseek/deepseek-v4-flash-0731" interleaved = true # Verified against the live endpoint, not transcribed from docs. Thinking @@ -27,11 +23,12 @@ interleaved = true # on, and `reasoning_effort = "max"` injects the deepest deliberation prompt # (7,972 tokens on the same short prompt). Off is the toggle, not an effort # level, so `none` is not listed; DeepSeek's documented low/high are accepted -# by the engine as no-ops and a level that changes nothing is not a level. +# by the engine as no-ops on this stack, and a level that changes nothing is +# not a level. # # Deliberation is returned in the message field `reasoning` — vLLM's name, not # DeepSeek's `reasoning_content`. That is why `interleaved` is the bare flag -# below rather than a field declaration: the schema can only name +# above rather than a field declaration: the schema can only name # reasoning_content or reasoning_details, and claiming either would point # clients at an empty key. Returned on both the streaming and non-streaming # paths, billed as completion tokens. @@ -42,10 +39,9 @@ type = "toggle" # API: {"chat_template_kwargs": {"enable_thinking": true}} type = "effort" # API: top-level {"reasoning_effort": "max"} values = ["max"] -# Both fields differ from the base entry, in opposite directions. The context is -# larger — 1_048_576 is the model's full window and what we serve, against the -# base entry's rounded 1_000_000 — while completions are capped at 32_768 rather -# than 384_000. +# Both differ from the canonical entry, in opposite directions: 1_048_576 is +# the model's full window and what we serve, against a rounded 1_000_000, while +# completions are capped at 32_768 rather than 384_000. [limit] context = 1_048_576 output = 32_768 From 68a58f51b89bcaac02c58183f67fd9c92b0a3e01 Mon Sep 17 00:00:00 2001 From: PEV123 Date: Thu, 6 Aug 2026 14:54:09 +1000 Subject: [PATCH 5/5] Drop step-3.7-flash: no longer served Retired from the live catalogue 2026-08-06; the feed at /v1/models no longer returns it, so the entry would advertise a model the provider does not serve. Co-Authored-By: Claude Opus 5 --- .../models/stepfun-ai/step-3.7-flash.toml | 59 ------------------- 1 file changed, 59 deletions(-) delete mode 100644 providers/infersia/models/stepfun-ai/step-3.7-flash.toml diff --git a/providers/infersia/models/stepfun-ai/step-3.7-flash.toml b/providers/infersia/models/stepfun-ai/step-3.7-flash.toml deleted file mode 100644 index f3f6f2665d..0000000000 --- a/providers/infersia/models/stepfun-ai/step-3.7-flash.toml +++ /dev/null @@ -1,59 +0,0 @@ -# Infersia serving details for StepFun Step 3.7 Flash. -# -# Sources: -# Pricing https://infersia.com/models/stepfun-ai/step-3.7-flash -# Limits https://api.infersia.com/v1/models (context_length, max_completion_tokens) -# -# Served as StepFun's own NVFP4 release — not a quantisation we produced. -# StepFun publish no NVFP4-vs-BF16 quality delta, so this is not claimed as -# full-precision parity. -# -# The directory is `stepfun-ai/` because a provider file's path is that -# provider's own API id and we serve this as `stepfun-ai/step-3.7-flash`. The -# shared entry it inherits from is keyed by lab, at models/stepfun/. -# -# Effort: chat_template_kwargs.reasoning_effort = "low"|"medium"|"high" -# (Infersia defaults to "medium" when the caller sends none) - -base_model = "stepfun/step-3.7-flash" -# The shared entry sets limit.input = 256_000 alongside its 256_000 context. -# [limit] deep-merges, so overriding only `context` and `output` below would -# carry that 256_000 input ceiling onto our 262_144 window and understate what -# a caller may send. Dropping the inherited field is what the other providers -# of this model do rather than asserting a second number, because the real -# constraint is the single 262_144 window shared between prompt and completion, -# not a separate input cap. -base_model_omit = ["limit.input"] -structured_output = true - -# Three depths, set per request. Infersia defaults to "medium" when the caller -# sends none — the template only emits its reasoning instruction when the -# variable is defined, and left undefined the model will occasionally deliberate -# until it hits the token ceiling and returns nothing. -[[reasoning_options]] -type = "effort" # API: {"chat_template_kwargs": {"reasoning_effort": "low"}} -values = ["low", "medium", "high"] - -# The model's full context. Output is capped at 32_768, which is the only field -# below the shared entry. -[limit] -context = 262_144 -output = 32_768 - -# Text and image. The shared entry also lists video: the weights support it, -# this endpoint does not accept it. Image input is verified end to end — base64 -# data URIs and remote URLs, single and multiple images per prompt. -[modalities] -input = ["text", "image"] -output = ["text"] - -[provider] -shape = "completions" - -# Infersia's rates, authored below. Deliberately under StepFun's own published -# $0.20 / $1.15 / $0.04, which is also the median across the providers listed -# for this model. -[cost] -input = 0.18 -output = 1.05 -cache_read = 0.036