Spaces:
Running
Running
| import json | |
| import requests | |
| from langchain_core.tools import tool | |
| def analyze_symptom_text(symptoms: str) -> str: | |
| """ | |
| Analyzes text-based symptoms using classification model via api backend. | |
| Input: Patient's symptom description text. | |
| Output: Predicted conditions with confidence scores. | |
| """ | |
| try: | |
| print(f"🩺 Analyzing symptoms: {symptoms[:50]}...") | |
| # Call your HF ClinicalBERT FastAPI Space | |
| api_url = "https://datdevsteve-nivra-text-diagnosis.hf.space/run/predict" | |
| payload = { | |
| "data": [symptoms], | |
| "fn_index": 0 # Default prediction function | |
| } | |
| print("🔬 Calling ClinicalBERT FastAPI backend...") | |
| response = requests.post(api_url, json=payload, timeout=120) | |
| response.raise_for_status() | |
| result = response.json() | |
| # Extract diagnosis from HF Space response format | |
| if "data" in result and len(result["data"]) > 0: | |
| diagnosis = result["data"][0] | |
| # Parse confidence if available, else default format | |
| if isinstance(diagnosis, list) and len(diagnosis) > 0: | |
| diagnosis = diagnosis[0] | |
| return f""" | |
| [TEXT SYMPTOM ANALYSIS - SUCCESS]: | |
| ✅ FastAPI Backend Response: {diagnosis} | |
| 📡 **Backend**: nivra-text-diagnosis HF Space""" | |
| else: | |
| # Fallback with generic advice | |
| return "[TEXT SYMPTOM ANALYSIS - WARNING]: No diagnosis returned from backend. Please consult a doctor." | |
| except requests.exceptions.Timeout: | |
| return "[TEXT SYMPTOM ANALYSIS - ERROR]: Analysis timeout. Please try again or consult a doctor." | |
| except requests.exceptions.RequestException as e: | |
| return f"[TEXT SYMPTOM ANALYSIS - ERROR]: Network error: {str(e)}. Please consult a doctor." | |
| except Exception as e: | |
| return f"[TEXT SYMPTOM ANALYSIS - ERROR]: Unexpected error: {str(e)}. Please consult a doctor." | |