aertsimon90 commited on
Commit
f31e99b
·
verified ·
1 Parent(s): 46a6141

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +24 -20
app.py CHANGED
@@ -7,7 +7,7 @@ import gradio as gr
7
  from transformers import AutoModelForCausalLM, AutoTokenizer, TextIteratorStreamer
8
  from threading import Thread
9
 
10
- # İstediğin modeller sabit tutuldu
11
  DEFAULT_MODELS = [
12
  "Qwen/Qwen3.8-27B",
13
  "Qwen/Qwen3.5-9B"
@@ -108,28 +108,32 @@ def api_completion(model_name, lsu_accesstoken, messages, temperature, max_token
108
  thread = Thread(target=model.generate, kwargs=generation_kwargs)
109
  thread.start()
110
 
111
- # Düşünme (<think>...</think>) kısımlarını filtrelemek için durum yönetimi
112
- buffer = ""
113
- thinking_skipped = False
 
114
 
115
  for new_text in streamer:
116
- if not thinking_skipped:
117
- buffer += new_text
118
- if "</think>" in buffer:
119
- # </think> etiketini bulduk, sonrasındaki gerçek yanıtı ayırıyoruz
120
- parts = buffer.split("</think>", 1)
121
- thinking_skipped = True
122
- cleaned_text = parts[1].lstrip("\n")
123
- if cleaned_text:
124
- yield cleaned_text
125
- elif not buffer.startswith("<think>") and len(buffer) > 80:
126
- # Model düşünme etiketi kullanmıyorsa doğrudan akışı başlat
127
- thinking_skipped = True
128
- yield buffer
129
- buffer = ""
130
  else:
131
- # Düşünme kısmı bitti, gelen her parçayı doğrudan gönder
132
- yield new_text
 
 
 
 
 
133
 
134
  print("✅ Yanıt akışı tamamlandı.", flush=True)
135
 
 
7
  from transformers import AutoModelForCausalLM, AutoTokenizer, TextIteratorStreamer
8
  from threading import Thread
9
 
10
+ # İstediğin modeller sabit
11
  DEFAULT_MODELS = [
12
  "Qwen/Qwen3.8-27B",
13
  "Qwen/Qwen3.5-9B"
 
108
  thread = Thread(target=model.generate, kwargs=generation_kwargs)
109
  thread.start()
110
 
111
+ # KUSURSUZ THINK FİLTRELEME BUFFER MİMARİSİ
112
+ accumulated_text = ""
113
+ thinking_done = False
114
+ sent_length = 0
115
 
116
  for new_text in streamer:
117
+ accumulated_text += new_text
118
+
119
+ if not thinking_done:
120
+ # Model hâlâ düşünüyor veya </think> etiketi henüz tamamlanmadı
121
+ if "</think>" in accumulated_text:
122
+ thinking_done = True
123
+ # </think> etiketinden sonraki kısmı buluyoruz
124
+ idx = accumulated_text.find("</think>") + len("</think>")
125
+ clean_part = accumulated_text[idx:].lstrip("\n")
126
+ if clean_part:
127
+ yield clean_part
128
+ sent_length = len(clean_part)
 
 
129
  else:
130
+ # Düşünme kısmı bitti, gelen temiz yanıtı eksiksiz ve parça parça akıtıyoruz
131
+ idx = accumulated_text.find("</think>") + len("</think>")
132
+ clean_part = accumulated_text[idx:].lstrip("\n")
133
+ if len(clean_part) > sent_length:
134
+ new_chunk_to_send = clean_part[sent_length:]
135
+ yield new_chunk_to_send
136
+ sent_length = len(clean_part)
137
 
138
  print("✅ Yanıt akışı tamamlandı.", flush=True)
139