|
|
from groq import Groq |
|
|
import json |
|
|
import sys |
|
|
import os |
|
|
|
|
|
|
|
|
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...") |
|
|
|
|
|
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, |
|
|
response_format={"type": "json_object"} |
|
|
) |
|
|
|
|
|
|
|
|
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)}") |
|
|
|
|
|
|
|
|
groq_service = GroqService() |