ciyidogan commited on
Commit
8ab22e1
·
verified ·
1 Parent(s): f8d9ecf

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +34 -9
app.py CHANGED
@@ -1,12 +1,21 @@
1
  import os
 
 
2
  from fastapi import FastAPI
3
  from pydantic import BaseModel
4
  from llama_cpp import Llama
 
5
 
6
- # GGUF model path (Hugging Face Space'te bu modele yüklemen gerek)
 
 
 
 
 
 
7
  MODEL_PATH = "./model/Turkish-Llama-3-8B-function-calling.Q4_K_M.gguf"
8
 
9
- # System prompt (hard-coded test promptumuz)
10
  SYSTEM_PROMPT = """
11
  Siz bir görev tabanlı asistan botsunuz. Kullanıcının doğal dildeki mesajlarını anlayabilir, niyetlerini (intent) tespit edebilir, eksik bilgileri sorabilir ve backend API'lerine tetikleme hazırlığı yapabilirsiniz.
12
 
@@ -16,7 +25,7 @@ Siz bir görev tabanlı asistan botsunuz. Kullanıcının doğal dildeki mesajla
16
  #ANSWER: <cevap metni veya NONE>
17
  #INTENT: <intent_adı> (veya NONE)
18
  #PARAMS: {parametre_adı: değer, ...}
19
- #MISSING: [eksik_parametre_adı, ...]
20
  #ACTION_JSON: {api için gönderilecek json, eksikse boş bırak}
21
 
22
  ✅ Desteklenen intent'ler:
@@ -36,15 +45,31 @@ class ChatRequest(BaseModel):
36
  @app.on_event("startup")
37
  def load_model():
38
  global llm
39
- llm = Llama(model_path=MODEL_PATH, n_gpu_layers=-1, n_ctx=4096)
40
- print(" Model yüklendi.")
 
 
 
 
 
 
 
 
41
 
42
  @app.post("/chat")
43
  def chat(req: ChatRequest):
44
- prompt = f"{SYSTEM_PROMPT}\n\nKullanıcı: {req.prompt}\nAsistan:"
45
- response = llm(prompt, max_tokens=512, stop=["Kullanıcı:", "Asistan:"], echo=False)
46
- answer = response["choices"][0]["text"].strip()
47
- return {"response": answer}
 
 
 
 
 
 
 
 
48
 
49
  @app.get("/")
50
  def health():
 
1
  import os
2
+ import sys
3
+ import traceback
4
  from fastapi import FastAPI
5
  from pydantic import BaseModel
6
  from llama_cpp import Llama
7
+ from datetime import datetime
8
 
9
+ # === 🕒 Zamanlı log fonksiyonu
10
+ def log(message):
11
+ timestamp = datetime.now().strftime("%H:%M:%S")
12
+ line = f"[{timestamp}] {message}"
13
+ print(line, flush=True)
14
+
15
+ # === GGUF model yolunu buraya koy
16
  MODEL_PATH = "./model/Turkish-Llama-3-8B-function-calling.Q4_K_M.gguf"
17
 
18
+ # === Hard-coded system prompt (bizim test mantığımız)
19
  SYSTEM_PROMPT = """
20
  Siz bir görev tabanlı asistan botsunuz. Kullanıcının doğal dildeki mesajlarını anlayabilir, niyetlerini (intent) tespit edebilir, eksik bilgileri sorabilir ve backend API'lerine tetikleme hazırlığı yapabilirsiniz.
21
 
 
25
  #ANSWER: <cevap metni veya NONE>
26
  #INTENT: <intent_adı> (veya NONE)
27
  #PARAMS: {parametre_adı: değer, ...}
28
+ #MISSING: [eksik_parametre_adı, ...}
29
  #ACTION_JSON: {api için gönderilecek json, eksikse boş bırak}
30
 
31
  ✅ Desteklenen intent'ler:
 
45
  @app.on_event("startup")
46
  def load_model():
47
  global llm
48
+ try:
49
+ log("🚀 Uygulama başlatılıyor...")
50
+ log(f"📦 GGUF model yükleniyor: {MODEL_PATH}")
51
+ llm = Llama(model_path=MODEL_PATH, n_gpu_layers=-1, n_ctx=4096)
52
+ log("✅ Model başarıyla yüklendi ve kullanılmaya hazır.")
53
+ log("💡 Artık /chat endpoint'ine POST isteği gönderebilirsiniz.")
54
+ except Exception as e:
55
+ log(f"❌ Model yükleme hatası: {e}")
56
+ traceback.print_exc()
57
+ sys.exit(1)
58
 
59
  @app.post("/chat")
60
  def chat(req: ChatRequest):
61
+ try:
62
+ log(f"💬 Yeni istek alındı: '{req.prompt}'")
63
+ prompt = f"{SYSTEM_PROMPT}\n\nKullanıcı: {req.prompt}\nAsistan:"
64
+ log("🧠 LLM çağrısı başlatılıyor...")
65
+ response = llm(prompt, max_tokens=512, stop=["Kullanıcı:", "Asistan:"], echo=False)
66
+ answer = response["choices"][0]["text"].strip()
67
+ log("✅ LLM cevabı başarıyla alındı.")
68
+ return {"response": answer}
69
+ except Exception as e:
70
+ log(f"❌ /chat sırasında hata oluştu: {e}")
71
+ traceback.print_exc()
72
+ return {"error": f"Hata: {str(e)}"}
73
 
74
  @app.get("/")
75
  def health():