Production_Rag / llm_handler.py
TharaKavin's picture
Upload 17 files
6f94597 verified
Raw
History Blame Contribute Delete
1.65 kB
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}]"