Spaces:
Runtime error
Runtime error
""" | |
Groq API Integration | |
------------------ | |
Handles interactions with the Groq API for language model inference. | |
""" | |
import os | |
import logging | |
from typing import Dict, Any, Optional | |
import requests | |
logger = logging.getLogger(__name__) | |
class GroqAPI: | |
"""Handles interactions with the Groq API.""" | |
def __init__(self, api_key: Optional[str] = None): | |
"""Initialize the Groq API client.""" | |
self.api_key = api_key or os.getenv('GROQ_API_KEY') | |
self.base_url = "https://api.groq.com/v1" | |
self.default_model = "mixtral-8x7b-32768" | |
async def predict(self, prompt: str, model: Optional[str] = None) -> Dict[str, Any]: | |
"""Make a prediction using the Groq API.""" | |
try: | |
if not self.api_key: | |
return { | |
"success": False, | |
"error": "GROQ_API_KEY not set in environment variables", | |
"answer": "Error: GROQ_API_KEY not configured" | |
} | |
headers = { | |
"Authorization": f"Bearer {self.api_key}", | |
"Content-Type": "application/json" | |
} | |
data = { | |
"model": model or self.default_model, | |
"messages": [{"role": "user", "content": prompt}], | |
"temperature": 0.7, | |
"max_tokens": 1000 | |
} | |
response = requests.post( | |
f"{self.base_url}/chat/completions", | |
headers=headers, | |
json=data | |
) | |
if response.status_code == 200: | |
result = response.json() | |
return { | |
"success": True, | |
"answer": result["choices"][0]["message"]["content"] | |
} | |
else: | |
return { | |
"success": False, | |
"error": f"API Error: {response.status_code}", | |
"answer": f"Error: {response.text}" | |
} | |
except Exception as e: | |
logger.error(f"Error calling Groq API: {str(e)}") | |
return { | |
"success": False, | |
"error": str(e), | |
"answer": f"Error: {str(e)}" | |
} | |