Spaces:
Sleeping
Sleeping
| from typing import Optional, Generator | |
| from groq import Groq | |
| class LLMHandler: | |
| def __init__( | |
| self, | |
| api_key: str, | |
| model: str = "llama-3.1-8b-instant", | |
| temperature: float = 0.1, | |
| max_tokens: int = 2048, | |
| timeout: int = 10, | |
| ): | |
| if not api_key: | |
| raise ValueError( | |
| "GROQ_API_KEY is not set. Set it via environment variable or config." | |
| ) | |
| self.client = Groq(api_key=api_key, timeout=timeout) | |
| self.model = model | |
| self.temperature = temperature | |
| self.max_tokens = max_tokens | |
| def generate(self, prompt: str) -> Optional[str]: | |
| try: | |
| response = self.client.chat.completions.create( | |
| model=self.model, | |
| messages=[{"role": "user", "content": prompt}], | |
| temperature=self.temperature, | |
| max_tokens=self.max_tokens, | |
| ) | |
| return response.choices[0].message.content | |
| except Exception as e: | |
| return None | |
| def generate_stream(self, prompt: str) -> Generator[str, None, None]: | |
| try: | |
| stream = self.client.chat.completions.create( | |
| model=self.model, | |
| messages=[{"role": "user", "content": prompt}], | |
| temperature=self.temperature, | |
| max_tokens=self.max_tokens, | |
| stream=True, | |
| ) | |
| for chunk in stream: | |
| delta = chunk.choices[0].delta.content if chunk.choices else "" | |
| if delta: | |
| yield delta | |
| except Exception as e: | |
| yield f"[Error: {e}]" | |