import requests import json class Action: def __init__(self): # L'URL interne au réseau Docker défini dans ton compose self.api_url = "http://audio-api:7860/api/predict" async def action(self, body: dict, __user__: dict = None, __event_emitter__=None): # 1. Récupérer le dernier message (le prompt) last_message = body['messages'][-1]['content'] await __event_emitter__({ "type": "status", "data": {"description": "🎵 Génération de la musique en cours...", "done": False} }) try: # 2. Appel au container Audio-API (Gradio/FastAPI) response = requests.post(self.api_url, json={ "data": [last_message, 10] # Prompt + Durée }, timeout=120) if response.status_code == 200: result = response.json() file_url = result['data'][0] # Chemin du .wav généré await __event_emitter__({ "type": "status", "data": {"description": "✅ Musique prête !", "done": True} }) # 3. Envoyer le lien du fichier à l'étudiant return f"Voici votre création : {file_url}" except Exception as e: return f"❌ Erreur de connexion au studio audio : {str(e)}"