Spaces:
Sleeping
Sleeping
| from groq import Groq | |
| import json | |
| import sys | |
| import os | |
| # Add parent directory to path for imports | |
| sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) | |
| from config.settings import settings | |
| from utils.prompts import SYSTEM_PROMPT, create_user_prompt | |
| class GroqService: | |
| def __init__(self): | |
| try: | |
| print(f"π§ Initializing Groq client...") | |
| self.client = Groq(api_key=settings.GROQ_API_KEY) | |
| self.model_id = settings.MODEL_ID | |
| print(f"β Groq client initialized successfully with model: {self.model_id}") | |
| except Exception as e: | |
| print(f"β Failed to initialize Groq client: {str(e)}") | |
| raise | |
| async def analyze_provider_notes(self, provider_notes: str) -> dict: | |
| """ | |
| Analyze provider notes and return ICD and CPT codes with explanations | |
| """ | |
| try: | |
| print(f"π Analyzing provider notes...") | |
| # Create the chat completion with system and user prompts | |
| chat_completion = self.client.chat.completions.create( | |
| messages=[ | |
| { | |
| "role": "system", | |
| "content": SYSTEM_PROMPT | |
| }, | |
| { | |
| "role": "user", | |
| "content": create_user_prompt(provider_notes) | |
| } | |
| ], | |
| model=self.model_id, | |
| temperature=0.1, # Low temperature for consistent, factual outputs | |
| response_format={"type": "json_object"} # Force JSON response | |
| ) | |
| # Extract and parse the response | |
| response_content = chat_completion.choices[0].message.content | |
| print(f"β Received response from Groq API") | |
| parsed_response = json.loads(response_content) | |
| return parsed_response | |
| except json.JSONDecodeError as e: | |
| print(f"β JSON parsing error: {str(e)}") | |
| raise ValueError(f"Failed to parse JSON response from model: {str(e)}") | |
| except Exception as e: | |
| print(f"β Groq API error: {str(e)}") | |
| raise Exception(f"Error calling Groq API: {str(e)}") | |
| # Don't initialize here - let it be initialized when imported | |
| groq_service = GroqService() |