Spaces:
Sleeping
Sleeping
File size: 1,495 Bytes
4db2d34 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 | """backend/core/llm.py — LLM factory supporting Gemini and Grok."""
from __future__ import annotations
def get_llm(role: str, temperature: float = 0.1):
"""
Return the right LLM based on LLM_PROVIDER in .env.
role: "planner" | "executor" | "critic" | "memory"
"""
from .config import get_settings
settings = get_settings()
max_tokens = settings.max_output_tokens
if settings.llm_provider == "groq":
from langchain_groq import ChatGroq
model_map = {
"planner": settings.groq_planner_model,
"executor": settings.groq_executor_model,
"critic": settings.groq_critic_model,
"memory": settings.groq_memory_model,
}
return ChatGroq(
model=model_map.get(role, "llama-3.3-70b-versatile"),
temperature=temperature,
api_key=settings.groq_api_key,
max_tokens=max_tokens,
)
else: # gemini (default)
from langchain_google_genai import ChatGoogleGenerativeAI
model_map = {
"planner": settings.planner_model,
"executor": settings.executor_model,
"critic": settings.critic_model,
"memory": settings.memory_model,
}
return ChatGoogleGenerativeAI(
model=model_map.get(role, settings.planner_model),
temperature=temperature,
google_api_key=settings.google_api_key,
max_output_tokens=max_tokens,
)
|