Spaces:
Paused
Paused
Commit ·
15784ff
1
Parent(s): b1f812f
feat: Replace Gemini with Groq Cloud Llama-3.3 ultra-fast LLM API integration
Browse files- .env.example +8 -8
- config.py +5 -5
- llm_synthesis/llm_fallback.py +5 -8
.env.example
CHANGED
|
@@ -1,11 +1,11 @@
|
|
| 1 |
# Sarvam AI STT API Key (Saaras v3)
|
| 2 |
SARVAM_API_KEY=your_sarvam_api_key_here
|
| 3 |
|
| 4 |
-
# Primary LLM Generation API Settings (
|
| 5 |
-
|
| 6 |
-
LLM_API_KEY=
|
| 7 |
-
LLM_BASE_URL=https://
|
| 8 |
-
LLM_MODEL=
|
| 9 |
|
| 10 |
# Cerebras High-Speed Backup Provider
|
| 11 |
CEREBRAS_API_KEY=your_cerebras_api_key_here
|
|
@@ -20,9 +20,9 @@ ADAPTION_API_KEY=your_adaption_api_key_here
|
|
| 20 |
EMBEDDING_MODEL_NAME=intfloat/multilingual-e5-small
|
| 21 |
|
| 22 |
# Storage & Index paths
|
| 23 |
-
DATA_DIR=./
|
| 24 |
-
INDEX_DIR=./
|
| 25 |
-
PROCESSED_DIR=./
|
| 26 |
|
| 27 |
# Server Configuration
|
| 28 |
HOST=0.0.0.0
|
|
|
|
| 1 |
# Sarvam AI STT API Key (Saaras v3)
|
| 2 |
SARVAM_API_KEY=your_sarvam_api_key_here
|
| 3 |
|
| 4 |
+
# Primary LLM Generation API Settings (Groq Cloud Llama-3.3 / OpenAI-compatible adapter)
|
| 5 |
+
GROQ_API_KEY=your_groq_api_key_here
|
| 6 |
+
LLM_API_KEY=your_groq_api_key_here
|
| 7 |
+
LLM_BASE_URL=https://api.groq.com/openai/v1
|
| 8 |
+
LLM_MODEL=llama-3.3-70b-versatile
|
| 9 |
|
| 10 |
# Cerebras High-Speed Backup Provider
|
| 11 |
CEREBRAS_API_KEY=your_cerebras_api_key_here
|
|
|
|
| 20 |
EMBEDDING_MODEL_NAME=intfloat/multilingual-e5-small
|
| 21 |
|
| 22 |
# Storage & Index paths
|
| 23 |
+
DATA_DIR=./knowledge_base
|
| 24 |
+
INDEX_DIR=./knowledge_base/indexes
|
| 25 |
+
PROCESSED_DIR=./knowledge_base/processed
|
| 26 |
|
| 27 |
# Server Configuration
|
| 28 |
HOST=0.0.0.0
|
config.py
CHANGED
|
@@ -191,11 +191,11 @@ DYNAMIC_SEMANTIC_CACHE_ENABLED = os.getenv("DYNAMIC_SEMANTIC_CACHE_ENABLED", "tr
|
|
| 191 |
DYNAMIC_SEMANTIC_CACHE_MAX_ENTRIES = int(os.getenv("DYNAMIC_SEMANTIC_CACHE_MAX_ENTRIES", "2048"))
|
| 192 |
DYNAMIC_SEMANTIC_CACHE_THRESHOLD = float(os.getenv("DYNAMIC_SEMANTIC_CACHE_THRESHOLD", "0.92"))
|
| 193 |
|
| 194 |
-
# Tier-1 Primary:
|
| 195 |
-
|
| 196 |
-
LLM_API_KEY = os.getenv("LLM_API_KEY",
|
| 197 |
-
LLM_BASE_URL = os.getenv("LLM_BASE_URL", "https://
|
| 198 |
-
LLM_MODEL = os.getenv("LLM_MODEL", "
|
| 199 |
LLM_TIMEOUT_SECONDS = 15.0
|
| 200 |
|
| 201 |
# Tier-2 & Tier-3 Backup: Cerebras High-Speed LPU (120B model for high instruction following)
|
|
|
|
| 191 |
DYNAMIC_SEMANTIC_CACHE_MAX_ENTRIES = int(os.getenv("DYNAMIC_SEMANTIC_CACHE_MAX_ENTRIES", "2048"))
|
| 192 |
DYNAMIC_SEMANTIC_CACHE_THRESHOLD = float(os.getenv("DYNAMIC_SEMANTIC_CACHE_THRESHOLD", "0.92"))
|
| 193 |
|
| 194 |
+
# Tier-1 Primary: Groq High-Speed Llama-3.3 / Mixtral API (~150ms)
|
| 195 |
+
GROQ_API_KEY = os.getenv("GROQ_API_KEY", os.getenv("LLM_API_KEY", ""))
|
| 196 |
+
LLM_API_KEY = os.getenv("LLM_API_KEY", GROQ_API_KEY)
|
| 197 |
+
LLM_BASE_URL = os.getenv("LLM_BASE_URL", "https://api.groq.com/openai/v1")
|
| 198 |
+
LLM_MODEL = os.getenv("LLM_MODEL", "llama-3.3-70b-versatile")
|
| 199 |
LLM_TIMEOUT_SECONDS = 15.0
|
| 200 |
|
| 201 |
# Tier-2 & Tier-3 Backup: Cerebras High-Speed LPU (120B model for high instruction following)
|
llm_synthesis/llm_fallback.py
CHANGED
|
@@ -79,7 +79,6 @@ class LLMAdapter:
|
|
| 79 |
headers = {
|
| 80 |
"Content-Type": "application/json",
|
| 81 |
"Authorization": f"Bearer {api_key.strip()}",
|
| 82 |
-
"x-goog-api-key": api_key.strip(),
|
| 83 |
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) VoiceRAG/1.0",
|
| 84 |
}
|
| 85 |
|
|
@@ -100,7 +99,7 @@ class LLMAdapter:
|
|
| 100 |
"""
|
| 101 |
Generate synthesized response grounded strictly in provided context passages.
|
| 102 |
Cascade Hierarchy:
|
| 103 |
-
1. Primary:
|
| 104 |
2. Tier-2 Backup: Cerebras Gemma 4 31b (gemma-4-31b)
|
| 105 |
3. Tier-3 Backup: Cerebras GPT-OSS 120b (gpt-oss-120b)
|
| 106 |
4. Tier-4 Local: Deterministic multi-passage extractive fallback
|
|
@@ -108,16 +107,14 @@ class LLMAdapter:
|
|
| 108 |
if not config.ALLOW_NETWORK_CALLS_IN_PIPELINE:
|
| 109 |
return self._local_fallback_synthesize(prompt, context)
|
| 110 |
|
| 111 |
-
# Tier 1: Primary LLM (
|
| 112 |
if self.api_key and self.api_key.strip():
|
| 113 |
-
# Try configured model
|
| 114 |
primary_models = [self.model]
|
| 115 |
-
if "
|
| 116 |
-
for alt_m in ["
|
| 117 |
if alt_m not in primary_models:
|
| 118 |
primary_models.append(alt_m)
|
| 119 |
-
elif "groq.com" in self.base_url and self.model != "llama-3.1-8b-instant":
|
| 120 |
-
primary_models.append("llama-3.1-8b-instant")
|
| 121 |
|
| 122 |
for m in primary_models:
|
| 123 |
res = self._call_chat_endpoint(
|
|
|
|
| 79 |
headers = {
|
| 80 |
"Content-Type": "application/json",
|
| 81 |
"Authorization": f"Bearer {api_key.strip()}",
|
|
|
|
| 82 |
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) VoiceRAG/1.0",
|
| 83 |
}
|
| 84 |
|
|
|
|
| 99 |
"""
|
| 100 |
Generate synthesized response grounded strictly in provided context passages.
|
| 101 |
Cascade Hierarchy:
|
| 102 |
+
1. Primary: Groq Llama-3.3 70B / Mixtral (~150ms)
|
| 103 |
2. Tier-2 Backup: Cerebras Gemma 4 31b (gemma-4-31b)
|
| 104 |
3. Tier-3 Backup: Cerebras GPT-OSS 120b (gpt-oss-120b)
|
| 105 |
4. Tier-4 Local: Deterministic multi-passage extractive fallback
|
|
|
|
| 107 |
if not config.ALLOW_NETWORK_CALLS_IN_PIPELINE:
|
| 108 |
return self._local_fallback_synthesize(prompt, context)
|
| 109 |
|
| 110 |
+
# Tier 1: Primary LLM (Groq Llama-3.3 / OpenAI-compatible)
|
| 111 |
if self.api_key and self.api_key.strip():
|
| 112 |
+
# Try configured Groq model with ultra-fast fallbacks on 429
|
| 113 |
primary_models = [self.model]
|
| 114 |
+
if "groq.com" in self.base_url or "llama" in self.model.lower() or "groq" in self.model.lower():
|
| 115 |
+
for alt_m in ["llama-3.3-70b-versatile", "llama-3.1-8b-instant", "mixtral-8x7b-32768", "llama3-70b-8192"]:
|
| 116 |
if alt_m not in primary_models:
|
| 117 |
primary_models.append(alt_m)
|
|
|
|
|
|
|
| 118 |
|
| 119 |
for m in primary_models:
|
| 120 |
res = self._call_chat_endpoint(
|