import os import asyncio from groq import AsyncGroq from app.utils.key_manager import key_manager import logging logger = logging.getLogger(__name__) async def get_groq_completion(messages: list, model: str = None) -> str: if model is None: model = os.getenv("GROQ_MODEL", "llama3-70b-8192") max_retries = len(key_manager.keys) last_error = None for _ in range(max_retries): try: api_key = key_manager.get_next_key() client = AsyncGroq(api_key=api_key) response = await client.chat.completions.create( messages=messages, model=model, temperature=0.7, ) return response.choices[0].message.content except Exception as e: logger.warning(f"Error using key: {e}. Retrying with next key...") last_error = e continue raise Exception(f"All API keys exhausted or failed. Last error: {last_error}")