llm-agent / llm_client.py
=
Initial commit
d40b9df
import os
from typing import Optional
from litellm import completion
from dotenv import load_dotenv
load_dotenv()
class LLMClient:
"""LLM client using LiteLLM"""
def __init__(
self,
model: str = "groq/llama-3.3-70b-versatile",
api_key: Optional[str] = None,
temperature: float = 0.1
):
"""
Initialize LLM client
Args:
model: Model identifier (e.g., "groq/llama-3.3-70b-versatile")
api_key: API key (if None, uses GROQ_API_KEY env var)
temperature: Sampling temperature
"""
self.model = model
self.temperature = temperature
if api_key:
os.environ["GROQ_API_KEY"] = api_key
elif "GROQ_API_KEY" not in os.environ:
api_key = os.getenv("GROQ_API_KEY")
if not api_key:
raise ValueError(
"GROQ_API_KEY not found. Please set it as environment variable "
"or pass as api_key parameter. Get free key from https://console.groq.com/"
)
def generate(
self,
prompt: str,
max_tokens: int = 512,
system_prompt: Optional[str] = None
) -> str:
"""
Generate text using LLM
Args:
prompt: User prompt
max_tokens: Maximum tokens to generate
system_prompt: Optional system prompt
Returns:
Generated text
"""
messages = []
if system_prompt:
messages.append({"role": "system", "content": system_prompt})
messages.append({"role": "user", "content": prompt})
try:
response = completion(
model=self.model,
messages=messages,
temperature=self.temperature,
max_tokens=max_tokens
)
return response.choices[0].message.content
except Exception as e:
raise Exception(f"Error calling LLM: {str(e)}")