Spaces:
Sleeping
Sleeping
| import os | |
| import json | |
| from dotenv import load_dotenv | |
| import sys | |
| sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) | |
| from groq_client import call_groq | |
| def extract_json(raw: str) -> dict: | |
| if not raw: | |
| return None | |
| try: | |
| return json.loads(raw) | |
| except json.JSONDecodeError: | |
| pass | |
| try: | |
| start = raw.find("{") | |
| end = raw.rfind("}") + 1 | |
| if start != -1 and end != 0: | |
| return json.loads(raw[start:end]) | |
| except json.JSONDecodeError: | |
| pass | |
| return None | |
| def explain_verdict(claim: str, verdict: str, confidence: float, explanation: str, judge_result: dict) -> dict: | |
| overall_quality = judge_result.get("overall_quality", "UNKNOWN") | |
| quality_explanation = judge_result.get("quality_explanation", "") | |
| prompt = f"""You are a medical communicator who explains complex medical verdicts in plain English for everyday people. | |
| CLAIM: "{claim}" | |
| VERDICT: {verdict} | |
| CONFIDENCE: {confidence * 100:.0f}% | |
| TECHNICAL EXPLANATION: {explanation} | |
| EVIDENCE QUALITY: {overall_quality} | |
| QUALITY NOTE: {quality_explanation} | |
| Write a plain English summary that: | |
| 1. States the verdict clearly in simple words | |
| 2. Explains WHY in 1-2 sentences a non-doctor would understand | |
| 3. Mentions how strong the evidence is | |
| 4. Adds a practical takeaway if relevant | |
| Respond in this exact JSON format: | |
| {{ | |
| "plain_english": "2-3 sentence plain English summary", | |
| "takeaway": "one practical takeaway for the user", | |
| "evidence_strength": "Strong" or "Moderate" or "Weak" or "Insufficient" | |
| }} | |
| Respond with JSON only. No extra text, no markdown formatting, no backticks.""" | |
| raw = call_groq(prompt, response_format={"type": "json_object"}) | |
| result = extract_json(raw) | |
| if result is not None: | |
| return result | |
| return { | |
| "plain_english": explanation, | |
| "takeaway": "", | |
| "evidence_strength": "Unknown" | |
| } | |
| if __name__ == "__main__": | |
| result = explain_verdict( | |
| claim="vaccines cause autism", | |
| verdict="FALSE", | |
| confidence=0.9, | |
| explanation="No peer-reviewed evidence supports a link between vaccines and autism.", | |
| judge_result={"overall_quality": "HIGH", "quality_explanation": "Multiple RCTs found."} | |
| ) | |
| print(json.dumps(result, indent=2)) |