userdotcs commited on
Commit
69d604f
·
verified ·
1 Parent(s): 7e34946

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +22 -12
app.py CHANGED
@@ -1,6 +1,7 @@
1
  import torch
2
  import gradio as gr
3
  import spaces
 
4
  from transformers import AutoModelForCausalLM, AutoTokenizer
5
  from peft import PeftModel
6
 
@@ -8,14 +9,12 @@ from peft import PeftModel
8
  base_model_name = "unsloth/gpt-oss-20b"
9
  adapter_model_name = "userdotcs/gpt-oss-20b-turkish-correction-adapter"
10
 
11
- print("Model yükleniyor (MXFP4 formatı algılandı)...")
12
  tokenizer = AutoTokenizer.from_pretrained(base_model_name)
13
 
14
- # Hata almamak için kuantizasyon parametrelerini manuel geçmiyoruz,
15
- # model zaten kuantize olduğu için sadece cihazı ve tipi belirtiyoruz.
16
  base_model = AutoModelForCausalLM.from_pretrained(
17
  base_model_name,
18
- torch_dtype=torch.bfloat16, # MXFP4 modeller genelde bfloat16 ile daha iyi çalışır
19
  device_map="auto"
20
  )
21
 
@@ -39,22 +38,33 @@ def fix_text(input_text):
39
  with torch.no_grad():
40
  outputs = model.generate(
41
  input_ids=inputs,
42
- max_new_tokens=512,
43
- do_sample=False, # Daha tutarlı düzeltmeler için numune almayı kapattık
44
  pad_token_id=tokenizer.eos_token_id
45
  )
46
 
47
- # Input token sayısını alıp sadece yeni kısmı kesiyoruz
48
  input_length = inputs.shape[1]
49
- response = tokenizer.decode(outputs[0][input_length:], skip_special_tokens=True)
50
- return response.strip()
 
 
 
 
 
 
 
 
 
 
 
51
 
52
  # Arayüz
53
  demo = gr.Interface(
54
  fn=fix_text,
55
- inputs=gr.Textbox(label="Girdi", lines=3),
56
- outputs=gr.Textbox(label="Sonuç", lines=3),
57
- title="Türkçe Yazım Düzeltme"
58
  )
59
 
60
  if __name__ == "__main__":
 
1
  import torch
2
  import gradio as gr
3
  import spaces
4
+ import re # Metin temizleme için eklendi
5
  from transformers import AutoModelForCausalLM, AutoTokenizer
6
  from peft import PeftModel
7
 
 
9
  base_model_name = "unsloth/gpt-oss-20b"
10
  adapter_model_name = "userdotcs/gpt-oss-20b-turkish-correction-adapter"
11
 
12
+ print("Model yükleniyor...")
13
  tokenizer = AutoTokenizer.from_pretrained(base_model_name)
14
 
 
 
15
  base_model = AutoModelForCausalLM.from_pretrained(
16
  base_model_name,
17
+ torch_dtype=torch.bfloat16,
18
  device_map="auto"
19
  )
20
 
 
38
  with torch.no_grad():
39
  outputs = model.generate(
40
  input_ids=inputs,
41
+ max_new_tokens=1024, # Biraz artırdık çünkü düşünme kısmı token tüketir
42
+ do_sample=False,
43
  pad_token_id=tokenizer.eos_token_id
44
  )
45
 
46
+ # Yanıtı decode et
47
  input_length = inputs.shape[1]
48
+ full_response = tokenizer.decode(outputs[0][input_length:], skip_special_tokens=True)
49
+
50
+ # --- Düşünme Kısmını Temizleme ---
51
+ # 1. Yaygın düşünme etiketlerini (thought, reasoning vb.) temizle
52
+ clean_response = re.sub(r'<(thought|reasoning)>.*?</\1>', '', full_response, flags=re.DOTALL)
53
+
54
+ # 2. Eğer model etiket kullanmadan sadece bir boşluk veya özel karakterle ayırıyorsa
55
+ # bazen düşünme kısmı metnin en başında kalabilir.
56
+ # Genellikle asıl yanıt en son kısımdır.
57
+ if "### Response" in clean_response:
58
+ clean_response = clean_response.split("### Response")[-1]
59
+
60
+ return clean_response.strip()
61
 
62
  # Arayüz
63
  demo = gr.Interface(
64
  fn=fix_text,
65
+ inputs=gr.Textbox(label="Input", lines=3),
66
+ outputs=gr.Textbox(label="Output", lines=3),
67
+ title="gpt-oss-20b Turkish correction"
68
  )
69
 
70
  if __name__ == "__main__":