ciyidogan commited on
Commit
7460785
·
verified ·
1 Parent(s): d72f235

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +28 -24
app.py CHANGED
@@ -1,10 +1,11 @@
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 huggingface_hub import hf_hub_download
8
  from datetime import datetime
9
 
10
  # === 🕒 Zamanlı log fonksiyonu
@@ -14,12 +15,10 @@ def log(message):
14
  print(line, flush=True)
15
 
16
  # === Model bilgileri
17
- REPO_ID = "oncu/Turkish-Llama-3-8B-function-calling-GGUF"
18
- FILENAME = "turkish-llama-3-8b-function-calling.q8_0.gguf"
19
- LOCAL_MODEL_PATH = f"/tmp/{FILENAME}"
20
  HF_TOKEN = os.getenv("HF_TOKEN")
21
 
22
- # === System prompt
23
  SYSTEM_PROMPT = """
24
  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.
25
  ❗ 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.
@@ -37,30 +36,34 @@ Siz bir görev tabanlı asistan botsunuz. Kullanıcının doğal dildeki mesajla
37
  """
38
 
39
  app = FastAPI()
40
- llm = None
 
 
41
 
42
  class ChatRequest(BaseModel):
43
  prompt: str
44
 
45
  @app.on_event("startup")
46
  def load_model():
47
- global llm
48
  try:
49
  log("🚀 Uygulama başlatılıyor...")
50
- log("📥 Model indirme başlatılıyor...")
51
 
52
- model_path = hf_hub_download(
53
- repo_id=REPO_ID,
54
- filename=FILENAME,
55
- local_dir="/tmp",
56
  token=HF_TOKEN
57
  )
58
- log(f"✅ Model indirildi: {model_path}")
 
 
 
 
 
 
59
 
60
- log("📦 GGUF model yükleniyor...")
61
- llm = Llama(model_path=model_path, n_gpu_layers=40, n_ctx=1024)
62
  log("✅ Model başarıyla yüklendi ve kullanılmaya hazır.")
63
- log("💡 Artık /chat endpoint'ine POST isteği gönderebilirsiniz.")
64
  except Exception as e:
65
  log(f"❌ Model yükleme hatası: {e}")
66
  traceback.print_exc()
@@ -70,16 +73,17 @@ def load_model():
70
  def chat(req: ChatRequest):
71
  try:
72
  log(f"💬 Yeni istek alındı: '{req.prompt}'")
73
- prompt = f"{SYSTEM_PROMPT}\n\nKullanıcı: {req.prompt}\nAsistan:"
74
  log("🧠 LLM çağrısı başlatılıyor...")
75
 
76
- response = llm(
77
- prompt,
78
- max_tokens=256,
79
- stop=["Kullanıcı:", "Asistan:"],
80
- echo=False
 
81
  )
82
- answer = response["choices"][0]["text"].strip()
83
  log("✅ LLM cevabı başarıyla alındı.")
84
  return {"response": answer}
85
 
 
1
  import os
2
  import sys
3
  import traceback
4
+ import json
5
  from fastapi import FastAPI
6
  from pydantic import BaseModel
7
+ from unsloth import FastLanguageModel
8
+ from transformers import pipeline
9
  from datetime import datetime
10
 
11
  # === 🕒 Zamanlı log fonksiyonu
 
15
  print(line, flush=True)
16
 
17
  # === Model bilgileri
18
+ MODEL_NAME = "atasoglu/Turkish-Llama-3-8B-function-calling"
 
 
19
  HF_TOKEN = os.getenv("HF_TOKEN")
20
 
21
+ # === System prompt (bizim intent yapımız)
22
  SYSTEM_PROMPT = """
23
  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.
24
  ❗ 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.
 
36
  """
37
 
38
  app = FastAPI()
39
+ model = None
40
+ tokenizer = None
41
+ pipe = None
42
 
43
  class ChatRequest(BaseModel):
44
  prompt: str
45
 
46
  @app.on_event("startup")
47
  def load_model():
48
+ global model, tokenizer, pipe
49
  try:
50
  log("🚀 Uygulama başlatılıyor...")
51
+ log("📥 Model yüklemesi başlatılıyor...")
52
 
53
+ model, tokenizer = FastLanguageModel.from_pretrained(
54
+ model_name=MODEL_NAME,
55
+ load_in_4bit=True,
 
56
  token=HF_TOKEN
57
  )
58
+ FastLanguageModel.for_inference(model)
59
+ pipe = pipeline(
60
+ "text-generation",
61
+ model=model,
62
+ tokenizer=tokenizer,
63
+ device_map="auto"
64
+ )
65
 
 
 
66
  log("✅ Model başarıyla yüklendi ve kullanılmaya hazır.")
 
67
  except Exception as e:
68
  log(f"❌ Model yükleme hatası: {e}")
69
  traceback.print_exc()
 
73
  def chat(req: ChatRequest):
74
  try:
75
  log(f"💬 Yeni istek alındı: '{req.prompt}'")
76
+ full_prompt = f"{SYSTEM_PROMPT}\n\nKullanıcı: {req.prompt}\nAsistan:"
77
  log("🧠 LLM çağrısı başlatılıyor...")
78
 
79
+ outputs = pipe(
80
+ full_prompt,
81
+ max_new_tokens=256,
82
+ temperature=0.2,
83
+ top_p=0.95,
84
+ repetition_penalty=1.1
85
  )
86
+ answer = outputs[0]["generated_text"].replace(full_prompt, "").strip()
87
  log("✅ LLM cevabı başarıyla alındı.")
88
  return {"response": answer}
89