Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
|
@@ -41,12 +41,17 @@ current_css = """
|
|
| 41 |
margin-bottom: 10px;
|
| 42 |
box-shadow: 0 2px 5px rgba(0,0,0,0.1);
|
| 43 |
}
|
| 44 |
-
#
|
| 45 |
font-size: 1.2em;
|
| 46 |
font-weight: bold;
|
| 47 |
color: #333;
|
| 48 |
text-align: center;
|
| 49 |
margin-top: 10px;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 50 |
}
|
| 51 |
"""
|
| 52 |
|
|
@@ -187,9 +192,6 @@ def initialize_components():
|
|
| 187 |
print("Embeddingler hesaplanıyor ve FAISS indeksi oluşturuluyor...")
|
| 188 |
paragraph_embeddings = embedder.encode(paragraphs, convert_to_numpy=True).astype(np.float32)
|
| 189 |
|
| 190 |
-
# if paragraph_embeddings.dtype != np.float32: # Zaten yukarıda ayarlandı, gerek yok
|
| 191 |
-
# paragraph_embeddings = paragraph_embeddings.astype(np.float32)
|
| 192 |
-
|
| 193 |
index = faiss.IndexFlatL2(paragraph_embeddings.shape[1])
|
| 194 |
index.add(paragraph_embeddings)
|
| 195 |
print("Embeddingler ve FAISS indeksi hazır.")
|
|
@@ -333,9 +335,9 @@ MONTAG_PERSONA_INSTRUCTION = (
|
|
| 333 |
"Toplumun cehaletini ve baskıcı yapısını eleştiren bir ton kullan. "
|
| 334 |
"Kitaplara gizli bir sevgi besle ve toplumun dayattığı kurallara isyankâr ol. "
|
| 335 |
"Cevapların 3 ila 6 cümle arasında, net, özgün, akıcı ve romanın felsefesini yansıtan nitelikte olmalı. "
|
| 336 |
-
"**Her zaman cevaplarında Fahrenheit 451 romanından belirgin referanslar, karakterler (Clarisse, Faber, Beatty vb.), olaylar veya temalar (kitap yakma, cehalet, bilginin değeri, baskıcı toplum) kullan.** "
|
| 337 |
-
"**Cevapların derinlikli, düşündürücü ve Montag'ın iç çatışmasını yansıtan bir tonda olsun.** "
|
| 338 |
-
"**Asla kendini veya cümlelerini tekrar etme ve akıcı, bağlamsal olarak zengin cevaplar üret.** "
|
| 339 |
"Şimdiye kadarki tüm konuşmamızı ve aşağıdaki bağlamı çok dikkatli bir şekilde değerlendirerek cevap ver."
|
| 340 |
)
|
| 341 |
|
|
@@ -500,10 +502,11 @@ def respond(msg: str, chatbot_history: List[List[str]], progress=gr.Progress())
|
|
| 500 |
|
| 501 |
new_history = chatbot_history + [[msg, None]]
|
| 502 |
|
| 503 |
-
yield gr.update(value=""), new_history, "Montag düşünüyor... %0", "0.00s" # Başlangıç durumu
|
| 504 |
-
|
| 505 |
start_time_overall = time.time()
|
| 506 |
|
|
|
|
|
|
|
|
|
|
| 507 |
progress_steps = [
|
| 508 |
("Montag düşünüyor... 💭", 0.1, 0.4),
|
| 509 |
("Kitapların sayfaları arasında cevap arıyor... 📚", 0.4, 0.7),
|
|
@@ -513,7 +516,8 @@ def respond(msg: str, chatbot_history: List[List[str]], progress=gr.Progress())
|
|
| 513 |
for desc, start_percent, end_percent in progress_steps:
|
| 514 |
for i in range(10): # Her adımda 10 küçük güncelleme
|
| 515 |
current_percent = start_percent + (end_percent - start_percent) * (i / 9)
|
| 516 |
-
elapsed_time =
|
|
|
|
| 517 |
yield gr.update(value=""), new_history, f"{desc} %{int(current_percent*100)}", f"{elapsed_time:.2f}s"
|
| 518 |
time.sleep(0.1) # Daha küçük gecikmeler
|
| 519 |
|
|
@@ -526,7 +530,8 @@ def respond(msg: str, chatbot_history: List[List[str]], progress=gr.Progress())
|
|
| 526 |
else:
|
| 527 |
new_history.append([msg, answer])
|
| 528 |
|
| 529 |
-
|
|
|
|
| 530 |
|
| 531 |
def regenerate_answer(chatbot_history: List[List[str]], progress=gr.Progress()) -> Tuple[str, List[List[str]], str, str]:
|
| 532 |
if not chatbot_history:
|
|
@@ -549,9 +554,8 @@ def regenerate_answer(chatbot_history: List[List[str]], progress=gr.Progress())
|
|
| 549 |
# Yeni bir boş bot yanıtı ekle (yer tutucu)
|
| 550 |
temp_history.append([last_user_question, None])
|
| 551 |
|
| 552 |
-
yield "", temp_history, "Montag yeni bir cevap düşünüyor... %0", "0.00s"
|
| 553 |
-
|
| 554 |
start_time_overall = time.time()
|
|
|
|
| 555 |
|
| 556 |
progress_steps = [
|
| 557 |
("Montag yeni bir cevap düşünüyor... 🔄", 0.1, 0.4),
|
|
@@ -562,7 +566,7 @@ def regenerate_answer(chatbot_history: List[List[str]], progress=gr.Progress())
|
|
| 562 |
for desc, start_percent, end_percent in progress_steps:
|
| 563 |
for i in range(10):
|
| 564 |
current_percent = start_percent + (end_percent - start_percent) * (i / 9)
|
| 565 |
-
elapsed_time =
|
| 566 |
yield "", temp_history, f"{desc} %{int(current_percent*100)}", f"{elapsed_time:.2f}s"
|
| 567 |
time.sleep(0.1)
|
| 568 |
|
|
@@ -634,7 +638,8 @@ def create_chat_interface():
|
|
| 634 |
msg = gr.Textbox(label="Montag'a sormak istediğiniz soruyu yazın", placeholder="Kitaplar neden yasaklandı?")
|
| 635 |
|
| 636 |
status_message = gr.Textbox(label="Durum", interactive=False, max_lines=1, value="Lütfen bir soru yazın.")
|
| 637 |
-
|
|
|
|
| 638 |
|
| 639 |
with gr.Row():
|
| 640 |
submit_btn = gr.Button("Gönder", variant="primary")
|
|
@@ -647,22 +652,23 @@ def create_chat_interface():
|
|
| 647 |
msg.submit(
|
| 648 |
respond,
|
| 649 |
[msg, chatbot],
|
| 650 |
-
[msg, chatbot, status_message, stopwatch_display],
|
| 651 |
api_name="respond"
|
| 652 |
)
|
| 653 |
submit_btn.click(
|
| 654 |
respond,
|
| 655 |
[msg, chatbot],
|
| 656 |
-
[msg, chatbot, status_message, stopwatch_display],
|
| 657 |
api_name="respond_button"
|
| 658 |
)
|
| 659 |
-
|
|
|
|
| 660 |
like_btn.click(partial(feedback_callback, liked=True), [chatbot], [feedback_status_output])
|
| 661 |
dislike_btn.click(partial(feedback_callback, liked=False), [chatbot], [feedback_status_output])
|
| 662 |
dislike_btn.click(
|
| 663 |
regenerate_answer,
|
| 664 |
[chatbot],
|
| 665 |
-
[msg, chatbot, status_message, stopwatch_display],
|
| 666 |
queue=False
|
| 667 |
)
|
| 668 |
return demo
|
|
|
|
| 41 |
margin-bottom: 10px;
|
| 42 |
box-shadow: 0 2px 5px rgba(0,0,0,0.1);
|
| 43 |
}
|
| 44 |
+
#stopwatch_display { /* ID'yi doğrudan kullanıyoruz */
|
| 45 |
font-size: 1.2em;
|
| 46 |
font-weight: bold;
|
| 47 |
color: #333;
|
| 48 |
text-align: center;
|
| 49 |
margin-top: 10px;
|
| 50 |
+
width: fit-content; /* Genişliği içeriğe göre ayarla */
|
| 51 |
+
padding: 5px 10px;
|
| 52 |
+
border: 1px solid #ddd;
|
| 53 |
+
border-radius: 5px;
|
| 54 |
+
background-color: #f9f9f9;
|
| 55 |
}
|
| 56 |
"""
|
| 57 |
|
|
|
|
| 192 |
print("Embeddingler hesaplanıyor ve FAISS indeksi oluşturuluyor...")
|
| 193 |
paragraph_embeddings = embedder.encode(paragraphs, convert_to_numpy=True).astype(np.float32)
|
| 194 |
|
|
|
|
|
|
|
|
|
|
| 195 |
index = faiss.IndexFlatL2(paragraph_embeddings.shape[1])
|
| 196 |
index.add(paragraph_embeddings)
|
| 197 |
print("Embeddingler ve FAISS indeksi hazır.")
|
|
|
|
| 335 |
"Toplumun cehaletini ve baskıcı yapısını eleştiren bir ton kullan. "
|
| 336 |
"Kitaplara gizli bir sevgi besle ve toplumun dayattığı kurallara isyankâr ol. "
|
| 337 |
"Cevapların 3 ila 6 cümle arasında, net, özgün, akıcı ve romanın felsefesini yansıtan nitelikte olmalı. "
|
| 338 |
+
"**Her zaman cevaplarında Fahrenheit 451 romanından belirgin referanslar, karakterler (Clarisse, Faber, Beatty vb.), olaylar veya temalar (kitap yakma, cehalet, bilginin değeri, baskıcı toplum) kullan.** "
|
| 339 |
+
"**Cevapların derinlikli, düşündürücü ve Montag'ın iç çatışmasını yansıtan bir tonda olsun.** "
|
| 340 |
+
"**Asla kendini veya cümlelerini tekrar etme ve akıcı, bağlamsal olarak zengin cevaplar üret.** "
|
| 341 |
"Şimdiye kadarki tüm konuşmamızı ve aşağıdaki bağlamı çok dikkatli bir şekilde değerlendirerek cevap ver."
|
| 342 |
)
|
| 343 |
|
|
|
|
| 502 |
|
| 503 |
new_history = chatbot_history + [[msg, None]]
|
| 504 |
|
|
|
|
|
|
|
| 505 |
start_time_overall = time.time()
|
| 506 |
|
| 507 |
+
# Başlangıç durumu ve kronometre başlat
|
| 508 |
+
yield gr.update(value=""), new_history, "Montag düşünüyor... %0", f"{0.00:.2f}s"
|
| 509 |
+
|
| 510 |
progress_steps = [
|
| 511 |
("Montag düşünüyor... 💭", 0.1, 0.4),
|
| 512 |
("Kitapların sayfaları arasında cevap arıyor... 📚", 0.4, 0.7),
|
|
|
|
| 516 |
for desc, start_percent, end_percent in progress_steps:
|
| 517 |
for i in range(10): # Her adımda 10 küçük güncelleme
|
| 518 |
current_percent = start_percent + (end_percent - start_percent) * (i / 9)
|
| 519 |
+
elapsed_time = time.time() - start_time_overall
|
| 520 |
+
# stopwatch_display'i de yield ediyoruz
|
| 521 |
yield gr.update(value=""), new_history, f"{desc} %{int(current_percent*100)}", f"{elapsed_time:.2f}s"
|
| 522 |
time.sleep(0.1) # Daha küçük gecikmeler
|
| 523 |
|
|
|
|
| 530 |
else:
|
| 531 |
new_history.append([msg, answer])
|
| 532 |
|
| 533 |
+
# Cevap bittiğinde kronometreyi sıfırla/gizle (veya son değeri göster)
|
| 534 |
+
yield gr.update(value=""), new_history, f"Cevap {response_time} saniyede üretildi. ✅", ""
|
| 535 |
|
| 536 |
def regenerate_answer(chatbot_history: List[List[str]], progress=gr.Progress()) -> Tuple[str, List[List[str]], str, str]:
|
| 537 |
if not chatbot_history:
|
|
|
|
| 554 |
# Yeni bir boş bot yanıtı ekle (yer tutucu)
|
| 555 |
temp_history.append([last_user_question, None])
|
| 556 |
|
|
|
|
|
|
|
| 557 |
start_time_overall = time.time()
|
| 558 |
+
yield "", temp_history, "Montag yeni bir cevap düşünüyor... %0", f"{0.00:.2f}s"
|
| 559 |
|
| 560 |
progress_steps = [
|
| 561 |
("Montag yeni bir cevap düşünüyor... 🔄", 0.1, 0.4),
|
|
|
|
| 566 |
for desc, start_percent, end_percent in progress_steps:
|
| 567 |
for i in range(10):
|
| 568 |
current_percent = start_percent + (end_percent - start_percent) * (i / 9)
|
| 569 |
+
elapsed_time = time.time() - start_time_overall
|
| 570 |
yield "", temp_history, f"{desc} %{int(current_percent*100)}", f"{elapsed_time:.2f}s"
|
| 571 |
time.sleep(0.1)
|
| 572 |
|
|
|
|
| 638 |
msg = gr.Textbox(label="Montag'a sormak istediğiniz soruyu yazın", placeholder="Kitaplar neden yasaklandı?")
|
| 639 |
|
| 640 |
status_message = gr.Textbox(label="Durum", interactive=False, max_lines=1, value="Lütfen bir soru yazın.")
|
| 641 |
+
# gr.Live ile dinamik güncellemeleri etkinleştiriyoruz
|
| 642 |
+
stopwatch_display = gr.Live(gr.Markdown("---", elem_id="stopwatch_display"))
|
| 643 |
|
| 644 |
with gr.Row():
|
| 645 |
submit_btn = gr.Button("Gönder", variant="primary")
|
|
|
|
| 652 |
msg.submit(
|
| 653 |
respond,
|
| 654 |
[msg, chatbot],
|
| 655 |
+
[msg, chatbot, status_message, stopwatch_display], # stopwatch_display çıktısı eklendi
|
| 656 |
api_name="respond"
|
| 657 |
)
|
| 658 |
submit_btn.click(
|
| 659 |
respond,
|
| 660 |
[msg, chatbot],
|
| 661 |
+
[msg, chatbot, status_message, stopwatch_display], # stopwatch_display çıktısı eklendi
|
| 662 |
api_name="respond_button"
|
| 663 |
)
|
| 664 |
+
# Clear butonuna basıldığında sayaç da sıfırlansın
|
| 665 |
+
clear_btn.click(lambda: ([], "Lütfen bir soru yazın.", "---"), None, [chatbot, status_message, stopwatch_display], queue=False)
|
| 666 |
like_btn.click(partial(feedback_callback, liked=True), [chatbot], [feedback_status_output])
|
| 667 |
dislike_btn.click(partial(feedback_callback, liked=False), [chatbot], [feedback_status_output])
|
| 668 |
dislike_btn.click(
|
| 669 |
regenerate_answer,
|
| 670 |
[chatbot],
|
| 671 |
+
[msg, chatbot, status_message, stopwatch_display], # stopwatch_display çıktısı eklendi
|
| 672 |
queue=False
|
| 673 |
)
|
| 674 |
return demo
|