fix:expose unsupported tool use error (#1293)

This commit is contained in:
Yingjie He
2025-02-19 09:37:38 -08:00
committed by GitHub
parent 534fddd58a
commit 67883ca3c7
+13 -10
View File
@@ -58,24 +58,27 @@ pub async fn handle_response_openai_compat(response: Response) -> Result<Value,
StatusCode::BAD_REQUEST => { StatusCode::BAD_REQUEST => {
let mut message = "Unknown error".to_string(); let mut message = "Unknown error".to_string();
if let Some(error) = payload.get("error") { if let Some(error) = payload.get("error") {
tracing::debug!("Bad Request Error: {error:?}"); tracing::debug!("Bad Request Error: {error:?}");
message = error message = error
.get("message") .get("message")
.and_then(|m| m.as_str()) .and_then(|m| m.as_str())
.unwrap_or("Unknown error") .unwrap_or("Unknown error")
.to_string(); .to_string();
if let Some(code) = error.get("code").and_then(|c| c.as_str()) { if let Some(code) = error.get("code").and_then(|c| c.as_str()) {
if code == "context_length_exceeded" || code == "string_above_max_length" { if code == "context_length_exceeded" || code == "string_above_max_length" {
return Err(ProviderError::ContextLengthExceeded(message)); return Err(ProviderError::ContextLengthExceeded(message));
}
} }
} }
}
tracing::debug!( tracing::debug!(
"{}", format!("Provider request failed with status: {}. Payload: {:?}", status, payload) "{}", format!("Provider request failed with status: {}. Payload: {:?}", status, payload)
); );
Err(ProviderError::RequestFailed(format!("Request failed with status: {}. Message: {}", status, message))) Err(ProviderError::RequestFailed(format!("Request failed with status: {}. Message: {}", status, message)))
} }
StatusCode::NOT_FOUND => {
Err(ProviderError::RequestFailed(format!("{:?}", payload)))
}
StatusCode::TOO_MANY_REQUESTS => { StatusCode::TOO_MANY_REQUESTS => {
Err(ProviderError::RateLimitExceeded(format!("{:?}", payload))) Err(ProviderError::RateLimitExceeded(format!("{:?}", payload)))
} }