import cohere, openai, anthropic from settings import COHERE_API_KEY, COHERE_MODEL_PRIMARY, MODEL_SETTINGS, OPENAI_API_KEY, OPENAI_MODEL_FALLBACK, ANTHROPIC_API_KEY, ANTHROPIC_MODEL_FALLBACK def cohere_chat(prompt: str): if not COHERE_API_KEY: return None c=cohere.Client(COHERE_API_KEY) r=c.chat(model=COHERE_MODEL_PRIMARY, message=prompt, temperature=MODEL_SETTINGS["temperature"]) return r.text if hasattr(r,"text") else None def openai_chat(prompt: str): if not OPENAI_API_KEY: return None openai.api_key=OPENAI_API_KEY r=openai.ChatCompletion.create(model=OPENAI_MODEL_FALLBACK, messages=[{"role":"user","content":prompt}]) return r["choices"][0]["message"]["content"] def anthropic_chat(prompt: str): if not ANTHROPIC_API_KEY: return None a=anthropic.Anthropic(api_key=ANTHROPIC_API_KEY) r=a.messages.create(model=ANTHROPIC_MODEL_FALLBACK, messages=[{"role":"user","content":prompt}]) return r.content[0].text def generate_with_fallback(prompt: str): return cohere_chat(prompt) or openai_chat(prompt) or anthropic_chat(prompt) or ""