fix: improve configure process with error message (#919)
This commit is contained in:
@@ -80,10 +80,11 @@ impl AnthropicProvider {
|
||||
Status: {}. Response: {:?}", status, payload)))
|
||||
}
|
||||
StatusCode::BAD_REQUEST => {
|
||||
let mut error_msg = "Unknown error".to_string();
|
||||
if let Some(payload) = &payload {
|
||||
if let Some(error) = payload.get("error") {
|
||||
tracing::debug!("Bad Request Error: {error:?}");
|
||||
let error_msg = error.get("message").and_then(|m| m.as_str()).unwrap_or("Unknown error");
|
||||
error_msg = error.get("message").and_then(|m| m.as_str()).unwrap_or("Unknown error").to_string();
|
||||
if error_msg.to_lowercase().contains("too long") || error_msg.to_lowercase().contains("too many") {
|
||||
return Err(ProviderError::ContextLengthExceeded(error_msg.to_string()));
|
||||
}
|
||||
@@ -91,7 +92,7 @@ impl AnthropicProvider {
|
||||
tracing::debug!(
|
||||
"{}", format!("Provider request failed with status: {}. Payload: {:?}", status, payload)
|
||||
);
|
||||
Err(ProviderError::RequestFailed(format!("Request failed with status: {}", status)))
|
||||
Err(ProviderError::RequestFailed(format!("Request failed with status: {}. Message: {}", status, error_msg)))
|
||||
}
|
||||
StatusCode::TOO_MANY_REQUESTS => {
|
||||
Err(ProviderError::RateLimitExceeded(format!("{:?}", payload)))
|
||||
|
||||
@@ -177,10 +177,15 @@ impl DatabricksProvider {
|
||||
return Err(ProviderError::ContextLengthExceeded(payload_str));
|
||||
}
|
||||
|
||||
let mut error_msg = "Unknown error".to_string();
|
||||
if let Some(payload) = &payload {
|
||||
error_msg = payload.get("message").and_then(|m| m.as_str()).unwrap_or("Unknown error").to_string();
|
||||
}
|
||||
|
||||
tracing::debug!(
|
||||
"{}", format!("Provider request failed with status: {}. Payload: {:?}", status, payload)
|
||||
);
|
||||
Err(ProviderError::RequestFailed(format!("Request failed with status: {}", status)))
|
||||
Err(ProviderError::RequestFailed(format!("Request failed with status: {}. Message: {}", status, error_msg)))
|
||||
}
|
||||
StatusCode::TOO_MANY_REQUESTS => {
|
||||
Err(ProviderError::RateLimitExceeded(format!("{:?}", payload)))
|
||||
|
||||
@@ -86,9 +86,10 @@ impl GoogleProvider {
|
||||
Status: {}. Response: {:?}", status, payload )))
|
||||
}
|
||||
StatusCode::BAD_REQUEST => {
|
||||
let mut error_msg = "Unknown error".to_string();
|
||||
if let Some(payload) = &payload {
|
||||
if let Some(error) = payload.get("error") {
|
||||
let error_msg = error.get("message").and_then(|m| m.as_str()).unwrap_or("Unknown error");
|
||||
error_msg = error.get("message").and_then(|m| m.as_str()).unwrap_or("Unknown error").to_string();
|
||||
let error_status = error.get("status").and_then(|s| s.as_str()).unwrap_or("Unknown status");
|
||||
if error_status == "INVALID_ARGUMENT" && error_msg.to_lowercase().contains("exceeds") {
|
||||
return Err(ProviderError::ContextLengthExceeded(error_msg.to_string()));
|
||||
@@ -98,7 +99,7 @@ impl GoogleProvider {
|
||||
tracing::debug!(
|
||||
"{}", format!("Provider request failed with status: {}. Payload: {:?}", status, payload)
|
||||
);
|
||||
Err(ProviderError::RequestFailed(format!("Request failed with status: {}", status)))
|
||||
Err(ProviderError::RequestFailed(format!("Request failed with status: {}. Message: {}", status, error_msg)))
|
||||
}
|
||||
StatusCode::TOO_MANY_REQUESTS => {
|
||||
Err(ProviderError::RateLimitExceeded(format!("{:?}", payload)))
|
||||
|
||||
@@ -49,18 +49,18 @@ pub async fn handle_response_openai_compat(response: Response) -> Result<Value,
|
||||
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:?}");
|
||||
if let Some(code) = error.get("code").and_then(|c| c.as_str()) {
|
||||
if code == "context_length_exceeded" || code == "string_above_max_length" {
|
||||
let message = 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));
|
||||
}
|
||||
}
|
||||
@@ -68,7 +68,7 @@ pub async fn handle_response_openai_compat(response: Response) -> Result<Value,
|
||||
tracing::debug!(
|
||||
"{}", format!("Provider request failed with status: {}. Payload: {:?}", status, payload)
|
||||
);
|
||||
Err(ProviderError::RequestFailed(format!("Request failed with status: {}", status)))
|
||||
Err(ProviderError::RequestFailed(format!("Request failed with status: {}. Message: {}", status, message)))
|
||||
}
|
||||
StatusCode::TOO_MANY_REQUESTS => {
|
||||
Err(ProviderError::RateLimitExceeded(format!("{:?}", payload)))
|
||||
|
||||
Reference in New Issue
Block a user