From 67883ca3c737690a09fe4b84b7056dceb3d6be58 Mon Sep 17 00:00:00 2001 From: Yingjie He Date: Wed, 19 Feb 2025 09:37:38 -0800 Subject: [PATCH] fix:expose unsupported tool use error (#1293) --- crates/goose/src/providers/utils.rs | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/crates/goose/src/providers/utils.rs b/crates/goose/src/providers/utils.rs index 8b84bff7..65502617 100644 --- a/crates/goose/src/providers/utils.rs +++ b/crates/goose/src/providers/utils.rs @@ -58,24 +58,27 @@ pub async fn handle_response_openai_compat(response: Response) -> Result { let mut message = "Unknown error".to_string(); if let Some(error) = payload.get("error") { - tracing::debug!("Bad Request Error: {error:?}"); - message = error - .get("message") - .and_then(|m| m.as_str()) - .unwrap_or("Unknown error") - .to_string(); + tracing::debug!("Bad Request Error: {error:?}"); + message = error + .get("message") + .and_then(|m| m.as_str()) + .unwrap_or("Unknown error") + .to_string(); - if let Some(code) = error.get("code").and_then(|c| c.as_str()) { - if code == "context_length_exceeded" || code == "string_above_max_length" { - return Err(ProviderError::ContextLengthExceeded(message)); + if let Some(code) = error.get("code").and_then(|c| c.as_str()) { + if code == "context_length_exceeded" || code == "string_above_max_length" { + return Err(ProviderError::ContextLengthExceeded(message)); + } } } - } tracing::debug!( "{}", format!("Provider request failed with status: {}. Payload: {:?}", status, payload) ); Err(ProviderError::RequestFailed(format!("Request failed with status: {}. Message: {}", status, message))) } + StatusCode::NOT_FOUND => { + Err(ProviderError::RequestFailed(format!("{:?}", payload))) + } StatusCode::TOO_MANY_REQUESTS => { Err(ProviderError::RateLimitExceeded(format!("{:?}", payload))) }