@@ -84,18 +84,20 @@ def map_agent_inference_error(
8484 RuntimeError: Re-raised when ``exc`` is a non-agent ``RuntimeError`` that is
8585 not a recognized context-length failure.
8686 """
87- if isinstance (exc , AgentRunError ):
88- return map_pydantic_agent_run_error (exc , model_id )
89- if isinstance (exc , APIStatusError ):
90- return handle_known_apistatus_errors (exc , model_id )
91- if isinstance (exc , APIConnectionError ):
92- return ServiceUnavailableResponse (
93- backend_name = "Llama Stack" ,
94- cause = str (exc ),
95- )
96- if isinstance (exc , RuntimeError ) and is_context_length_error (str (exc )):
97- return PromptTooLongResponse (model = model_id )
98- return InternalServerErrorResponse .generic ()
87+ match exc :
88+ case AgentRunError () as agent_exc :
89+ return map_pydantic_agent_run_error (agent_exc , model_id )
90+ case APIStatusError () as status_exc :
91+ return handle_known_apistatus_errors (status_exc , model_id )
92+ case APIConnectionError () as connection_exc :
93+ return ServiceUnavailableResponse (
94+ backend_name = "Llama Stack" ,
95+ cause = str (connection_exc ),
96+ )
97+ case RuntimeError () as runtime_exc if is_context_length_error (str (runtime_exc )):
98+ return PromptTooLongResponse (model = model_id )
99+ case _:
100+ return InternalServerErrorResponse .generic ()
99101
100102
101103def map_pydantic_agent_run_error (
@@ -110,26 +112,26 @@ def map_pydantic_agent_run_error(
110112 Returns:
111113 Structured error response for HTTP or SSE error events.
112114 """
113- if isinstance (exc , ContentFilterError ):
114- return InternalServerErrorResponse .query_failed (str (exc ))
115- if isinstance (exc , IncompleteToolCall ):
116- return PromptTooLongResponse (model = model_id )
117- if isinstance (exc , UnexpectedModelBehavior ):
118- return PromptTooLongResponse (model = model_id )
119- if isinstance (exc , UsageLimitExceeded ):
120- return QuotaExceededResponse .model (model_id )
121- if isinstance (exc , ModelHTTPError ):
122- if is_context_length_error (str (exc )):
115+ match exc :
116+ case ContentFilterError () as filter_exc :
117+ return InternalServerErrorResponse .query_failed (str (filter_exc ))
118+ case IncompleteToolCall () | UnexpectedModelBehavior ():
123119 return PromptTooLongResponse (model = model_id )
124- if exc . status_code == 429 :
120+ case UsageLimitExceeded () :
125121 return QuotaExceededResponse .model (model_id )
126- return InternalServerErrorResponse .generic ()
127- if isinstance (exc , ModelAPIError ):
128- return ServiceUnavailableResponse (
129- backend_name = "Llama Stack" ,
130- cause = str (exc ),
131- )
132- return InternalServerErrorResponse .query_failed (str (exc ))
122+ case ModelHTTPError () as http_exc if is_context_length_error (str (http_exc )):
123+ return PromptTooLongResponse (model = model_id )
124+ case ModelHTTPError (status_code = 429 ):
125+ return QuotaExceededResponse .model (model_id )
126+ case ModelHTTPError ():
127+ return InternalServerErrorResponse .generic ()
128+ case ModelAPIError () as api_exc :
129+ return ServiceUnavailableResponse (
130+ backend_name = "Llama Stack" ,
131+ cause = str (api_exc ),
132+ )
133+ case _:
134+ return InternalServerErrorResponse .query_failed (str (exc ))
133135
134136
135137def get_agent_finish_reason (response : ModelResponse ) -> AgentFinishReason :
0 commit comments