from typing import Dict, List import json import google.generativeai as genai from fastapi import HTTPException from ..utils.prompt_templates import generate_traditional_prompt, generate_body_based_prompt class SymptomAnalyzer: def __init__(self): self.model = genai.GenerativeModel('gemini-2.5-flash') async def analyze_traditional(self, symptoms: List[str], age: int, gender: str, duration: str) -> Dict: try: prompt = generate_traditional_prompt(symptoms, age, gender, duration) response = self.model.generate_content(prompt) try: parsed_response = json.loads(response.text) return parsed_response except json.JSONDecodeError as e: cleaned_response = response.text.strip().strip('`').strip('json') try: parsed_response = json.loads(cleaned_response) return parsed_response except json.JSONDecodeError: raise HTTPException( status_code=500, detail="Failed to parse response into valid JSON" ) except Exception as e: raise HTTPException(status_code=500, detail=f"Analysis error: {str(e)}") async def analyze_body_based(self, data: Dict) -> Dict: try: prompt = generate_body_based_prompt(data) response = self.model.generate_content(prompt) try: parsed_response = json.loads(response.text) return parsed_response except json.JSONDecodeError as e: cleaned_response = response.text.strip().strip('`').strip('json') try: parsed_response = json.loads(cleaned_response) return parsed_response except json.JSONDecodeError: raise HTTPException( status_code=500, detail="Failed to parse response into valid JSON" ) except Exception as e: raise HTTPException(status_code=500, detail=f"Analysis error: {str(e)}")