{"record":{"id":"3ef740b2d8af4372","repo":"sgl-project/sglang","slug":"inkling-reasoning-effort-must-be-finite-and-in-0","errorCode":null,"errorMessage":"Inkling reasoning_effort must be finite and in [0.0, 0.99]","messagePattern":"Inkling reasoning_effort must be finite and in \\[0\\.0, 0\\.99\\]","errorType":"validation","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"python/sglang/srt/parser/inkling_renderer.py","lineNumber":257,"sourceCode":"            if not isinstance(text, str):\n                raise TypeError(\"Inkling thinking part payload must be a string\")\n            yield (\"thinking\", text)\n        elif ptype in _IMAGE_PART_TYPES:\n            yield (\"image\", \"\")\n        elif ptype in _AUDIO_PART_TYPES:\n            yield (\"audio\", \"\")\n        else:\n            raise ValueError(f\"unsupported content part type: {ptype!r}\")\n\n\ndef _format_reasoning_effort(reasoning_effort: float) -> str:\n    if isinstance(reasoning_effort, bool) or not isinstance(\n        reasoning_effort, (int, float)\n    ):\n        raise TypeError(\"Inkling reasoning_effort must be a number\")\n    value = float(reasoning_effort)\n    if not math.isfinite(value) or not 0.0 <= value <= 0.99:\n        raise ValueError(\"Inkling reasoning_effort must be finite and in [0.0, 0.99]\")\n    return f\"{round(value, 2):g}\"\n\n\ndef _expect_role(message: Mapping[str, Any]) -> str:\n    role = message.get(\"role\")\n    if role not in ROLE_MESSAGE_TOKENS:\n        raise ValueError(\n            f\"unsupported Inkling message role {role!r}; expected one of {sorted(ROLE_MESSAGE_TOKENS)}\"\n        )\n    return str(role)\n\n\ndef _as_mapping(value: Any) -> Mapping[str, Any]:\n    if isinstance(value, Mapping):\n        return value\n    if hasattr(value, \"model_dump\"):\n        dumped = value.model_dump()\n        if isinstance(dumped, Mapping):","sourceCodeStart":239,"sourceCodeEnd":275,"githubUrl":"https://github.com/sgl-project/sglang/blob/0132848349585cfe6aae51c4941cbae872505f8a/python/sglang/srt/parser/inkling_renderer.py#L239-L275","documentation":"reasoning_effort must be a finite float within [0.0, 0.99]. NaN, infinity, negative values, or values >= 1.0 raise ValueError. The upper bound 0.99 leaves room for the renderer's own maximum-effort directive.","triggerScenarios":"Passing reasoning_effort=1.0, 1.5, -0.1, float('nan'), or float('inf') to append_effort/chat kwargs.","commonSituations":"Users assuming a 0–1 or 0–100 scale; normalizing 'max' effort to 1.0.","solutions":["Clamp reasoning_effort to [0.0, 0.99], e.g. min(max(v,0.0),0.99)","Use 0.99 for maximum effort"],"exampleFix":"# before\nreasoning_effort=1.0\n# after\nreasoning_effort=0.99","handlingStrategy":"validation","validationCode":"import math\nif effort is not None:\n    assert math.isfinite(effort) and 0.0 <= effort <= 0.99, effort","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Clamp: effort = min(max(float(effort), 0.0), 0.99)","Remember the max is 0.99, not 1.0"],"tags":["inkling","reasoning-effort","range-validation"],"backgroundTag":"value-out-of-range","analyzedSha":"0132848349585cfe6aae51c4941cbae872505f8a","analyzedAt":"2026-08-28T05:10:05.995Z","schemaVersion":2},"datasetVersion":"2026-08-28T06:17:29.519Z"}