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/deepseek/deepseek-v4-flash-0731.toml b/providers/infersia/models/deepseek/deepseek-v4-flash-0731.toml new file mode 100644 index 0000000000..2322697223 --- /dev/null +++ b/providers/infersia/models/deepseek/deepseek-v4-flash-0731.toml @@ -0,0 +1,55 @@ +# 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`. +# +# 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-0731" +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 `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 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 +# 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. +[[reasoning_options]] +type = "toggle" # API: {"chat_template_kwargs": {"enable_thinking": true}} + +[[reasoning_options]] +type = "effort" # API: top-level {"reasoning_effort": "max"} +values = ["max"] + +# 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 + +[provider] +shape = "completions" + +[cost] +input = 0.14 +output = 0.28 +cache_read = 0.035 diff --git a/providers/infersia/models/qwen/qwen3-14b.toml b/providers/infersia/models/qwen/qwen3-14b.toml new file mode 100644 index 0000000000..1da7092c73 --- /dev/null +++ b/providers/infersia/models/qwen/qwen3-14b.toml @@ -0,0 +1,30 @@ +# 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. +# +# Toggle: chat_template_kwargs.enable_thinking = true|false (default false) + +base_model = "alibaba/qwen3-14b" + +# 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] +output = 16_384 + +[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..257740fe4e --- /dev/null +++ b/providers/infersia/models/qwen/qwen3-8b.toml @@ -0,0 +1,29 @@ +# 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. +# +# Toggle: chat_template_kwargs.enable_thinking = true|false (default false) + +base_model = "alibaba/qwen3-8b" + +# 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 + +[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..21e537f5d9 --- /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. +# +# Toggle: chat_template_kwargs.enable_thinking = true|false (default false) + +base_model = "alibaba/qwen3.6-35b-a3b" + +# 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. Context is inherited unchanged. +[limit] +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/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"