feat(providers): add Infersia provider profile - #78038
Conversation
Infersia serves open-weight models on dedicated GPUs through an
OpenAI-compatible chat-completions endpoint. Two files, no core changes,
per plugins/model-providers/README.md.
Verified against the live endpoint rather than transcribed from docs:
supports_vision=True — an image inside a tool-result message is
accepted, tested with a multipart tool message against the served
vision model (Step 3.7 Flash).
supports_prompt_cache_key=False — prefix caching is automatic and
unkeyed. The endpoint tolerates the field rather than honouring it,
and the flag is documented as opt-in for endpoints that explicitly
accept it, so setting it would advertise behaviour that does not
exist.
fallback_models=() — following the DeepInfra profile's reasoning: the
live catalogue at {base_url}/models is authoritative and returns
OpenAI-shaped entries with pricing and context_length. An empty
picker on a failed fetch beats routing someone to a retired id, and
this catalogue is still changing week to week.
default_aux_model is the only hardcoded model id, since aux resolution
is synchronous. /models answers unauthenticated, so the doctor probe
works before a key is configured.
supports_vision was justified by a check against Step 3.7 Flash, which we retired today. The flag is still correct — qwen/qwen3.6-35b-a3b accepts image input — but the comment pointed at a model that no longer exists, so the claim was unverifiable by anyone reading it. Re-ran the check against the live endpoint: a two-pixel test image sent as a base64 data URI to qwen/qwen3.6-35b-a3b came back correctly described. Comment now names that model and that date. No functional change; fallback_models stays empty so the live catalogue remains the source of truth. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
|
Small follow-up: Re-verified against the live endpoint (a two-pixel base64 data URI came back correctly described) and updated the comment to name the model and date. No functional change; One note for the runtime path: that catalogue now also contains a reranker, which answers |
fallback_models is empty here, so whatever fetch_models returns is exactly
what the picker shows. The catalogue at {base_url}/models describes the whole
account rather than one endpoint, so it also carries a reranker
(/v1/rerank) and two audio models (/v1/audio/transcriptions,
/v1/audio/speech). Selecting one of those would send a chat completion to a
route that does not answer it.
An OpenAI-shaped model object has no capability field, so the entry alone
cannot say which route serves it. The architecture block does, and the test
is text on BOTH sides: a chat model takes text in and emits text out.
Checking the output side alone is not enough — speech-to-text is audio->text,
so its output modality is ["text"] and it passes a one-sided test.
Written as an allow-list, so a modality this profile has not been taught
about drops out of the picker rather than appearing and failing on first use.
Verified against the live catalogue: 8 entries in, the 5 chat models out.
|
Pushed I said a reranker "is distinguishable by The correct test is The commit implements it in the plugin rather than asking for anything from core: Two decisions worth surfacing:
Worth noting this is a general property of OpenAI-shaped Checks with your pinned tooling: Disclosure: I work on Infersia. |
Adds Infersia as a model provider profile: two files under
plugins/model-providers/infersia/, no core changes, perplugins/model-providers/README.md.Affiliation: I work on Infersia.
Duplicate check: no existing issues or PRs mention Infersia.
What it is
Open-weight models served on dedicated GPUs through an OpenAI-compatible chat-completions endpoint. Every model publishes the exact quantisation served, the hardware behind it, and measured latency and uptime — catalogue at https://infersia.com/models.
The reason it may be worth having alongside the existing profiles: DeepSeek V4 Flash is served at its full 1,048,576-token window, where most pools cap the same model at 262,144. A 260,000-token request answers in about 20 seconds.
The judgement calls, and how they were settled
Each flag was tested against the live endpoint rather than taken from docs:
supports_vision=True— verified by sending an image inside a tool-result message (multipartimage_urlpart) to the served vision model, Step 3.7 Flash. Accepted.supports_prompt_cache_key=False— prefix caching here is automatic and unkeyed. The endpoint tolerates aprompt_cache_keyfield rather than honouring it, and the flag is documented as opt-in for endpoints that explicitly accept it, so settingTruewould advertise behaviour that doesn't exist. (Noted perf(transport): capability-gated prompt_cache_key for Chat Completions (#56798 salvage) #77609 landing the capability gate for this.)fallback_models=()— following the DeepInfra profile's reasoning. The live catalogue at{base_url}/modelsis authoritative and returns OpenAI-shaped entries includingpricingandcontext_length. An empty picker on a failed fetch beats routing someone to an id that has since been retired, and this catalogue is still changing week to week.default_aux_model="qwen/qwen3-8b"— the only hardcoded model id, since aux resolution is synchronous. Smallest model in the catalogue./v1/modelsanswers unauthenticated, so thedoctorhealth probe works before a key is configured.Models
deepseek/deepseek-v4-flash-0731(1M context) ·stepfun-ai/step-3.7-flash(262K, vision) ·qwen/qwen3.6-35b-a3b·qwen/qwen3-14b·qwen/qwen3-8b. All support tool calling. A:freesuffix selects a rate-limited free variant where one is published, so a user can try before configuring billing.Keys: https://infersia.com/dashboard/keys