{"record":{"id":"812a52a54b258c42","repo":"BerriAI/litellm","slug":"subclasses-must-implement-this-method","errorCode":null,"errorMessage":"Subclasses must implement this method","messagePattern":"Subclasses must implement this method","errorType":"exception","errorClass":"NotImplementedError","httpStatus":null,"severity":"error","filePath":"litellm/llms/base_llm/anthropic_messages/transformation.py","lineNumber":138,"sourceCode":"        Whether the upstream this config routes to executes ``web_search`` tools\n        itself as part of its Anthropic Messages agentic loop.\n\n        The web-search interception handler short-circuits web-search-only\n        requests (running the search itself and returning synthetic results) only\n        for providers that do NOT. Providers whose agentic loop already performs\n        the search plus a follow-up synthesis step (bedrock, vertex_ai, ...)\n        return True so those requests flow through untouched.\n        \"\"\"\n        return True\n\n    def get_async_streaming_response_iterator(\n        self,\n        model: str,\n        httpx_response: httpx.Response,\n        request_body: dict,\n        litellm_logging_obj: LiteLLMLoggingObj,\n    ) -> AsyncIterator:\n        raise NotImplementedError(\"Subclasses must implement this method\")\n\n    def get_error_class(\n        self, error_message: str, status_code: int, headers: dict | httpx.Headers\n    ) -> \"BaseLLMException\":\n        from litellm.llms.base_llm.chat.transformation import BaseLLMException\n\n        return BaseLLMException(message=error_message, status_code=status_code, headers=headers)\n\n    @property\n    def max_retry_on_anthropic_messages_http_error(self) -> int:\n        \"\"\"\n        Max HTTP attempts for /v1/messages when the handler may mutate the body and\n        retry (e.g. strip invalid encrypted thinking signatures after a deployment or\n        credential change).\n        \"\"\"\n        return 2\n\n    def should_retry_anthropic_messages_on_http_error(self, e: httpx.HTTPStatusError, litellm_params: dict) -> bool:","sourceCodeStart":120,"sourceCodeEnd":156,"githubUrl":"https://github.com/BerriAI/litellm/blob/77b7c6c40c0c5aa5fbcb1d6a1825ac39ca8829b8/litellm/llms/base_llm/anthropic_messages/transformation.py#L120-L156","documentation":"Error \"Subclasses must implement this method\" thrown in BerriAI/litellm.","triggerScenarios":"Thrown at litellm/llms/base_llm/anthropic_messages/transformation.py:138 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["This is a base-class method; use a concrete provider subclass that implements it instead of calling the base class."],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"77b7c6c40c0c5aa5fbcb1d6a1825ac39ca8829b8","analyzedAt":"2026-08-18T11:44:31.656Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}