Hola
Browse files- controller.py +24 -24
- groq_instance_provider.py +1 -1
- groq_report_generator.py +2 -2
controller.py
CHANGED
|
@@ -396,33 +396,33 @@ async def csv_chat(request: Dict, authorization: str = Header(None)):
|
|
| 396 |
|
| 397 |
# Handle report generation with Cerebras first, then Gemini fallback
|
| 398 |
if generate_report is True:
|
| 399 |
-
|
| 400 |
|
| 401 |
-
#
|
| 402 |
-
|
| 403 |
-
|
| 404 |
-
|
| 405 |
-
|
| 406 |
-
|
| 407 |
-
|
| 408 |
-
|
| 409 |
-
|
| 410 |
-
|
| 411 |
-
|
| 412 |
|
| 413 |
-
#
|
| 414 |
-
|
| 415 |
-
|
| 416 |
-
|
| 417 |
-
|
| 418 |
-
|
| 419 |
-
|
| 420 |
-
|
| 421 |
-
|
| 422 |
-
|
| 423 |
-
|
| 424 |
|
| 425 |
-
|
| 426 |
|
| 427 |
# Gemini failed, last resort Groq Report Generation
|
| 428 |
logger.info("Attempting report generation with Groq as last resort...")
|
|
|
|
| 396 |
|
| 397 |
# Handle report generation with Cerebras first, then Gemini fallback
|
| 398 |
if generate_report is True:
|
| 399 |
+
logger.info("Starting report generation process...")
|
| 400 |
|
| 401 |
+
# Try Cerebras first for report generation
|
| 402 |
+
logger.info("Attempting report generation with Cerebras...")
|
| 403 |
+
try:
|
| 404 |
+
report_files = await generate_csv_report_cerebras(csv_url, query, chat_id, conversation_history)
|
| 405 |
+
if report_files is not None and (report_files.files.csv_files or report_files.files.image_files):
|
| 406 |
+
logger.info(f"Cerebras report generation successful: {len(report_files.files.csv_files)} CSV files, {len(report_files.files.image_files)} image files")
|
| 407 |
+
return {"answer": jsonable_encoder(report_files)}
|
| 408 |
+
else:
|
| 409 |
+
logger.warning("Cerebras report generation returned empty or None result")
|
| 410 |
+
except Exception as cerebras_error:
|
| 411 |
+
logger.error(f"Cerebras report generation failed: {str(cerebras_error)}")
|
| 412 |
|
| 413 |
+
# Fallback to Gemini for report generation
|
| 414 |
+
logger.info("Falling back to Gemini for report generation...")
|
| 415 |
+
try:
|
| 416 |
+
report_files = await generate_csv_report_gemini(csv_url, query, chat_id, conversation_history)
|
| 417 |
+
if report_files is not None and (report_files.files.csv_files or report_files.files.image_files):
|
| 418 |
+
logger.info(f"Gemini report generation successful: {len(report_files.files.csv_files)} CSV files, {len(report_files.files.image_files)} image files")
|
| 419 |
+
return {"answer": jsonable_encoder(report_files)}
|
| 420 |
+
else:
|
| 421 |
+
logger.warning("Gemini report generation returned empty or None result")
|
| 422 |
+
except Exception as gemini_error:
|
| 423 |
+
logger.error(f"Gemini report generation failed: {str(gemini_error)}")
|
| 424 |
|
| 425 |
+
logger.error("Both Cerebras and Gemini report generation failed")
|
| 426 |
|
| 427 |
# Gemini failed, last resort Groq Report Generation
|
| 428 |
logger.info("Attempting report generation with Groq as last resort...")
|
groq_instance_provider.py
CHANGED
|
@@ -18,7 +18,7 @@ class InstanceProvider:
|
|
| 18 |
def _initialize_instances(self):
|
| 19 |
"""Load all API keys and create instances"""
|
| 20 |
api_keys = os.getenv("GROQ_API_KEYS", "").split(",")
|
| 21 |
-
base_url = os.getenv("
|
| 22 |
model_name = os.getenv("GROQ_LLM_MODEL")
|
| 23 |
|
| 24 |
for key in api_keys:
|
|
|
|
| 18 |
def _initialize_instances(self):
|
| 19 |
"""Load all API keys and create instances"""
|
| 20 |
api_keys = os.getenv("GROQ_API_KEYS", "").split(",")
|
| 21 |
+
base_url = os.getenv("GROQ_OPENAI_URL")
|
| 22 |
model_name = os.getenv("GROQ_LLM_MODEL")
|
| 23 |
|
| 24 |
for key in api_keys:
|
groq_report_generator.py
CHANGED
|
@@ -25,7 +25,7 @@ load_dotenv()
|
|
| 25 |
|
| 26 |
API_KEYS = os.getenv("GROQ_API_KEYS", "").split(",")[::-1]
|
| 27 |
MODEL_NAME = os.getenv("GROQ_LLM_MODEL") # Kimi model
|
| 28 |
-
|
| 29 |
|
| 30 |
class FileProps(BaseModel):
|
| 31 |
fileName: str
|
|
@@ -300,7 +300,7 @@ def groq_llm_chat(csv_url: str, query: str, conversation_history: List[Dict[str,
|
|
| 300 |
df = pd.read_csv(csv_url)
|
| 301 |
agent = RethinkAgent(df=df, conversation=conversation_history, model_name=MODEL_NAME)
|
| 302 |
|
| 303 |
-
if not agent.initialize_model(API_KEYS,
|
| 304 |
return {"error": "API configuration failed"}
|
| 305 |
|
| 306 |
result = agent.execute_query(query)
|
|
|
|
| 25 |
|
| 26 |
API_KEYS = os.getenv("GROQ_API_KEYS", "").split(",")[::-1]
|
| 27 |
MODEL_NAME = os.getenv("GROQ_LLM_MODEL") # Kimi model
|
| 28 |
+
GROQ_OPENAI_URL = os.getenv("GROQ_OPENAI_URL")
|
| 29 |
|
| 30 |
class FileProps(BaseModel):
|
| 31 |
fileName: str
|
|
|
|
| 300 |
df = pd.read_csv(csv_url)
|
| 301 |
agent = RethinkAgent(df=df, conversation=conversation_history, model_name=MODEL_NAME)
|
| 302 |
|
| 303 |
+
if not agent.initialize_model(API_KEYS, GROQ_OPENAI_URL):
|
| 304 |
return {"error": "API configuration failed"}
|
| 305 |
|
| 306 |
result = agent.execute_query(query)
|