ciyidogan commited on
Commit
9660152
·
verified ·
1 Parent(s): 8be9d0b

Update inference_test.py

Browse files
Files changed (1) hide show
  1. inference_test.py +6 -23
inference_test.py CHANGED
@@ -4,7 +4,7 @@ from fastapi.responses import HTMLResponse, JSONResponse
4
  from transformers import AutoTokenizer, AutoModelForSequenceClassification
5
  import intent_test_runner
6
  from service_config import ServiceConfig
7
- import intent, intent, llm_model
8
  from log import log
9
 
10
  s_config = ServiceConfig()
@@ -12,14 +12,11 @@ s_config.setup_environment()
12
 
13
  # === FastAPI
14
  app = FastAPI()
15
- chat_history = []
16
 
17
  @app.get("/")
18
  def health():
19
  return {"status": "ok"}
20
 
21
- import uuid # yukarıda zaten eklendiğini varsayıyoruz
22
-
23
  @app.post("/run_tests", status_code=202)
24
  def run_tests():
25
  log("🚦 /run_tests çağrıldı. Testler başlatılıyor...")
@@ -28,7 +25,6 @@ def run_tests():
28
 
29
  @app.get("/start", response_class=HTMLResponse)
30
  def root():
31
- # Yeni session ID üret
32
  session_id = str(uuid.uuid4())
33
  session_info = {
34
  "session_id": session_id,
@@ -37,15 +33,10 @@ def root():
37
  "last_intent": None,
38
  "awaiting_variable": None
39
  }
40
-
41
- # Session store başlatıldıysa ekle
42
  if not hasattr(app.state, "session_store"):
43
  app.state.session_store = {}
44
  app.state.session_store[session_id] = session_info
45
-
46
  log(f"🌐 /start ile yeni session başlatıldı: {session_id}")
