import os from dotenv import load_dotenv from openai import OpenAI from groq import Groq from google import genai load_dotenv() local_client = OpenAI(base_url="http://192.168.1.20:11434/v1", api_key="ollama") groq_client = Groq(api_key=os.getenv("GROQ_API_KEY")) gemini_client = genai.Client(api_key=os.getenv("GEMINI_API_KEY")) def interroger_gemini_cascade(prompt): modeles_a_tester = ["gemini-3.1-pro-preview", "gemini-3.1-pro", "gemini-2.5-pro", "gemini-3.7-flash", "gemini-3.6-flash"] for nom_modele in modeles_a_tester: try: config = {"system_instruction": "Réponds toujours dans la langue de l'utilisateur. Utilise exclusivement le format Markdown pour les tableaux et la mise en forme. N'utilise JAMAIS de code LaTeX."} chat = gemini_client.chats.create(model=nom_modele, config=config) ia_response = chat.send_message(prompt) if not ia_response.text: raise Exception("Réponse vide de Google.") return ia_response.text, nom_modele except Exception: continue raise Exception("Tous les modèles Gemini sont indisponibles actuellement.") def appeler_groq_api(prompt_text): # 🔄 Cascade de secours automatique pour les modèles Groq modeles_groq_a_tester = ["llama-3.3-70b-versatile", "llama-3.1-8b-instant", "llama3-70b-8192"] for nom_modele in modeles_groq_a_tester: try: resp = groq_client.chat.completions.create( messages=[{"role": "system", "content": "Réponds dans la langue de l'utilisateur. Tu as accès aux recherches web fournies. Utilise uniquement Markdown. Pas de code LaTeX."}, {"role": "user", "content": prompt_text}], model=nom_modele ) if resp and resp.choices: return resp.choices[0].message.content, "#f97316", "GROQ", nom_modele except Exception: continue raise Exception("Tous les modèles Groq sont décommissionnés ou indisponibles.")