{"record":{"id":"3962878770ed8743","repo":"deepseek-ai/deepseek-harness","slug":"unsupported-reasoning-effort-396287","errorCode":"UNSUPPORTED_REASONING_EFFORT","errorMessage":"pi-ai provider \"${model.provider}\" model \"${model.id}\" does not support reasoning effort \"${effort}\"","messagePattern":"pi-ai provider \"(.+?)\" model \"(.+?)\" does not support reasoning effort \"(.+?)\"","errorType":"exception","errorClass":"LlmError","httpStatus":null,"severity":"error","filePath":"packages/llm/llm-pi-ai/src/adapter.ts","lineNumber":162,"sourceCode":"function describableReasoningLevel(\n  model: Model<Api>,\n  effort: ReasoningEffortIdType | ModelThinkingLevel | undefined,\n): ModelThinkingLevel | undefined {\n  if (effort === undefined) return undefined\n  return getSupportedThinkingLevels(model).some(level => level === effort)\n    ? effort as ModelThinkingLevel\n    : undefined\n}\n\n/** Validate an explicit Harness/profile effort without invoking pi-ai's clamp. */\nfunction resolveReasoningLevel(\n  model: Model<Api>,\n  effort: ReasoningEffortIdType | ModelThinkingLevel | undefined,\n): ModelThinkingLevel | undefined {\n  if (effort === undefined) return undefined\n  const supported = getSupportedThinkingLevels(model)\n  if (supported.some(level => level === effort)) return effort as ModelThinkingLevel\n  throw new LlmError(\n    `pi-ai provider \"${model.provider}\" model \"${model.id}\" does not support reasoning effort \"${effort}\"`,\n    'UNSUPPORTED_REASONING_EFFORT',\n  )\n}\n\n/**\n * Selectable reasoning efforts for one model, or nothing at all.\n *\n * A model that carries no reasoning metadata — every hand-declared one, and\n * every catalog model pi-ai marks as non-reasoning — is reported by pi-ai as\n * supporting the single level `off`. Passing that through would offer a control\n * that cannot do what it says: `off` is translated to *omitting* the reasoning\n * option, which for such a model is byte-for-byte the same request as naming no\n * effort — so a provider whose own default is to think would keep thinking with\n * `off` selected. Omitting `reasoning` entirely is the seam's way of saying the\n * capability is unavailable, which leaves the surface offering only the\n * provider's default.\n * @param model - the resolved model descriptor.","sourceCodeStart":144,"sourceCodeEnd":180,"githubUrl":"https://github.com/deepseek-ai/deepseek-harness/blob/b150a551b8d465e31e418e1b2eaf5e79bbb7d28e/packages/llm/llm-pi-ai/src/adapter.ts#L144-L180","documentation":"Error \"pi-ai provider \"${model.provider}\" model \"${model.id}\" does not support reasoning effort \"${effort}\"\" thrown in deepseek-ai/deepseek-harness.","triggerScenarios":"Thrown at packages/llm/llm-pi-ai/src/adapter.ts:162 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Pick a reasoning effort the provider/model supports, or omit it."],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"b150a551b8d465e31e418e1b2eaf5e79bbb7d28e","analyzedAt":"2026-08-24T18:12:29.105Z","schemaVersion":2},"datasetVersion":"2026-08-24T22:17:12.610Z"}