import requests import os import logging class GroqClient: def __init__(self, plm): os.environ["GROQ_API_KEY"] = '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' # Fetch API Key from environment variables for security api_key = os.getenv("GROQ_API_KEY") # Fetch from environment if not api_key: raise ValueError("GROQ_API_KEY is not set. Please add it in Hugging Face Secrets.") # Explicitly set it self.api_key = api_key self.model = plm self.api_url = "https://api.groq.com/openai/v1/chat/completions" self.headers = { "Authorization": f"Bearer {self.api_key}", "Content-Type": "application/json" } # Set up logging self.logger = logging.getLogger(__name__) logging.basicConfig(level=logging.INFO) def generate(self, text, temperature=0.7, system=""): messages = [] if system: messages.append({"role": "system", "content": system}) messages.append({"role": "user", "content": text}) payload = { "model": self.model, "messages": messages, "temperature": temperature } try: # Adding a timeout to avoid hanging indefinitely response = requests.post(self.api_url, headers=self.headers, json=payload, timeout=30) response.raise_for_status() # Raise an exception for HTTP errors (4xx, 5xx) response_json = response.json() if "choices" in response_json and response_json["choices"]: return response_json["choices"][0].get("message", {}).get("content", "") else: self.logger.error(f"Unexpected response format: {response_json}") return "" except requests.exceptions.RequestException as e: self.logger.error(f"Request failed: {e}") return ""