ciyidogan commited on
Commit
2f0b1a7
·
verified ·
1 Parent(s): 47ff742

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +39 -3
app.py CHANGED
@@ -2,6 +2,7 @@ import os
2
  from fastapi import FastAPI
3
  from unsloth import FastLanguageModel
4
  from transformers import pipeline
 
5
  from datetime import datetime
6
 
7
  app = FastAPI()
@@ -14,6 +15,27 @@ def log(message):
14
  timestamp = datetime.now().strftime("%H:%M:%S")
15
  print(f"[{timestamp}] {message}", flush=True)
16
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
17
  @app.on_event("startup")
18
  def load_model():
19
  global model, tokenizer, pipe
@@ -43,6 +65,20 @@ def load_model():
43
  )
44
  log("✅ Model başarıyla yüklendi ve cache’e alındı.")
45
 
46
- @app.get("/")
47
- def health():
48
- return {"status": "ok"}
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2
  from fastapi import FastAPI
3
  from unsloth import FastLanguageModel
4
  from transformers import pipeline
5
+ from pydantic import BaseModel
6
  from datetime import datetime
7
 
8
  app = FastAPI()
 
15
  timestamp = datetime.now().strftime("%H:%M:%S")
16
  print(f"[{timestamp}] {message}", flush=True)
17
 
18
+ # === System prompt (bizim intent yapı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
+ ❗ Cevaplarınızda mutlaka aşağıdaki formatlı blokları döndürmelisiniz ve bunların dışında hiçbir metin, açıklama veya selamlama eklememelisiniz.
22
+ Eğer intent tespit ettiyseniz ANSWER kısmını NONE, tespit edemediyseniz INTENT kısmını NONE olarak dönmelisiniz.
23
+ ✅ Format:
24
+ #ANSWER: <cevap metni> (veya NONE)
25
+ #INTENT: <intent_adı> (veya NONE)
26
+ #PARAMS: {parametre_adı: değer, ...}
27
+ #MISSING: [eksik_parametre_adı, ...]
28
+ #ACTION_JSON: {api için gönderilecek json, eksikse boş bırak}
29
+ ✅ Desteklenen intent'ler:
30
+ - doviz-kuru-intent → parametre: <currency> (dolar, euro, TL) → json: { "currency": "<currency>" }
31
+ - yol-durumu-intent → parametreler: <from_location>, <to_location> (Ankara, İstanbul, İzmir) → json: { "from_location": "<from_location>", "to_location": "<to_location>" }
32
+ - hava-durumu-intent → parametre: <city> (Ankara, İstanbul, İzmir) → json: { "city": "<city>" }
33
+ ❗ Kullanıcıya hitap ederken formal bir dil kullanınız, sadece bu formatlı blokları döndürünüz.
34
+ """
35
+
36
+ class ChatRequest(BaseModel):
37
+ prompt: str
38
+
39
  @app.on_event("startup")
40
  def load_model():
41
  global model, tokenizer, pipe
 
65
  )
66
  log("✅ Model başarıyla yüklendi ve cache’e alındı.")
67
 
68
+ @app.post("/chat")
69
+ def chat(req: ChatRequest):
70
+ try:
71
+ log(f"💬 Yeni istek alındı: '{req.prompt}'")
72
+ full_prompt = f"{SYSTEM_PROMPT}\n\nKullanıcı: {req.prompt}\nAsistan:"
73
+ log("🧠 LLM çağrısı başlatılıyor...")
74
+
75
+ outputs = pipe(
76
+ full_prompt,
77
+ max_new_tokens=256,
78
+ temperature=0.2,
79
+ top_p=0.95,
80
+ repetition_penalty=1.1
81
+ )
82
+ answer = outputs[0]["generated_text"].replace(full_prompt, "").strip()
83
+ log("✅ LLM cevabı başarıyla alındı.")
84
+ return {"respons