triage-bot / model.py
Tortyfishguy's picture
Update model.py
46c2cbe verified
import os
import torch
from transformers import AutoTokenizer, AutoModelForCausalLM
# ใช้ Hugging Face Cache Directory
MODEL_NAME = "deepseek-ai/deepseek-llm-7b-chat"
MODEL_DIR = os.getenv("HF_HOME", "/tmp")
# ✅ โหลด Tokenizer และ Model ครั้งเดียวเท่านั้น
tokenizer = AutoTokenizer.from_pretrained(MODEL_NAME, cache_dir=MODEL_DIR)
model = AutoModelForCausalLM.from_pretrained(
MODEL_NAME,
torch_dtype=torch.float16,
device_map="auto",
cache_dir=MODEL_DIR
)
def classify_esi(symptoms):
"""
ใช้โมเดล AI ประเมินระดับ ESI จากข้อความอาการของผู้ป่วย
"""
prompt = (
"คุณเป็นแพทย์เวชศาสตร์ฉุกเฉินที่ต้องประเมิน ESI 1-5 ตามอาการที่ได้รับ..."
f"\nอาการของผู้ป่วย: {symptoms}\n"
"กรุณาประเมิน ESI เป็นตัวเลข 1-5 เท่านั้น ถ้าข้อมูลไม่พอให้ตอบว่า 'ไม่สามารถประเมินได้'"
)
inputs = tokenizer(prompt, return_tensors="pt").to("cuda" if torch.cuda.is_available() else "cpu")
with torch.no_grad():
outputs = model.generate(
**inputs,
max_new_tokens=5, # ✅ จำกัดคำตอบให้สั้น
do_sample=False # ✅ ปิดการสุ่มเพื่อลดเวลาประมวลผล
)
response = tokenizer.decode(outputs[0], skip_special_tokens=True).strip()
for esi in ["1", "2", "3", "4", "5"]:
if esi in response:
return int(esi)
return "ไม่สามารถประเมินได้"