@dataclass(init=False)classWrapperModel(Model):"""Model which wraps another model. Does nothing on its own, used as a base class. """wrapped:Model"""The underlying model being wrapped."""def__init__(self,wrapped:Model|KnownModelName):self.wrapped=infer_model(wrapped)asyncdefrequest(self,*args:Any,**kwargs:Any)->tuple[ModelResponse,Usage]:returnawaitself.wrapped.request(*args,**kwargs)@asynccontextmanagerasyncdefrequest_stream(self,messages:list[ModelMessage],model_settings:ModelSettings|None,model_request_parameters:ModelRequestParameters,)->AsyncIterator[StreamedResponse]:asyncwithself.wrapped.request_stream(messages,model_settings,model_request_parameters)asresponse_stream:yieldresponse_streamdefcustomize_request_parameters(self,model_request_parameters:ModelRequestParameters)->ModelRequestParameters:returnself.wrapped.customize_request_parameters(model_request_parameters)@propertydefmodel_name(self)->str:returnself.wrapped.model_name@propertydefsystem(self)->str:returnself.wrapped.systemdef__getattr__(self,item:str):returngetattr(self.wrapped,item)