Spaces:
Running
Running
Update model.py
Browse files
model.py
CHANGED
@@ -2,36 +2,33 @@ import os
|
|
2 |
import torch
|
3 |
from transformers import AutoTokenizer, AutoModelForCausalLM
|
4 |
|
5 |
-
# ✅
|
6 |
MODEL_NAME = "deepseek-ai/deepseek-llm-7b-chat"
|
7 |
-
MODEL_DIR = "
|
8 |
|
9 |
-
# ✅
|
10 |
-
if not os.path.exists(MODEL_DIR):
|
11 |
-
os.makedirs(MODEL_DIR)
|
12 |
-
|
13 |
-
# ✅ โหลด Tokenizer และ Model พร้อมใช้ Half Precision (FP16)
|
14 |
tokenizer = AutoTokenizer.from_pretrained(MODEL_NAME, cache_dir=MODEL_DIR)
|
15 |
model = AutoModelForCausalLM.from_pretrained(
|
16 |
MODEL_NAME,
|
17 |
-
torch_dtype=torch.float16,
|
18 |
device_map="auto",
|
19 |
-
|
20 |
)
|
21 |
|
22 |
def classify_esi(symptoms):
|
23 |
"""
|
24 |
-
วิเคราะห์ระดับ ESI
|
25 |
"""
|
26 |
prompt = (
|
27 |
-
"
|
28 |
-
"- ESI 1:
|
29 |
-
"- ESI 2: มีภาวะเสี่ยงสูง เช่น สับสน หมดสติ
|
30 |
-
"- ESI 3:
|
31 |
-
"- ESI 4:
|
32 |
-
"- ESI 5: ไม่ต้องใช้ทรัพยากรทางการแพทย์ เช่น
|
33 |
-
|
34 |
-
"
|
|
|
35 |
)
|
36 |
|
37 |
device = "cuda" if torch.cuda.is_available() else "cpu"
|
@@ -47,4 +44,4 @@ def classify_esi(symptoms):
|
|
47 |
if esi in response:
|
48 |
return int(esi)
|
49 |
|
50 |
-
return "ไม่สามารถประเมินได้" #
|
|
|
2 |
import torch
|
3 |
from transformers import AutoTokenizer, AutoModelForCausalLM
|
4 |
|
5 |
+
# ✅ ใช้ Hugging Face Cache Directory (ที่ Hugging Face อนุญาตให้เขียนไฟล์)
|
6 |
MODEL_NAME = "deepseek-ai/deepseek-llm-7b-chat"
|
7 |
+
MODEL_DIR = os.getenv("HF_HOME", "/tmp") # ใช้ /tmp เป็นค่า default
|
8 |
|
9 |
+
# ✅ โหลด Tokenizer และ Model แบบ half precision (FP16)
|
|
|
|
|
|
|
|
|
10 |
tokenizer = AutoTokenizer.from_pretrained(MODEL_NAME, cache_dir=MODEL_DIR)
|
11 |
model = AutoModelForCausalLM.from_pretrained(
|
12 |
MODEL_NAME,
|
13 |
+
torch_dtype=torch.float16,
|
14 |
device_map="auto",
|
15 |
+
cache_dir=MODEL_DIR # ใช้ cache directory ที่ Hugging Face อนุญาตให้เขียนไฟล์
|
16 |
)
|
17 |
|
18 |
def classify_esi(symptoms):
|
19 |
"""
|
20 |
+
รับข้อความที่เป็นอาการของผู้ป่วยและใช้ DeepSeek AI วิเคราะห์ระดับ ESI
|
21 |
"""
|
22 |
prompt = (
|
23 |
+
"คุณเป็นแพทย์เวชศาสตร์ฉุกเฉินที่มีหน้าที่ประเมินระดับความรุนแรงของผู้ป่วยตาม Emergency Severity Index (ESI) ซึ่งแบ่งเป็น 5 ระดับ:\n"
|
24 |
+
"- ESI 1: ต้องได้รับการช่วยชีวิตทันที เช่น หัวใจหยุดเต้น หยุดหายใจ ความดันต่ำวิกฤติ\n"
|
25 |
+
"- ESI 2: มีภาวะเสี่ยงสูง เช่น สับสน หมดสติ อาการกำเริบที่อาจรุนแรง\n"
|
26 |
+
"- ESI 3: ต้องใช้ทรัพยากรทางการแพทย์หลายอย่าง เช่น ตรวจเลือดและเอกซเรย์\n"
|
27 |
+
"- ESI 4: ต้องใช้ทรัพยากรทางการแพทย์เพียงอย่างเดียว เช่น ทำแผล เย็บแผล\n"
|
28 |
+
"- ESI 5: ไม่ต้องใช้ทรัพยากรทางการแพทย์ เช่น เป็นหวัดเล็กน้อย แผลถลอก\n\n"
|
29 |
+
"อาการของผู้ป่วย: "
|
30 |
+
f"{symptoms}\n\n"
|
31 |
+
"กรุณาประเมินระดับ ESI ที่เหมาะสมและตอบกลับเป็นตัวเลข 1-5 เท่านั้น หากข้อมูลไม่เพียงพอให้ตอบว่า 'ไม่สามารถประเมินได้'"
|
32 |
)
|
33 |
|
34 |
device = "cuda" if torch.cuda.is_available() else "cpu"
|
|
|
44 |
if esi in response:
|
45 |
return int(esi)
|
46 |
|
47 |
+
return "ไม่สามารถประเมินได้" # กรณีที่โมเดลไม่สามารถให้คำตอบที่เป็นตัวเลขได้
|