Skip to content

provider: Add Nscale#3246

Open
robputt wants to merge 1 commit into
anomalyco:devfrom
robputt:dev
Open

provider: Add Nscale#3246
robputt wants to merge 1 commit into
anomalyco:devfrom
robputt:dev

Conversation

@robputt

@robputt robputt commented Jul 13, 2026

Copy link
Copy Markdown

Adds Nscale provider and models.

Pricing and model details: https://nscale.com/serverless
API docs: https://docs.nscale.com/docs
Base URL and auth: https://docs.nscale.com/docs/use-cases/chat

@github-actions

Copy link
Copy Markdown
Contributor

Action items

  • [high] [violation] providers/nscale/logo.svg:1 - Check: New provider logo must use currentColor with no fixed size and preferably a square viewBox. Why: The SVG declares width="157" height="89" (fixed size), a non-square viewBox="0 0 157 89", and fill="#111218" on all three paths instead of currentColor, so it will not adapt to light/dark themes and will not scale. A new provider without a compliant logo is a merge blocker. Action: Remove the width/height attributes, switch every fill="#111218" to fill="currentColor", and prefer a square viewBox (e.g. 0 0 24 24 with paths scaled accordingly).
  • [high] [violation] providers/nscale/models/Qwen/Qwen3-235B-A22B.toml:1 - Check: Provider models must use base_model when a matching models/<provider>/<model>.toml entry exists. Why: models/alibaba/qwen3-235b-a22b.toml already defines the provider-agnostic facts for this model (name, description, reasoning, release_date, limit, modalities, open_weights, weights, benchmarks). This file re-declares all of them inline, duplicating catalog metadata. Action: Replace the inline definition with base_model = "alibaba/qwen3-235b-a22b" and keep only provider-specific overrides (reasoning_options, [cost], any [limit] override, and date overrides if needed).
  • [medium] [possible mistake] providers/nscale/models/Qwen/Qwen3-235B-A22B-Instruct-2507.toml:3 - Check: reasoning/reasoning_options must match the served model variant. Why: The Qwen3-235B-A22B-Instruct-2507 is the non-thinking split of the Qwen3 235B family; established providers mark it reasoning = false with no reasoning_options (e.g. providers/togetherai/models/Qwen/Qwen3-235B-A22B-Instruct-2507-tput.toml, providers/nebius/models/Qwen/Qwen3-235B-A22B-Instruct-2507.toml). This file sets reasoning = true with a toggle, which contradicts the catalog convention and is unsupported by any citation. The same applies to Qwen3-4B-Instruct-2507.toml:3. Action: Verify against Nscale's docs which variant is served; if it is the Instruct (non-thinking) variant, set reasoning = false and remove reasoning_options (the schema rejects reasoning_options when reasoning = false).
  • [medium] [violation] providers/nscale/models/Qwen/Qwen3-235B-A22B.toml:5 - Check: Niche-provider reasoning_options toggles must be documented with an adjacent TOML comment giving the exact API request syntax, and be backed by a citation. Why: Every reasoning_options = [{ type = "toggle" }] declaration (in Qwen3-235B-A22B.toml, Qwen3-4B-Thinking-2507.toml, and the three DeepSeek-R1-Distill-*.toml files) has no adjacent comment describing Nscale's toggle syntax and no PR citation showing Nscale exposes one. DeepSeek-R1-Distill and the Qwen3 "Thinking-2507" variant are always-reasoning models that conventionally expose no off toggle (existing distill entries use reasoning_options = []). Action: For each remaining reasoning model, either add an adjacent comment documenting Nscale's exact request syntax (e.g. # API: {"chat_template_kwargs": {"enable_thinking": false}}) plus a source citation, or use reasoning_options = [] when no verified toggle control exists.
  • [medium] [possible mistake] providers/nscale/models/meta-llama/Llama-3.1-8B-Instruct.toml:9 - Check: knowledge (training cutoff) must not post-date release_date. Why: knowledge = "2024-12" is after release_date = "2024-07-23", which is impossible for a training-data cutoff. The same inconsistency appears in Llama-3.2-11B-Vision-Instruct.toml:9 (knowledge = "2024-12" vs release_date = "2024-09-25"). Meta's published cutoff for these families is December 2023. Action: Correct the knowledge values to a date on or before the release date (likely 2023-12), or cite a Nscale/Meta source for a different cutoff.
  • [low] [violation] .pr-review/pull-request.json (PR body) - Check: Data-changing PRs should cite direct provider pricing, model documentation, or API references, with each citation stating what it supports. Why: The body only says "Adds Nscale provider and models." with no links, so pricing (e.g. DeepSeek distill 0.05–0.20, Mixtral 1.20, gpt-oss 0.05–0.40), context limits, capability flags, and the reasoning-toggle claims cannot be reviewed against a source. Action: Add links to Nscale's pricing/model docs and API reference, mapping each to the fields it justifies.

@github-actions

Copy link
Copy Markdown
Contributor

Action items

  • [high] [violation] providers/nscale/models/Qwen/Qwen3-235B-A22B-Instruct-2507.toml:1 - Check: New provider models must use base_model when a matching models/<provider>/<model>.toml exists, instead of duplicating provider-agnostic facts inline. Why: models/alibaba/qwen3-235b-a22b.toml exists for this underlying model, and several existing providers (Scaleway, Friendli, W&B) already serve the Instruct-2507 variant via base_model = "alibaba/qwen3-235b-a22b". W&B specifically demonstrates the correct pattern for the non-thinking variant: base_model plus a reasoning = false override. This file instead re-declares attachment, tool_call, structured_output, temperature, open_weights, modalities, and limit.context verbatim from the metadata entry. Action: Replace the inline definition with base_model = "alibaba/qwen3-235b-a22b", keep reasoning = false (with no reasoning_options), and retain only provider-specific overrides (name, description, release_date, last_updated, [cost], and the limit.input/limit.output overrides).
  • [medium] [possible mistake] providers/nscale/models/openai/gpt-oss-120b.toml:3 (and providers/nscale/models/openai/gpt-oss-20b.toml:3) - Check: reasoning_options must reflect the reasoning controls the inference provider actually exposes. Why: Both files declare reasoning_options = [], but gpt-oss is built around the reasoning_effort parameter (low/medium/high) from the standard OpenAI Chat Completions API, and Nscale uses @ai-sdk/openai-compatible against an OpenAI-compatible endpoint. Five or more other providers serving these same models (Cerebras, Groq, Scaleway, OVHcloud, HuggingFace) expose reasoning_options = [{ type = "effort", values = ["low", "medium", "high"] }], several with first-party doc citations. An empty array is only correct when no caller control is verified, and the strong evidence here suggests control is available. Action: Verify against Nscale's API docs whether reasoning_effort is accepted for gpt-oss; if so, replace reasoning_options = [] with the effort option (and add a leading comment citing the Nscale doc that confirms the parameter).

@github-actions

Copy link
Copy Markdown
Contributor

No actionable findings.

@robputt robputt changed the title Add Nscale Provider provider:Add Nscale Jul 13, 2026
@robputt robputt changed the title provider:Add Nscale provider: Add Nscale Jul 13, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant