From d771cc125f74a41b2d11c4be4ba961d93134909e Mon Sep 17 00:00:00 2001 From: Salman Mohammed Date: Sat, 25 Jan 2025 23:24:49 -0500 Subject: [PATCH] fix: check context length exceeded phrases on lowercased response (#771) --- crates/goose/src/providers/databricks.rs | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/crates/goose/src/providers/databricks.rs b/crates/goose/src/providers/databricks.rs index 35811ddf9c..6737d06901 100644 --- a/crates/goose/src/providers/databricks.rs +++ b/crates/goose/src/providers/databricks.rs @@ -163,15 +163,17 @@ impl DatabricksProvider { } StatusCode::BAD_REQUEST => { // Databricks provides a generic 'error' but also includes 'external_model_message' which is provider specific - // we try our best to extract the error message from the payload - let payload_str = serde_json::to_string(&payload).unwrap_or_default(); - if payload_str.contains("too long") - || payload_str.contains("context length") - || payload_str.contains("context_length_exceeded") - || payload_str.contains("reduce the length") - || payload_str.contains("token count") - || payload_str.contains("exceeds") - { + // We try to extract the error message from the payload and check for phrases that indicate context length exceeded + let payload_str = serde_json::to_string(&payload).unwrap_or_default().to_lowercase(); + let check_phrases = [ + "too long", + "context length", + "context_length_exceeded", + "reduce the length", + "token count", + "exceeds", + ]; + if check_phrases.iter().any(|c| payload_str.contains(c)) { return Err(ProviderError::ContextLengthExceeded(payload_str)); }