From f304b93c6805f92e114c9e7868b4c33f1befafd1 Mon Sep 17 00:00:00 2001 From: Slavi Pantaleev Date: Sat, 3 May 2025 09:23:57 +0300 Subject: [PATCH] Improve in-room error reporting details when image generation fails MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit What previously was a generic error message like: > ⚠️ Error: An error occurred while processing your message. Please try again. .. now becomes a much more helpful error message like: > ⚠️ Error: There was a problem performing image-generation via the room-local/my-openai-agent agent: > > invalid_request_error: Invalid value: 'standard'. Supported values are: 'low', 'medium', 'high', and 'auto'. (param: quality) (code: invalid_value) Related to https://github.com/etkecc/baibot/issues/40 --- src/controller/image/generation.rs | 60 ++++++++++++++++++++++++++++-- 1 file changed, 56 insertions(+), 4 deletions(-) diff --git a/src/controller/image/generation.rs b/src/controller/image/generation.rs index a14a0b0..b3c58a7 100644 --- a/src/controller/image/generation.rs +++ b/src/controller/image/generation.rs @@ -64,11 +64,37 @@ pub async fn handle_image( agent_id = agent.identifier().as_string() ); - let response = agent + let result = agent .controller() .generate_image(&prompt, ImageGenerationParams::default()) .instrument(span) - .await?; + .await; + + let response = match result { + Ok(response) => response, + Err(err) => { + tracing::warn!( + "Error in room {} while trying to generate image via agent {}: {:?}", + message_context.room_id(), + agent.identifier(), + err, + ); + + bot.messaging() + .send_error_markdown_no_fail( + message_context.room(), + &strings::agent::error_while_serving_purpose( + agent.identifier(), + &AgentPurpose::ImageGeneration, + &err, + ), + response_type, + ) + .await; + + return Ok(()); + } + }; let actual_prompt = response.revised_prompt.as_deref().unwrap_or(&prompt); @@ -155,11 +181,37 @@ pub async fn handle_sticker( .with_cheaper_model_switching_allowed(true) .with_cheaper_quality_switching_allowed(true); - let response = agent + let result = agent .controller() .generate_image(original_prompt, params) .instrument(span) - .await?; + .await; + + let response = match result { + Ok(response) => response, + Err(err) => { + tracing::warn!( + "Error in room {} while trying to generate sticker via agent {}: {:?}", + message_context.room_id(), + agent.identifier(), + err, + ); + + bot.messaging() + .send_error_markdown_no_fail( + message_context.room(), + &strings::agent::error_while_serving_purpose( + agent.identifier(), + &AgentPurpose::ImageGeneration, + &err, + ), + response_type, + ) + .await; + + return Ok(()); + } + }; let attachment_body_text = format!( "generated-sticker.{}",