Spaces:
Sleeping
Sleeping
| from model_loader import predictVerdict, getConfidence | |
| from rag_loader import retrieve | |
| from prompt_builder import buildPrompt | |
| import os | |
| from dotenv import load_dotenv | |
| load_dotenv() | |
| def evaluateCase(text: str) -> dict: | |
| # Get LegalBERT prediction | |
| verdictResult = predictVerdict(text) | |
| confidenceScore = getConfidence(text) | |
| # Single retrieval using only the original case text | |
| supportChunks = retrieve(text, topK=5) | |
| # Build prompt with confidence information | |
| promptText = buildPrompt(text, verdictResult, confidenceScore, supportChunks) | |
| geminiApiKey = os.getenv("GEMINI_API_KEY") | |
| geminiResponse = "" | |
| finalVerdict = verdictResult # Default to LegalBERT verdict | |
| if geminiApiKey: | |
| try: | |
| import google.generativeai as genai | |
| genai.configure(api_key=geminiApiKey) | |
| geminiModel = genai.GenerativeModel("gemini-2.5-flash") | |
| response = geminiModel.generate_content(promptText) | |
| geminiResponse = response.text | |
| # Extract final verdict from Gemini's response if confidence < 80% | |
| if confidenceScore < 0.80: | |
| # Check if Gemini changed the verdict in its response | |
| responseLower = geminiResponse.lower() | |
| if "not guilty" in responseLower and "verdict" in responseLower: | |
| if responseLower.find("not guilty") < responseLower.find("guilty") or \ | |
| "**not guilty**" in responseLower: | |
| finalVerdict = "not guilty" | |
| elif "guilty" in responseLower and "verdict" in responseLower: | |
| if "**guilty**" in responseLower and "not guilty" not in responseLower[:responseLower.find("**guilty**")]: | |
| finalVerdict = "guilty" | |
| except Exception as e: | |
| geminiResponse = f"Gemini API call failed: {str(e)}" | |
| else: | |
| geminiResponse = "Gemini API key not configured. Using prompt only." | |
| return { | |
| "verdict": finalVerdict, # Final verdict (may be overridden by Gemini if confidence < 70%) | |
| "legalBertVerdict": verdictResult, # Original LegalBERT prediction | |
| "confidence": confidenceScore, | |
| "explanation": geminiResponse if geminiResponse else promptText, | |
| "retrievedChunks": supportChunks, | |
| "prompt": promptText | |
| } | |