ramy2018 commited on
Commit
734afea
·
verified ·
1 Parent(s): 93726f3

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +22 -20
app.py CHANGED
@@ -1,7 +1,6 @@
1
  import gradio as gr
2
  from rag_pipeline import RAGPipeline
3
  from utils import process_documents
4
- import time
5
 
6
  rag = RAGPipeline()
7
 
@@ -18,37 +17,40 @@ def upload_and_index(files, logs):
18
  all_chunks.extend(chunks)
19
  logs = log_message(f"[RAG] تم استخراج {len(chunks)} مقطع من {file.name}", logs)
20
 
21
- logs = log_message(f"[RAG] بناء الفهرس لـ {len(all_chunks)} مقطع...", logs)
22
- start = time.time()
23
  rag.build_index(all_chunks)
24
- duration = time.time() - start
25
- logs = log_message(f"[RAG] تم بناء الفهرس في {duration:.2f} ثانية.", logs)
26
- return logs, gr.update(visible=True), gr.update(visible=True)
 
 
 
 
 
27
 
28
  def answer_question(question, logs):
29
  logs = log_message(f"[RAG] استلام السؤال: {question}", logs)
30
- start = time.time()
31
  answer, sources, summary = rag.answer(question)
32
- duration = time.time() - start
33
- logs = log_message(f"[RAG] تم الإجابة في {duration:.2f} ثانية.", logs)
34
- logs = log_message(f"[RAG] المصادر: {sources}", logs)
35
  return answer, summary, logs
36
 
37
  with gr.Blocks() as demo:
38
  logs = gr.State("")
39
- gr.Markdown("# 🕌 نظام استرجاع المعرفة باللغة العربية مع التلخيص والإجابة")
40
 
41
  with gr.Row():
42
- files_input = gr.File(file_types=['.pdf', '.docx', '.txt'], file_count="multiple", label="رفع الملفات")
43
- upload_btn = gr.Button("رفع وبناء الفهرس")
 
 
 
 
44
 
45
- logs_output = gr.Textbox(label="سجل العمليات", lines=12, interactive=False, value="")
46
- question_input = gr.Textbox(label="اكتب سؤالك هنا", visible=False)
47
- ask_btn = gr.Button("إرسال السؤال", visible=False)
48
- answer_output = gr.Textbox(label="الإجابة", lines=5)
49
- summary_output = gr.Textbox(label="الملخص", lines=5)
50
 
51
- upload_btn.click(upload_and_index, inputs=[files_input, logs], outputs=[logs_output, question_input, ask_btn])
52
- ask_btn.click(answer_question, inputs=[question_input, logs], outputs=[answer_output, summary_output, logs_output])
 
53
 
54
  demo.launch()
 
1
  import gradio as gr
2
  from rag_pipeline import RAGPipeline
3
  from utils import process_documents
 
4
 
5
  rag = RAGPipeline()
6
 
 
17
  all_chunks.extend(chunks)
18
  logs = log_message(f"[RAG] تم استخراج {len(chunks)} مقطع من {file.name}", logs)
19
 
 
 
20
  rag.build_index(all_chunks)
21
+ logs = log_message("[RAG] تم بناء الفهرس.")
22
+ return logs, gr.update(visible=True), gr.update(visible=True), gr.update(visible=True)
23
+
24
+ def summarize_chunks(logs):
25
+ logs = log_message("[RAG] بدأ التلخيص للمقاطع...")
26
+ rag.summarize_all_chunks()
27
+ logs = log_message("[RAG] تم التلخيص لجميع المقاطع.")
28
+ return logs
29
 
30
  def answer_question(question, logs):
31
  logs = log_message(f"[RAG] استلام السؤال: {question}", logs)
 
32
  answer, sources, summary = rag.answer(question)
33
+ logs = log_message(f"[RAG] تم توليد الإجابة.\n[RAG] المصادر: {sources}")
 
 
34
  return answer, summary, logs
35
 
36
  with gr.Blocks() as demo:
37
  logs = gr.State("")
38
+ gr.Markdown("# 🕌 نظام استرجاع المعرفة باللغة العربية")
39
 
40
  with gr.Row():
41
+ files_input = gr.File(file_types=[".pdf", ".docx", ".txt"], file_count="multiple", label="📂 رفع الملفات")
42
+ upload_btn = gr.Button("🔄 رفع وبناء الفهرس")
43
+
44
+ summarize_btn = gr.Button("🧠 تلخيص المقاطع", visible=False)
45
+ question_input = gr.Textbox(label="❓ اكتب سؤالك هنا", visible=False)
46
+ answer_btn = gr.Button("✍️ أجب عن السؤال", visible=False)
47
 
48
+ logs_output = gr.Textbox(label="📜 سجل العمليات", lines=10, interactive=False)
49
+ summary_output = gr.Textbox(label="📌 الملخص المستخدم", lines=5)
50
+ answer_output = gr.Textbox(label=" الإجابة النهائية", lines=5)
 
 
51
 
52
+ upload_btn.click(upload_and_index, inputs=[files_input, logs], outputs=[logs_output, summarize_btn, question_input, answer_btn])
53
+ summarize_btn.click(summarize_chunks, inputs=logs, outputs=logs_output)
54
+ answer_btn.click(answer_question, inputs=[question_input, logs], outputs=[answer_output, summary_output, logs_output])
55
 
56
  demo.launch()