WilliamRabuel commited on
Commit
b22877c
·
verified ·
1 Parent(s): 73d57b5

Update agent.py

Browse files
Files changed (1) hide show
  1. agent.py +62 -62
agent.py CHANGED
@@ -208,68 +208,68 @@ class BasicAgent:
208
  self.agent = None
209
 
210
 
211
- def __call__(self, question: str, metadata: dict = None) -> str:
212
- """
213
- Le point d'entrée de l'agent. Gère la pré-analyse en utilisant les métadonnées fournies.
214
- """
215
- if self.agent is None:
216
- return "Erreur: L'agent n'a pas pu être initialisé."
 
 
217
 
218
- print(f"\n{'='*40}\n🤖 NOUVELLE QUESTION: {question}\n{'='*40}")
219
-
220
- augmented_prompt = question
 
221
 
222
- if metadata:
223
- url_from_meta = metadata.get("url") or metadata.get("video_url") or metadata.get("image_url")
224
-
225
- if url_from_meta:
226
- print(f"🔗 URL trouvée dans les métadonnées : {url_from_meta}")
227
- context_from_url = ""
228
-
229
- # On vérifie si l'URL est une image
230
- image_extensions = ['.jpg', '.jpeg', '.png', '.gif', '.bmp', '.webp']
231
- is_image = any(url_from_meta.lower().endswith(ext) for ext in image_extensions)
232
-
233
- # logique images
234
- if is_image:
235
- print("🖼️ C'est une URL d'image, analyse avec le modèle de vision...")
236
- try:
237
- vision_model = ModelManager().get_vision_model()
238
- # On demande au modèle de vision de décrire l'image en détail
239
- # pour aider l'agent principal à répondre à la question.
240
- vision_response = vision_model.generate(
241
- [{"role": "user", "content": [
242
- {"type": "text", "text": f"Describe this image in detail. This description will be used to answer the following question: '{question}'"},
243
- {"type": "image_url", "image_url": {"url": url_from_meta}}
244
- ]}]
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
245
  )
246
- context_from_url = f"Here is a detailed description of the image provided:\n{vision_response.content}"
247
- print("✅ Description de l'image obtenue.")
248
- except Exception as e:
249
- error_msg = f"Erreur lors de l'analyse de l'image : {e}"
250
- print(f"❌ {error_msg}")
251
- context_from_url = error_msg
252
-
253
- # logique vidéos
254
- elif url_from_meta.startswith("http://googleusercontent.com/youtube.com/"):
255
- print("📹 C'est une URL YouTube, récupération de la transcription...")
256
- transcript_result = get_youtube_transcript(url_from_meta)
257
- if "error" in transcript_result:
258
- context_from_url = f"Error getting transcript: {transcript_result['error']}"
259
- else:
260
- context_from_url = f"Here is the transcript of the video:\n{transcript_result['transcript']}"
261
-
262
- # On construit le prompt augmenté pour l'agent
263
- if context_from_url:
264
- augmented_prompt = (
265
- f"CONTEXTUAL INFORMATION:\n---\n{context_from_url}\n---\n"
266
- f"Based on the context above, please answer the following question:\n{question}"
267
- )
268
- print(f"✨ Prompt augmenté pour l'agent.")
269
-
270
- try:
271
- return self.agent.run(augmented_prompt)
272
- except Exception as e:
273
- import traceback
274
- print(f"❌ Erreur irrécupérable lors du traitement par MonAgent: {e}\n{traceback.format_exc()}")
275
- return f"Une erreur irrécupérable s'est produite: {e}"
 
208
  self.agent = None
209
 
210
 
211
+ def __call__(self, question: str, metadata: dict = None) -> str:
212
+ """
213
+ Le point d'entrée de l'agent. Gère la pré-analyse en utilisant les métadonnées fournies.
214
+ """
215
+ if self.agent is None:
216
+ return "Erreur: L'agent n'a pas pu être initialisé."
217
+
218
+ print(f"\n{'='*40}\n🤖 NOUVELLE QUESTION: {question}\n{'='*40}")
219
 
220
+ augmented_prompt = question
221
+
222
+ if metadata:
223
+ url_from_meta = metadata.get("url") or metadata.get("video_url") or metadata.get("image_url")
224
 
225
+ if url_from_meta:
226
+ print(f"🔗 URL trouvée dans les métadonnées : {url_from_meta}")
227
+ context_from_url = ""
228
+
229
+ # On vérifie si l'URL est une image
230
+ image_extensions = ['.jpg', '.jpeg', '.png', '.gif', '.bmp', '.webp']
231
+ is_image = any(url_from_meta.lower().endswith(ext) for ext in image_extensions)
232
+
233
+ # logique images
234
+ if is_image:
235
+ print("🖼️ C'est une URL d'image, analyse avec le modèle de vision...")
236
+ try:
237
+ vision_model = ModelManager().get_vision_model()
238
+ # On demande au modèle de vision de décrire l'image en détail
239
+ # pour aider l'agent principal à répondre à la question.
240
+ vision_response = vision_model.generate(
241
+ [{"role": "user", "content": [
242
+ {"type": "text", "text": f"Describe this image in detail. This description will be used to answer the following question: '{question}'"},
243
+ {"type": "image_url", "image_url": {"url": url_from_meta}}
244
+ ]}]
245
+ )
246
+ context_from_url = f"Here is a detailed description of the image provided:\n{vision_response.content}"
247
+ print("✅ Description de l'image obtenue.")
248
+ except Exception as e:
249
+ error_msg = f"Erreur lors de l'analyse de l'image : {e}"
250
+ print(f"❌ {error_msg}")
251
+ context_from_url = error_msg
252
+
253
+ # logique vidéos
254
+ elif url_from_meta.startswith("http://googleusercontent.com/youtube.com/"):
255
+ print("📹 C'est une URL YouTube, récupération de la transcription...")
256
+ transcript_result = get_youtube_transcript(url_from_meta)
257
+ if "error" in transcript_result:
258
+ context_from_url = f"Error getting transcript: {transcript_result['error']}"
259
+ else:
260
+ context_from_url = f"Here is the transcript of the video:\n{transcript_result['transcript']}"
261
+
262
+ # On construit le prompt augmenté pour l'agent
263
+ if context_from_url:
264
+ augmented_prompt = (
265
+ f"CONTEXTUAL INFORMATION:\n---\n{context_from_url}\n---\n"
266
+ f"Based on the context above, please answer the following question:\n{question}"
267
  )
268
+ print(f" Prompt augmenté pour l'agent.")
269
+
270
+ try:
271
+ return self.agent.run(augmented_prompt)
272
+ except Exception as e:
273
+ import traceback
274
+ print(f"❌ Erreur irrécupérable lors du traitement par MonAgent: {e}\n{traceback.format_exc()}")
275
+ return f"Une erreur irrécupérable s'est produite: {e}"