{"record":{"id":"396858f9b5191907","repo":"BerriAI/litellm","slug":"completion-response-error-396858","errorCode":null,"errorMessage":"completion_response[\"error\"]","messagePattern":"completion_response\\[\"error\"\\]","errorType":"exception","errorClass":"OobaboogaError","httpStatus":null,"severity":"error","filePath":"litellm/llms/oobabooga/chat/transformation.py","lineNumber":58,"sourceCode":"        encoding: Any,\n        api_key: str | None = None,\n        json_mode: bool | None = None,\n    ) -> ModelResponse:\n        ## LOGGING\n        logging_obj.post_call(\n            input=messages,\n            api_key=api_key,\n            original_response=raw_response.text,\n            additional_args={\"complete_input_dict\": request_data},\n        )\n\n        ## RESPONSE OBJECT\n        try:\n            completion_response: Final = raw_response.json()\n        except Exception:\n            raise OobaboogaError(message=raw_response.text, status_code=raw_response.status_code)\n        if \"error\" in completion_response:\n            raise OobaboogaError(\n                message=completion_response[\"error\"],\n                status_code=raw_response.status_code,\n            )\n        else:\n            try:\n                model_response.choices[0].message.content = completion_response[\"choices\"][0][\"message\"][\"content\"]\n            except Exception as e:\n                raise OobaboogaError(\n                    message=str(e),\n                    status_code=raw_response.status_code,\n                )\n\n        model_response.created = int(time.time())\n        model_response.model = model\n        usage: Final = Usage(\n            prompt_tokens=completion_response[\"usage\"][\"prompt_tokens\"],\n            completion_tokens=completion_response[\"usage\"][\"completion_tokens\"],\n            total_tokens=completion_response[\"usage\"][\"total_tokens\"],","sourceCodeStart":40,"sourceCodeEnd":76,"githubUrl":"https://github.com/BerriAI/litellm/blob/6c2dcb801bf2b75c18f1bb24140e7cf57465cc4d/litellm/llms/oobabooga/chat/transformation.py#L40-L76","documentation":"After successfully parsing the oobabooga chat response as JSON, the transformation checks for an 'error' key. If the JSON body carries an error payload (even with HTTP 200), an OobaboogaError is raised with that error text and the upstream status code. This is a pass-through of an in-body error from text-generation-webui.","triggerScenarios":"The webui returns 200 with {\"error\": {\"message\": ...}} or {\"error\": \"...\"} — typical for internal generation failures, invalid parameters accepted at HTTP level, or generation stopped by content filters.","commonSituations":"Server-side generation aborts (max_new_tokens misconfigured, model unloaded mid-request), or API extension versions that report errors in-body rather than via status codes.","solutions":["Read the error message — it is verbatim from the webui and identifies the failing parameter or condition.","Reproduce with curl to see the full body; simplify generation parameters (stop, max_tokens) to isolate the trigger.","Update text-generation-webui / its OpenAI extension if error reporting looks malformed."],"exampleFix":null,"handlingStrategy":"try-catch","validationCode":null,"typeGuard":null,"tryCatchPattern":"try:\n    resp = litellm.completion(model=\"oobabooga/m\", messages=msgs, api_base=base)\nexcept Exception as e:\n    if getattr(e, \"status_code\", None) == 400 and \"error\" in str(e):\n        # in-body error from the webui: message is verbatim\n        log_and_alert(str(e))","preventionTips":["Simplify generation params when debugging in-body errors","Keep webui and its OpenAI extension updated in lockstep","Log full response bodies for oobabooga errors"],"tags":["oobabooga","upstream-error","chat"],"backgroundTag":null,"analyzedSha":"6c2dcb801bf2b75c18f1bb24140e7cf57465cc4d","analyzedAt":"2026-08-15T07:12:03.035Z","schemaVersion":2},"datasetVersion":"2026-08-15T17:31:12.345Z"}