amkyawdev-coder-backend / src /services /groq_service.py
amkyawdev's picture
HARDFIX: Force llama-3.1-8b-instant model everywhere - 70B deprecated
8b37747 verified
Raw
History Blame Contribute Delete
2.16 kB
"""
Groq API Service - LLM Integration
"""
from groq import Groq
from typing import Optional, List, Dict, Any
from src.config.settings import settings
from src.api.core.logger import logger
client: Optional[Groq] = None
# Default model - MUST use 8B as 70B is deprecated
DEFAULT_MODEL = "llama-3.1-8b-instant"
def get_groq_client() -> Groq:
"""Get or create Groq client instance"""
global client
if client is None:
client = Groq(api_key=settings.GROQ_API_KEY or "dummy")
return client
async def generate_response(
messages: List[Dict[str, str]],
model: str = None,
temperature: float = 0.7,
max_tokens: int = 4096,
) -> str:
"""
Generate response using Groq API
"""
try:
groq_client = get_groq_client()
# Use DEFAULT_MODEL - 70b is deprecated!
model_name = model or getattr(settings, 'GROQ_MODEL', DEFAULT_MODEL) or DEFAULT_MODEL
print(f"[DEBUG] Using model: {model_name}")
response = groq_client.chat.completions.create(
model=model_name,
messages=messages,
temperature=temperature,
max_tokens=max_tokens,
)
return response.choices[0].message.content
except Exception as e:
logger.error(f"Groq API error: {str(e)}")
raise
async def stream_response(
messages: List[Dict[str, str]],
model: str = None,
temperature: float = 0.7,
) -> str:
"""Stream response from Groq API"""
try:
groq_client = get_groq_client()
model_name = model or getattr(settings, 'GROQ_MODEL', DEFAULT_MODEL) or DEFAULT_MODEL
stream = groq_client.chat.completions.create(
model=model_name,
messages=messages,
temperature=temperature,
stream=True,
)
full_response = ""
for chunk in stream:
if chunk.choices[0].delta.content:
full_response += chunk.choices[0].delta.content
return full_response
except Exception as e:
logger.error(f"Groq streaming error: {str(e)}")
raise