From 1af67846f0a3273960297680c3384c3592a20df5 Mon Sep 17 00:00:00 2001 From: Alice Hau <110418948+ahau-square@users.noreply.github.com> Date: Tue, 11 Feb 2025 13:23:32 -0500 Subject: [PATCH] chore: Change no usage found warning to a debug trace (#1192) --- crates/goose/src/providers/azure.rs | 2 +- crates/goose/src/providers/databricks.rs | 2 +- .../goose/src/providers/formats/anthropic.rs | 2 +- crates/goose/src/providers/formats/google.rs | 2 +- crates/goose/src/providers/groq.rs | 2 +- crates/goose/src/providers/ollama.rs | 2 +- crates/goose/src/providers/openai.rs | 2 +- crates/goose/src/providers/openrouter.rs | 2 +- crates/goose/src/providers/utils.rs | 32 ++++++++++--------- 9 files changed, 25 insertions(+), 23 deletions(-) diff --git a/crates/goose/src/providers/azure.rs b/crates/goose/src/providers/azure.rs index eef2b46c..db826a9d 100644 --- a/crates/goose/src/providers/azure.rs +++ b/crates/goose/src/providers/azure.rs @@ -124,7 +124,7 @@ impl Provider for AzureProvider { let usage = match get_usage(&response) { Ok(usage) => usage, Err(ProviderError::UsageError(e)) => { - tracing::warn!("Failed to get usage data: {}", e); + tracing::debug!("Failed to get usage data: {}", e); Usage::default() } Err(e) => return Err(e), diff --git a/crates/goose/src/providers/databricks.rs b/crates/goose/src/providers/databricks.rs index 2ed09a18..6c6569d7 100644 --- a/crates/goose/src/providers/databricks.rs +++ b/crates/goose/src/providers/databricks.rs @@ -253,7 +253,7 @@ impl Provider for DatabricksProvider { let usage = match get_usage(&response) { Ok(usage) => usage, Err(ProviderError::UsageError(e)) => { - tracing::warn!("Failed to get usage data: {}", e); + tracing::debug!("Failed to get usage data: {}", e); Usage::default() } Err(e) => return Err(e), diff --git a/crates/goose/src/providers/formats/anthropic.rs b/crates/goose/src/providers/formats/anthropic.rs index 336b8a16..224630b0 100644 --- a/crates/goose/src/providers/formats/anthropic.rs +++ b/crates/goose/src/providers/formats/anthropic.rs @@ -215,7 +215,7 @@ pub fn get_usage(data: &Value) -> Result { Ok(Usage::new(input_tokens, output_tokens, total_tokens)) } else { - tracing::warn!( + tracing::debug!( "Failed to get usage data: {}", ProviderError::UsageError("No usage data found in response".to_string()) ); diff --git a/crates/goose/src/providers/formats/google.rs b/crates/goose/src/providers/formats/google.rs index 02b64ddd..6f2f5a2a 100644 --- a/crates/goose/src/providers/formats/google.rs +++ b/crates/goose/src/providers/formats/google.rs @@ -255,7 +255,7 @@ pub fn get_usage(data: &Value) -> Result { .map(|v| v as i32); Ok(Usage::new(input_tokens, output_tokens, total_tokens)) } else { - tracing::warn!( + tracing::debug!( "Failed to get usage data: {}", ProviderError::UsageError("No usage data found in response".to_string()) ); diff --git a/crates/goose/src/providers/groq.rs b/crates/goose/src/providers/groq.rs index f0c3ace4..d245aa29 100644 --- a/crates/goose/src/providers/groq.rs +++ b/crates/goose/src/providers/groq.rs @@ -142,7 +142,7 @@ impl Provider for GroqProvider { let usage = match get_usage(&response) { Ok(usage) => usage, Err(ProviderError::UsageError(e)) => { - tracing::warn!("Failed to get usage data: {}", e); + tracing::debug!("Failed to get usage data: {}", e); Usage::default() } Err(e) => return Err(e), diff --git a/crates/goose/src/providers/ollama.rs b/crates/goose/src/providers/ollama.rs index b7432f6e..e05b64ee 100644 --- a/crates/goose/src/providers/ollama.rs +++ b/crates/goose/src/providers/ollama.rs @@ -199,7 +199,7 @@ impl Provider for OllamaProvider { let usage = match get_usage(&response) { Ok(usage) => usage, Err(ProviderError::UsageError(e)) => { - tracing::warn!("Failed to get usage data: {}", e); + tracing::debug!("Failed to get usage data: {}", e); Usage::default() } Err(e) => return Err(e), diff --git a/crates/goose/src/providers/openai.rs b/crates/goose/src/providers/openai.rs index 35149bff..c575b382 100644 --- a/crates/goose/src/providers/openai.rs +++ b/crates/goose/src/providers/openai.rs @@ -121,7 +121,7 @@ impl Provider for OpenAiProvider { let usage = match get_usage(&response) { Ok(usage) => usage, Err(ProviderError::UsageError(e)) => { - tracing::warn!("Failed to get usage data: {}", e); + tracing::debug!("Failed to get usage data: {}", e); Usage::default() } Err(e) => return Err(e), diff --git a/crates/goose/src/providers/openrouter.rs b/crates/goose/src/providers/openrouter.rs index abdc4d4c..290bc03f 100644 --- a/crates/goose/src/providers/openrouter.rs +++ b/crates/goose/src/providers/openrouter.rs @@ -225,7 +225,7 @@ impl Provider for OpenRouterProvider { let usage = match get_usage(&response) { Ok(usage) => usage, Err(ProviderError::UsageError(e)) => { - tracing::warn!("Failed to get usage data: {}", e); + tracing::debug!("Failed to get usage data: {}", e); Usage::default() } Err(e) => return Err(e), diff --git a/crates/goose/src/providers/utils.rs b/crates/goose/src/providers/utils.rs index 5b965c01..e7011411 100644 --- a/crates/goose/src/providers/utils.rs +++ b/crates/goose/src/providers/utils.rs @@ -40,31 +40,33 @@ pub fn convert_image(image: &ImageContent, image_format: &ImageFormat) -> Value pub async fn handle_response_openai_compat(response: Response) -> Result { let status = response.status(); // Try to parse the response body as JSON (if applicable) - let payload: Option = response.json().await.ok(); + let payload = match response.json::().await { + Ok(json) => json, + Err(e) => return Err(ProviderError::RequestFailed(e.to_string())), + }; match status { - StatusCode::OK => payload.ok_or_else( || ProviderError::RequestFailed("Response body is not valid JSON".to_string()) ), + StatusCode::OK => Ok(payload), StatusCode::UNAUTHORIZED | StatusCode::FORBIDDEN => { Err(ProviderError::Authentication(format!("Authentication failed. Please ensure your API keys are valid and have the required permissions. \ Status: {}. Response: {:?}", status, payload))) } StatusCode::BAD_REQUEST => { let mut message = "Unknown error".to_string(); - if let Some(payload) = &payload { - 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(); + 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(); - 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) );