47
-
48
- # HTML + session_id gömülü
49
  return f"""
50
  <html><body>
51
  <h2>Turkcell LLM Chat</h2>
@@ -56,7 +47,6 @@ def root():
56
  <script>
57
  const sessionId = "{session_id}";
58
  localStorage.setItem("session_id", sessionId);
59
-
60
  async function send() {{
61
  const input = document.getElementById("input").value;
62
  const res = await fetch('/chat', {{
@@ -78,10 +68,8 @@ def root():
78
  def start_chat():
79
  if llm_model.model is None or llm_model.tokenizer is None:
80
  return {"error": "Model yüklenmedi."}
81
-
82
  if not hasattr(app.state, "session_store"):
83
  app.state.session_store = {}
84
-
85
  session_id = str(uuid.uuid4())
86
  session_info = {
87
  "session_id": session_id,
@@ -134,7 +122,6 @@ async def chat(msg: llm_model.Message, request: Request):
134
  if llm_model.model is None or llm_model.tokenizer is None:
135
  return {"error": "Model yüklenmedi."}
136
 
137
- # 🎯 Intent modeli varsa her mesajda intent tespiti yap
138
  detected_intent, intent_conf = None, 0.0
139
  if s_config.INTENT_MODEL:
140
  detected_intent, intent_conf = await intent.detect_intent(user_input)
@@ -143,7 +130,6 @@ async def chat(msg: llm_model.Message, request: Request):
143
  current_intent = session.get("last_intent")
144
  awaiting_variable = session.get("awaiting_variable")
145
 
146
- # 🧹 Kullanıcı farklı intent başlattıysa → context sıfırlanır
147
  if (
148
  awaiting_variable and
149
  detected_intent and
@@ -156,7 +142,6 @@ async def chat(msg: llm_model.Message, request: Request):
156
  session["last_intent"] = detected_intent
157
  current_intent = detected_intent
158
 
159
- # 🎯 Eğer intent geçerliyse ve tanımlıysa, intent’e göre işleyişe gir
160
  if (
161
  detected_intent and
162
  intent_conf > s_config.INTENT_CONFIDENCE_THRESHOLD and
@@ -167,7 +152,6 @@ async def chat(msg: llm_model.Message, request: Request):
167
  data_formats = s_config.DATA_FORMATS
168
  variable_format_map = definition.get("variable_formats", {})
169
 
170
- # 🧩 Awaiting variable varsa onu çözmeye çalış
171
  if awaiting_variable:
172
  extracted = intent.extract_parameters(pattern_list, user_input)
173
  for p in extracted:
@@ -177,12 +161,10 @@ async def chat(msg: llm_model.Message, request: Request):
177
  log(f"✅ Awaiting parametre tamamlandı: {awaiting_variable} = {p['value']}")
178
  break
179
 
180
- # 🔍 Tüm parametreleri yeniden değerlendir
181
  extracted = intent.extract_parameters(pattern_list, user_input)
182
  variables = {p["key"]: p["value"] for p in extracted}
183
  session.setdefault("variables", {}).update(variables)
184
 
185
- # ✔️ Validasyon
186
  is_valid, validation_errors = intent.validate_variable_formats(session["variables"], variable_format_map, data_formats)
187
  if not is_valid:
188
  session["awaiting_variable"] = list(validation_errors.keys())[0]
@@ -190,7 +172,6 @@ async def chat(msg: llm_model.Message, request: Request):
190
  app.state.session_store = session_store
191
  return {"response": list(validation_errors.values())[0]}
192
 
193
- # ❓ Eksik parametre kontrolü
194
  expected_vars = list(variable_format_map.keys())
195
  missing_vars = [v for v in expected_vars if v not in session["variables"]]
196
  if missing_vars:
@@ -199,7 +180,6 @@ async def chat(msg: llm_model.Message, request: Request):
199
  app.state.session_store = session_store
200
  return {"response": f"Lütfen {missing_vars[0]} bilgisini belirtir misiniz?"}
201
 
202
- # 🚀 Intent çalıştır
203
  result = intent.execute_intent(
204
  detected_intent,
205
  user_input,
@@ -218,7 +198,6 @@ async def chat(msg: llm_model.Message, request: Request):
218
  else:
219
  return {"response": random.choice(s_config.FALLBACK_ANSWERS)}
220
 
221
- # 🤖 Intent algılanamadıysa veya threshold altındaysa LLM’e sor
222
  session["awaiting_variable"] = None
223
  session["variables"] = {}
224
  response, response_conf = await llm_model.generate_response(user_input, s_config)
@@ -230,7 +209,11 @@ async def chat(msg: llm_model.Message, request: Request):
230
  traceback.print_exc()
231
  return JSONResponse(content={"error": str(e)}, status_code=500)
232
 
 
233
  threading.Thread(target=llm_model.setup_model, kwargs={"s_config": s_config}, daemon=True).start()
234
  threading.Thread(target=lambda: uvicorn.run(app, host="0.0.0.0", port=7860), daemon=True).start()
 
 
 
235
  while True:
236
- time.sleep(60)
 
4
  from transformers import AutoTokenizer, AutoModelForSequenceClassification
5
  import intent_test_runner
6
  from service_config import ServiceConfig
7
+ import intent, llm_model
8
  from log import log
9
 
10
  s_config = ServiceConfig()
 
12
 
13
  # === FastAPI
14
  app = FastAPI()
 
15
 
16
  @app.get("/")
17
  def health():
18
  return {"status": "ok"}
19
 
 
 
20
  @app.post("/run_tests", status_code=202)
21
  def run_tests():
22
  log("🚦 /run_tests çağrıldı. Testler başlatılıyor...")
 
25
 
26
  @app.get("/start", response_class=HTMLResponse)
27
  def root():
 
28
  session_id = str(uuid.uuid4())
29
  session_info = {
30
  "session_id": session_id,
 
33
  "last_intent": None,
34
  "awaiting_variable": None
35
  }
 
 
36
  if not hasattr(app.state, "session_store"):
37
  app.state.session_store = {}
38
  app.state.session_store[session_id] = session_info
 
39
  log(f"🌐 /start ile yeni session başlatıldı: {session_id}")
 
 
40
  return f"""
