Spaces:
Runtime error
Runtime error
| from smolagents import Tool | |
| import os | |
| import asyncio | |
| from ressources_getter import save_file, \ | |
| get_prompt_with_file_content, extract_text_from_file, convert_excel_to_text, delete_tmp_files | |
| from hf_api import get_file_by_task_id | |
| from agent_websearch import create_wikipedia_agent | |
| from agent_multimedia import create_multimedia_agent | |
| from agent_code import create_code_analyzer_agent | |
| from smolagents import ToolCallingAgent, LiteLLMModel | |
| from dotenv import load_dotenv | |
| load_dotenv() | |
| agent_wikipedia = create_wikipedia_agent() | |
| agent_multimedia = create_multimedia_agent() | |
| agent_code = create_code_analyzer_agent() | |
| gemini_flash_manager_model = LiteLLMModel(model_id="gemini/gemini-2.5-flash", api_key=os.getenv("GOOGLE_API_KEY")) | |
| manager_agent = ToolCallingAgent( | |
| tools=[extract_text_from_file,convert_excel_to_text,delete_tmp_files], # Les agents workers sont des outils pour le manager | |
| model=gemini_flash_manager_model, | |
| managed_agents=[agent_wikipedia,agent_multimedia,agent_code], | |
| name="manager_agent", | |
| description=( | |
| "Je suis un agent manager. Mon rôle est de comprendre les requêtes complexes, " | |
| "de les décomposer en tâches plus petites et de déléguer ces tâches " | |
| "aux agents spécialisés (WikiAgent) pour obtenir la meilleure réponse. " | |
| "Je coordonne leurs actions et synthétise les résultats." | |
| "Le résultat final est une réponse concise et directe à la requête de l'utilisateur. Si la requête applique un resultat numérique, on ne retourne que le nombre." | |
| "Après avoir répondu à la requête, je supprime les fichiers temporaires téléchargés pour économiser de l'espace disque avec l'outil delete_tmp_files." | |
| "Si tu ne trouve pas une réponse satisfaisante sous 5 étapes ou que tu n'as pas les outils pour y répondre, renvoie une chaine de caractères vide." | |
| ) | |
| ) | |
| # Pour interagir avec l'agent manager | |
| async def run_multi_agent_system(prompt: str): | |
| print(f"\nRequête au Manager : {prompt}") | |
| return manager_agent.run(prompt,max_steps=5) | |
| class BasicAgent: | |
| task_id:str | |
| file_content_type:str | |
| agent = manager_agent | |
| def __init__(self): | |
| print("BasicAgent initialized.") | |
| def __call__(self, question: str, task_id :str) -> str: | |
| print(f"Agent received question (first 50 chars): {question[:50]}...") | |
| file_bytes,file_name=get_file_by_task_id(task_id) | |
| print(file_name) | |
| file_path = save_file(file_bytes,file_name) | |
| prompt = get_prompt_with_file_content(question,file_path) | |
| answer = asyncio.run(run_multi_agent_system(prompt)) | |
| print(f"Agent returning fixed answer: {answer}") | |
| return answer | |
| # if __name__ == "__main__": | |
| # agent = BasicAgent() | |
| # question = ".rewsna eht sa 'tfel' drow eht fo etisoppo eht etirw ,ecnetnes siht dnatsrednu uoy fI" | |
| # task_id = "2d83110e-a098-4ebb-9987-066c06fa42d0" | |
| # response = agent(question,task_id) | |
| # print(response) |