Spaces:
Paused
Paused
Update llm_model.py
Browse files- llm_model.py +21 -4
llm_model.py
CHANGED
@@ -1,19 +1,24 @@
|
|
1 |
import torch
|
2 |
import traceback
|
3 |
-
from transformers import AutoTokenizer, AutoModelForCausalLM
|
4 |
from log import log
|
5 |
from pydantic import BaseModel
|
6 |
import os
|
|
|
7 |
|
8 |
class Message(BaseModel):
|
9 |
user_input: str
|
10 |
|
11 |
class LLMModel:
|
12 |
def __init__(self):
|
13 |
-
self.model = None
|
14 |
self.tokenizer = None
|
15 |
self.eos_token_id = None
|
16 |
|
|
|
|
|
|
|
|
|
17 |
def setup(self, s_config, project_config, project_path):
|
18 |
try:
|
19 |
log("🧠 LLMModel setup() başladı")
|
@@ -27,7 +32,7 @@ class LLMModel:
|
|
27 |
log(f"📦 Hugging Face cloud modeli yükleniyor: {model_base}")
|
28 |
self.tokenizer = AutoTokenizer.from_pretrained(model_base, token=token, use_fast=False)
|
29 |
self.model = AutoModelForCausalLM.from_pretrained(model_base, token=token, torch_dtype=torch.float32).to(device)
|
30 |
-
elif s_config.work_mode
|
31 |
log(f"📦 Model indiriliyor veya yükleniyor: {model_base}")
|
32 |
self.tokenizer = AutoTokenizer.from_pretrained(model_base, use_fast=False)
|
33 |
self.model = AutoModelForCausalLM.from_pretrained(model_base, torch_dtype=torch.float32).to(device)
|
@@ -44,6 +49,18 @@ class LLMModel:
|
|
44 |
log(f"❌ LLMModel setup() hatası: {e}")
|
45 |
traceback.print_exc()
|
46 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
47 |
async def generate_response(self, text, project_config):
|
48 |
messages = [{"role": "user", "content": text}]
|
49 |
encodeds = self.tokenizer.apply_chat_template(messages, return_tensors="pt", add_generation_prompt=True)
|
@@ -75,4 +92,4 @@ class LLMModel:
|
|
75 |
if start != -1:
|
76 |
decoded = decoded[start + len(tag):].strip()
|
77 |
break
|
78 |
-
return decoded, top_conf
|
|
|
1 |
import torch
|
2 |
import traceback
|
3 |
+
from transformers import AutoTokenizer, AutoModelForCausalLM, AutoModelForSequenceClassification
|
4 |
from log import log
|
5 |
from pydantic import BaseModel
|
6 |
import os
|
7 |
+
import json
|
8 |
|
9 |
class Message(BaseModel):
|
10 |
user_input: str
|
11 |
|
12 |
class LLMModel:
|
13 |
def __init__(self):
|
14 |
+
self.model = None # ana model
|
15 |
self.tokenizer = None
|
16 |
self.eos_token_id = None
|
17 |
|
18 |
+
self.intent_model = None # intent modeli
|
19 |
+
self.intent_tokenizer = None
|
20 |
+
self.intent_label2id = None
|
21 |
+
|
22 |
def setup(self, s_config, project_config, project_path):
|
23 |
try:
|
24 |
log("🧠 LLMModel setup() başladı")
|
|
|
32 |
log(f"📦 Hugging Face cloud modeli yükleniyor: {model_base}")
|
33 |
self.tokenizer = AutoTokenizer.from_pretrained(model_base, token=token, use_fast=False)
|
34 |
self.model = AutoModelForCausalLM.from_pretrained(model_base, token=token, torch_dtype=torch.float32).to(device)
|
35 |
+
elif s_config.work_mode in ["cloud", "on-prem"]:
|
36 |
log(f"📦 Model indiriliyor veya yükleniyor: {model_base}")
|
37 |
self.tokenizer = AutoTokenizer.from_pretrained(model_base, use_fast=False)
|
38 |
self.model = AutoModelForCausalLM.from_pretrained(model_base, torch_dtype=torch.float32).to(device)
|
|
|
49 |
log(f"❌ LLMModel setup() hatası: {e}")
|
50 |
traceback.print_exc()
|
51 |
|
52 |
+
def load_intent_model(self, model_path):
|
53 |
+
try:
|
54 |
+
log(f"🔧 Intent modeli yükleniyor: {model_path}")
|
55 |
+
self.intent_tokenizer = AutoTokenizer.from_pretrained(model_path)
|
56 |
+
self.intent_model = AutoModelForSequenceClassification.from_pretrained(model_path)
|
57 |
+
with open(os.path.join(model_path, "label2id.json")) as f:
|
58 |
+
self.intent_label2id = json.load(f)
|
59 |
+
log("✅ Intent modeli yüklemesi tamamlandı.")
|
60 |
+
except Exception as e:
|
61 |
+
log(f"❌ Intent modeli yükleme hatası: {e}")
|
62 |
+
traceback.print_exc()
|
63 |
+
|
64 |
async def generate_response(self, text, project_config):
|
65 |
messages = [{"role": "user", "content": text}]
|
66 |
encodeds = self.tokenizer.apply_chat_template(messages, return_tensors="pt", add_generation_prompt=True)
|
|
|
92 |
if start != -1:
|
93 |
decoded = decoded[start + len(tag):].strip()
|
94 |
break
|
95 |
+
return decoded, top_conf
|