sgl-project/sglang · error · ValueError

invalid Inkling reasoning_effort: {value!r}

Error message

invalid Inkling reasoning_effort: {value!r}

What it means

For Inkling models, a string reasoning_effort that is neither a recognized label (none/minimal/low/medium/high/...) nor coercible by float() raises this error. Labels are looked up in _EFFORT_MAP; other strings fall through to numeric parsing which then fails.

Source

Thrown at python/sglang/srt/entrypoints/openai/serving_chat.py:666

            parsed = float(value)
            if not math.isfinite(parsed) or not 0.0 <= parsed <= 0.99:
                raise ValueError("Inkling reasoning_effort must be in [0.0, 0.99]")
            return parsed
        _EFFORT_MAP = {
            "none": 0.0,
            "minimal": 0.1,
            "low": 0.2,
            "medium": 0.7,
            "high": 0.9,
            "xhigh": 0.99,
            "max": 0.99,
        }
        if value in _EFFORT_MAP:
            return _EFFORT_MAP[value]
        try:
            parsed = float(value)
        except (ValueError, TypeError) as exc:
            raise ValueError(f"invalid Inkling reasoning_effort: {value!r}") from exc
        if not math.isfinite(parsed) or not 0.0 <= parsed <= 0.99:
            raise ValueError("Inkling reasoning_effort must be in [0.0, 0.99]")
        return parsed

    @staticmethod
    def _get_inkling_default_reasoning_effort() -> float:
        """Read the default Inkling reasoning effort from the environment."""
        from sglang.srt.environ import envs

        val = envs.SGLANG_INKLING_DEFAULT_REASONING_EFFORT.get()
        if not val:
            return 0.9
        try:
            parsed = float(val)
        except (ValueError, TypeError) as exc:
            raise ValueError(
                "SGLANG_INKLING_DEFAULT_REASONING_EFFORT must be numeric"
            ) from exc

View on GitHub (pinned to 0132848349)

Solutions

  1. Use a supported label: none, minimal, low, medium, high (and other map keys)
  2. Or use a numeric string like "0.7"
  3. Check the _EFFORT_MAP keys in serving_chat.py for the exact supported labels

Example fix

// before
{"reasoning_effort": "ultra"}
// after
{"reasoning_effort": "high"}
Defensive patterns

Strategy: validation

Validate before calling

LABELS = {"none","minimal","low","medium","high"}
if isinstance(effort, str) and effort not in LABELS:
    float(effort)  # must be numeric string, else fix

Type guard

def valid_inkling_effort_str(s, labels={"none","minimal","low","medium","high"}):
    if s in labels: return True
    try: return 0.0 <= float(s) <= 0.99
    except ValueError: return False

Prevention

When it happens

Trigger: reasoning_effort='ultra' or 'very high' on an Inkling model — unknown label and not a numeric string.

Common situations: Using model-specific labels from a different backend; typo in 'medium'; passing model names or free-text descriptors as effort.

Related errors


AI-assisted analysis of sgl-project/sglang@0132848349 (2026-08-28). Data as JSON: /api/errors/1daa89db520ad4c5. Report an issue: GitHub.