datdevsteve commited on
Commit
3ffff30
·
verified ·
1 Parent(s): f771f4e

Update agent/text_symptom_tool.py

Browse files
Files changed (1) hide show
  1. agent/text_symptom_tool.py +50 -50
agent/text_symptom_tool.py CHANGED
@@ -1,50 +1,50 @@
1
- import json
2
- import requests
3
- from langchain_core.tools import tool
4
-
5
- @tool
6
- def analyze_symptom_text(symptoms: str) -> str:
7
- """
8
- Analyzes text-based symptoms using classification model via api backend.
9
- Input: Patient's symptom description text.
10
- Output: Predicted conditions with confidence scores.
11
- """
12
- try:
13
- print(f"🩺 Analyzing symptoms: {symptoms[:50]}...")
14
-
15
- # Call your HF ClinicalBERT FastAPI Space
16
- api_url = "https://datdevsteve-nivra-text-diagnosis.hf.space/run/predict"
17
- payload = {
18
- "data": [symptoms],
19
- "fn_index": 0 # Default prediction function
20
- }
21
-
22
- print("🔬 Calling ClinicalBERT FastAPI backend...")
23
- response = requests.post(api_url, json=payload, timeout=30)
24
- response.raise_for_status()
25
-
26
- result = response.json()
27
-
28
- # Extract diagnosis from HF Space response format
29
- if "data" in result and len(result["data"]) > 0:
30
- diagnosis = result["data"][0]
31
-
32
- # Parse confidence if available, else default format
33
- if isinstance(diagnosis, list) and len(diagnosis) > 0:
34
- diagnosis = diagnosis[0]
35
-
36
- return f"""
37
- [TEXT SYMPTOM ANALYSIS - SUCCESS]:
38
- ✅ FastAPI Backend Response: {diagnosis}
39
-
40
- 📡 **Backend**: nivra-text-diagnosis HF Space"""
41
- else:
42
- # Fallback with generic advice
43
- return "[TEXT SYMPTOM ANALYSIS - WARNING]: No diagnosis returned from backend. Please consult a doctor."
44
-
45
- except requests.exceptions.Timeout:
46
- return "[TEXT SYMPTOM ANALYSIS - ERROR]: Analysis timeout. Please try again or consult a doctor."
47
- except requests.exceptions.RequestException as e:
48
- return f"[TEXT SYMPTOM ANALYSIS - ERROR]: Network error: {str(e)}. Please consult a doctor."
49
- except Exception as e:
50
- return f"[TEXT SYMPTOM ANALYSIS - ERROR]: Unexpected error: {str(e)}. Please consult a doctor."
 
1
+ import json
2
+ import requests
3
+ from langchain_core.tools import tool
4
+
5
+ @tool
6
+ def analyze_symptom_text(symptoms: str) -> str:
7
+ """
8
+ Analyzes text-based symptoms using classification model via api backend.
9
+ Input: Patient's symptom description text.
10
+ Output: Predicted conditions with confidence scores.
11
+ """
12
+ try:
13
+ print(f"🩺 Analyzing symptoms: {symptoms[:50]}...")
14
+
15
+ # Call your HF ClinicalBERT FastAPI Space
16
+ api_url = "https://datdevsteve-nivra-text-diagnosis.hf.space/run/predict"
17
+ payload = {
18
+ "data": [symptoms],
19
+ "fn_index": 0 # Default prediction function
20
+ }
21
+
22
+ print("🔬 Calling ClinicalBERT FastAPI backend...")
23
+ response = requests.post(api_url, json=payload, timeout=120)
24
+ response.raise_for_status()
25
+
26
+ result = response.json()
27
+
28
+ # Extract diagnosis from HF Space response format
29
+ if "data" in result and len(result["data"]) > 0:
30
+ diagnosis = result["data"][0]
31
+
32
+ # Parse confidence if available, else default format
33
+ if isinstance(diagnosis, list) and len(diagnosis) > 0:
34
+ diagnosis = diagnosis[0]
35
+
36
+ return f"""
37
+ [TEXT SYMPTOM ANALYSIS - SUCCESS]:
38
+ ✅ FastAPI Backend Response: {diagnosis}
39
+
40
+ 📡 **Backend**: nivra-text-diagnosis HF Space"""
41
+ else:
42
+ # Fallback with generic advice
43
+ return "[TEXT SYMPTOM ANALYSIS - WARNING]: No diagnosis returned from backend. Please consult a doctor."
44
+
45
+ except requests.exceptions.Timeout:
46
+ return "[TEXT SYMPTOM ANALYSIS - ERROR]: Analysis timeout. Please try again or consult a doctor."
47
+ except requests.exceptions.RequestException as e:
48
+ return f"[TEXT SYMPTOM ANALYSIS - ERROR]: Network error: {str(e)}. Please consult a doctor."
49
+ except Exception as e:
50
+ return f"[TEXT SYMPTOM ANALYSIS - ERROR]: Unexpected error: {str(e)}. Please consult a doctor."