Voiid-m commited on
Commit
44705bb
·
verified ·
1 Parent(s): 8fcb115

Display img

Browse files
Files changed (1) hide show
  1. Gradio_UI.py +58 -47
Gradio_UI.py CHANGED
@@ -162,17 +162,12 @@ def stream_to_gradio(
162
  content=f"**Final answer:**\n{final_answer.to_string()}\n",
163
  )
164
  elif isinstance(final_answer, AgentImage):
165
- # DEBUG : afficher ce que renvoie to_string()
166
- debug_str = final_answer.to_string()
167
  yield gr.ChatMessage(
168
  role="assistant",
169
- content=f"AgentImage.to_string() = {debug_str}",
170
- )
171
- # puis essayer de l'interpréter comme chemin d'image
172
- yield gr.ChatMessage(
173
- role="assistant",
174
- content={"path": debug_str, "mime_type": "image/png"},
175
- )
176
  elif isinstance(final_answer, AgentAudio):
177
  yield gr.ChatMessage(
178
  role="assistant",
@@ -196,15 +191,20 @@ class GradioUI:
196
  if not os.path.exists(file_upload_folder):
197
  os.mkdir(file_upload_folder)
198
 
199
- def interact_with_agent(self, prompt, messages):
200
- import gradio as gr
 
 
 
 
 
 
 
 
 
 
201
 
202
- messages.append(gr.ChatMessage(role="user", content=prompt))
203
- yield messages
204
- for msg in stream_to_gradio(self.agent, task=prompt, reset_agent_memory=False):
205
- messages.append(msg)
206
- yield messages
207
- yield messages
208
 
209
  def upload_file(
210
  self,
@@ -266,38 +266,49 @@ class GradioUI:
266
  )
267
 
268
  def launch(self, **kwargs):
269
- import gradio as gr
270
 
271
- with gr.Blocks(fill_height=True) as demo:
272
- stored_messages = gr.State([])
273
- file_uploads_log = gr.State([])
274
- chatbot = gr.Chatbot(
275
- label="Agent",
276
- type="messages",
277
- avatar_images=(
278
- None,
279
- "https://huggingface.co/datasets/agents-course/course-images/resolve/main/en/communication/Alfred.png",
280
- ),
281
- resizeable=True,
282
- scale=1,
 
 
 
 
 
 
 
 
 
 
 
 
 
 
283
  )
284
- # If an upload folder is provided, enable the upload feature
285
- if self.file_upload_folder is not None:
286
- upload_file = gr.File(label="Upload a file")
287
- upload_status = gr.Textbox(label="Upload Status", interactive=False, visible=False)
288
- upload_file.change(
289
- self.upload_file,
290
- [upload_file, file_uploads_log],
291
- [upload_status, file_uploads_log],
292
- )
293
- text_input = gr.Textbox(lines=1, label="Chat Message")
294
- text_input.submit(
295
- self.log_user_message,
296
- [text_input, file_uploads_log],
297
- [stored_messages, text_input],
298
- ).then(self.interact_with_agent, [stored_messages, chatbot], [chatbot])
299
-
300
- demo.launch(debug=True, share=True, **kwargs)
301
 
302
 
303
  __all__ = ["stream_to_gradio", "GradioUI"]
 
162
  content=f"**Final answer:**\n{final_answer.to_string()}\n",
163
  )
164
  elif isinstance(final_answer, AgentImage):
165
+ # Ici, on suppose que final_answer.to_string() renvoie un chemin sur disque
166
+ image_path = final_answer.to_string()
167
  yield gr.ChatMessage(
168
  role="assistant",
169
+ content=f"Image générée : {image_path}",
170
+ ), image_path
 
 
 
 
 
171
  elif isinstance(final_answer, AgentAudio):
172
  yield gr.ChatMessage(
173
  role="assistant",
 
191
  if not os.path.exists(file_upload_folder):
192
  os.mkdir(file_upload_folder)
193
 
194
+ def interact_with_agent(self, prompt, messages, current_image):
195
+ import gradio as gr
196
+
197
+ messages.append(gr.ChatMessage(role="user", content=prompt))
198
+ yield messages, current_image
199
+
200
+ new_image = current_image
201
+ for msg, image_path in stream_to_gradio(self.agent, task=prompt, reset_agent_memory=False):
202
+ messages.append(msg)
203
+ if image_path is not None:
204
+ new_image = image_path
205
+ yield messages, new_image
206
 
207
+ yield messages, new_image
 
 
 
 
 
208
 
209
  def upload_file(
210
  self,
 
266
  )
267
 
268
  def launch(self, **kwargs):
269
+ import gradio as gr
270
 
271
+ with gr.Blocks(fill_height=True) as demo:
272
+ stored_messages = gr.State([])
273
+ file_uploads_log = gr.State([])
274
+ current_image = gr.State(None)
275
+
276
+ chatbot = gr.Chatbot(
277
+ label="Agent",
278
+ type="messages",
279
+ avatar_images=(
280
+ None,
281
+ "https://huggingface.co/datasets/agents-course/course-images/resolve/main/en/communication/Alfred.png",
282
+ ),
283
+ resizeable=True,
284
+ scale=2,
285
+ )
286
+
287
+ # Composant image dédié
288
+ image_output = gr.Image(label="Dernière image générée", visible=True)
289
+
290
+ if self.file_upload_folder is not None:
291
+ upload_file = gr.File(label="Upload a file")
292
+ upload_status = gr.Textbox(label="Upload Status", interactive=False, visible=False)
293
+ upload_file.change(
294
+ self.upload_file,
295
+ [upload_file, file_uploads_log],
296
+ [upload_status, file_uploads_log],
297
  )
298
+
299
+ text_input = gr.Textbox(lines=1, label="Chat Message")
300
+
301
+ text_input.submit(
302
+ self.log_user_message,
303
+ [text_input, file_uploads_log],
304
+ [stored_messages, text_input],
305
+ ).then(
306
+ self.interact_with_agent,
307
+ [stored_messages, chatbot, current_image],
308
+ [chatbot, image_output], # <= chatbot + image
309
+ )
310
+
311
+ demo.launch(debug=True, share=True, **kwargs)
 
 
 
312
 
313
 
314
  __all__ = ["stream_to_gradio", "GradioUI"]