41
  <html><body>
42
  <h2>Turkcell LLM Chat</h2>
 
47
  <script>
48
  const sessionId = "{session_id}";
49
  localStorage.setItem("session_id", sessionId);
 
50
  async function send() {{
51
  const input = document.getElementById("input").value;
52
  const res = await fetch('/chat', {{
 
68
  def start_chat():
69
  if llm_model.model is None or llm_model.tokenizer is None:
70
  return {"error": "Model yüklenmedi."}
 
71
  if not hasattr(app.state, "session_store"):
72
  app.state.session_store = {}
 
73
  session_id = str(uuid.uuid4())
74
  session_info = {
75
  "session_id": session_id,
 
122
  if llm_model.model is None or llm_model.tokenizer is None:
123
  return {"error": "Model yüklenmedi."}
124
 
 
125
  detected_intent, intent_conf = None, 0.0
126
  if s_config.INTENT_MODEL:
127
  detected_intent, intent_conf = await intent.detect_intent(user_input)
 
130
  current_intent = session.get("last_intent")
131
  awaiting_variable = session.get("awaiting_variable")
132
 
 
133
  if (
134
  awaiting_variable and
135
  detected_intent and
 
142
  session["last_intent"] = detected_intent
143
  current_intent = detected_intent
144
 
 
145
  if (
146
  detected_intent and
147
  intent_conf > s_config.INTENT_CONFIDENCE_THRESHOLD and
 
152
  data_formats = s_config.DATA_FORMATS
153
  variable_format_map = definition.get("variable_formats", {})
154
 
 
155
  if awaiting_variable:
156
  extracted = intent.extract_parameters(pattern_list, user_input)
157
  for p in extracted:
 
161
  log(f"✅ Awaiting parametre tamamlandı: {awaiting_variable} = {p['value']}")
162
  break
163
 
 
164
  extracted = intent.extract_parameters(pattern_list, user_input)
165
  variables = {p["key"]: p["value"] for p in extracted}
166
  session.setdefault("variables", {}).update(variables)
167
 
 
168
  is_valid, validation_errors = intent.validate_variable_formats(session["variables"], variable_format_map, data_formats)
169
  if not is_valid:
170
  session["awaiting_variable"] = list(validation_errors.keys())[0]
 
172
  app.state.session_store = session_store
173
  return {"response": list(validation_errors.values())[0]}
174
 
 
175
  expected_vars = list(variable_format_map.keys())
176
  missing_vars = [v for v in expected_vars if v not in session["variables"]]
177
  if missing_vars:
 
180
  app.state.session_store = session_store
181
  return {"response": f"Lütfen {missing_vars[0]} bilgisini belirtir misiniz?"}
182
 
 
183
  result = intent.execute_intent(
184
  detected_intent,
185
  user_input,
 
198
  else:
199
  return {"response": random.choice(s_config.FALLBACK_ANSWERS)}
200
 
 
201
  session["awaiting_variable"] = None
202
  session["variables"] = {}
203
  response, response_conf = await llm_model.generate_response(user_input, s_config)
 
209
  traceback.print_exc()
210
  return JSONResponse(content={"error": str(e)}, status_code=500)
211
 
212
+ # 🧠 Model setup ve sunucu
213
  threading.Thread(target=llm_model.setup_model, kwargs={"s_config": s_config}, daemon=True).start()
214
  threading.Thread(target=lambda: uvicorn.run(app, host="0.0.0.0", port=7860), daemon=True).start()
215
+
216
+ # 🧘 Eğitim sonrası uygulama restart olmasın diye bekleme
217
+ log("⏸️ Eğitim tamamlandı. Servis bekleme modunda...")
218
  while True:
219
+ time.sleep(60)