This repository was archived by the owner on Jul 22, 2025. It is now read-only.
File tree Expand file tree Collapse file tree 3 files changed +40
-12
lines changed Expand file tree Collapse file tree 3 files changed +40
-12
lines changed Original file line number Diff line number Diff line change @@ -213,14 +213,16 @@ def self.edit_images(
213213 )
214214 rescue => e
215215 attempts += 1
216- sleep 2
217- retry if attempts < 3
218- if Rails . env . development? || Rails . env . test?
216+ if !Rails . env . test?
217+ sleep 2
218+ retry if attempts < 3
219+ end
220+ if Rails . env . development?
219221 puts "Error editing image(s) with prompt: #{ prompt } #{ e } "
220222 p e
221223 end
222224 Discourse . warn_exception ( e , message : "Failed to edit image(s) with prompt #{ prompt } " )
223- nil
225+ raise e
224226 end
225227 end
226228
Original file line number Diff line number Diff line change @@ -37,7 +37,7 @@ def prompt
3737 end
3838
3939 def chain_next_response?
40- false
40+ !! @error
4141 end
4242
4343 def image_urls
@@ -50,19 +50,24 @@ def invoke
5050 return { prompt : prompt , error : "No valid images provided" } if image_urls . blank?
5151
5252 sha1s = image_urls . map { |url | Upload . sha1_from_short_url ( url ) } . compact
53-
5453 uploads = Upload . where ( sha1 : sha1s ) . order ( created_at : :asc ) . limit ( 10 ) . to_a
5554
5655 return { prompt : prompt , error : "No valid images provided" } if uploads . blank?
5756
58- result =
59- DiscourseAi ::Inference ::OpenAiImageGenerator . create_edited_upload! (
60- uploads ,
61- prompt ,
62- user_id : bot_user . id ,
63- )
57+ begin
58+ result =
59+ DiscourseAi ::Inference ::OpenAiImageGenerator . create_edited_upload! (
60+ uploads ,
61+ prompt ,
62+ user_id : bot_user . id ,
63+ )
64+ rescue => e
65+ @error = e
66+ return { prompt : prompt , error : e . message }
67+ end
6468
6569 if result . blank?
70+ @error = true
6671 return { prompt : prompt , error : "Something went wrong, could not generate image" }
6772 end
6873
Original file line number Diff line number Diff line change 3535 end
3636
3737 describe "#process" do
38+ it "can reject generation of images and return a proper error to llm" do
39+ error_message = {
40+ error : {
41+ message :
42+ "Your request was rejected as a result of our safety system. Your request may contain content that is not allowed by our safety system." ,
43+ type : "user_error" ,
44+ param : nil ,
45+ code : "moderation_blocked" ,
46+ } ,
47+ }
48+
49+ WebMock . stub_request ( :post , "https://api.openai.com/v1/images/edits" ) . to_return (
50+ status : 400 ,
51+ body : error_message . to_json ,
52+ )
53+
54+ info = edit_image . invoke ( &progress_blk ) . to_json
55+ expect ( info ) . to include ( "Your request was rejected as a result of our safety system." )
56+ expect ( edit_image . chain_next_response? ) . to eq ( true )
57+ end
58+
3859 it "can edit an image with the GPT image model" do
3960 data = [ { b64_json : base64_image , revised_prompt : "image with rainbow added in background" } ]
4061
You can’t perform that action at this time.
0 commit comments