MCPcopy Create free account
hub / github.com/anthropics/anthropic-sdk-python / ModelFallback

Class ModelFallback

tests/test_middleware.py:132–153  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

130
131
132class ModelFallback(Middleware):
133 def __init__(self, fallback_model: str) -> None:
134 self.fallback_model = fallback_model
135
136 def _fallback(self, request: APIRequest) -> APIRequest:
137 body = request.json
138 assert isinstance(body, dict)
139 return request.copy(body={**cast("dict[str, object]", body), "model": self.fallback_model})
140
141 @override
142 def handle(self, request: APIRequest, call_next: CallNext) -> Any:
143 response = call_next(request)
144 if response.status_code == 529:
145 return call_next(self._fallback(request))
146 return response
147
148 @override
149 async def handle_async(self, request: APIRequest, call_next: AsyncCallNext) -> Any:
150 response = await call_next(request)
151 if response.status_code == 529:
152 return await call_next(self._fallback(request))
153 return response
154
155
156class ShrinkMaxTokensOnTooLarge(Middleware):

Calls

no outgoing calls