amornpan commited on
Commit
96c3305
1 Parent(s): 7fd2a84

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +6 -21
app.py CHANGED
@@ -2,49 +2,41 @@ import streamlit as st
2
  import requests
3
  from datetime import datetime
4
  import base64
5
- import fitz # PyMuPDF
6
  import os
7
  import re
8
 
9
- # ตรวจสอบและกำหนดค่าเริ่มต้นให้ st.session_state.dialog_done
10
  if "dialog_done" not in st.session_state:
11
- st.session_state.dialog_done = False # ค่าเริ่มต้นเป็น False
12
 
13
- # ถ้า dialog_done เป็น False ให้แสดงหน้าคำถาม
14
  if not st.session_state.dialog_done:
15
  st.title("เริ่มต้นคำถาม")
16
  st.write("คำถาม: ใครคือคนที่หน้าตาดีที่สุด?")
17
 
18
  answer = st.text_input("กรุณาตอบคำถามนี้:")
19
- if st.button("ส่งคำตอบ"): # ปุ่มส่งคำตอบ
20
  if answer == "พี่ก้องคนหล่อ":
21
- st.session_state.dialog_done = True # อัปเดตสถานะเป็น True
22
  st.success("คำตอบถูกต้อง! กดปุ่ม 'เข้าสู่หน้าหลัก' เพื่อดำเนินการต่อ")
23
  else:
24
  st.error("คำตอบไม่ถูกต้อง กรุณาลองใหม่อีกครั้ง.")
25
 
26
  if st.session_state.dialog_done:
27
- # เพิ่มปุ่มเพื่อให้ผู้ใช้กดเข้าสู่หน้าหลัก
28
  if st.button("เข้าสู่หน้าหลัก"):
29
- st.experimental_rerun() # รีเฟรชเพื่อแสดงหน้าหลัก
30
 
31
  else:
32
- # เนื้อหาของหน้าหลัก
33
  st.title("AI สนับสนุนความรู้ด้าน PDPA")
34
  st.write("เราสอบถาม AI สืบค้น และสรุป")
35
 
36
- # Define system prompt at the top level
37
- system_prompt = """คุณเป็นผู้ช่วยที่มีความรู้ด้านกฎหมาย PDPA และสามารถให้คำตอบที่เกี่ยวข้องเฉพาะตาม context ที่ได้รับ"""
38
 
39
  def clean_text_for_search(text):
40
- """Clean text for better search matching"""
41
  text = re.sub(r'P-\d+\s*$', '', text, flags=re.MULTILINE)
42
  text = re.sub(r'Confidential.*$', '', text, flags=re.MULTILINE)
43
  text = ' '.join(text.split())
44
  return text
45
 
46
  def create_highlighted_pdf(pdf_path, search_text, page_number):
47
- """Create a highlighted version of the PDF page"""
48
  try:
49
  search_text = clean_text_for_search(search_text)
50
  doc = fitz.open(pdf_path)
@@ -73,7 +65,6 @@ else:
73
  return None
74
 
75
  def format_file_size(size_in_bytes):
76
- """Convert bytes to human readable format"""
77
  for unit in ['B', 'KB', 'MB', 'GB']:
78
  if size_in_bytes < 1024:
79
  return f"{size_in_bytes:.2f} {unit}"
@@ -81,7 +72,6 @@ else:
81
  return f"{size_in_bytes:.2f} GB"
82
 
83
  def display_search_result(result, index):
84
- """Display a single search result with metadata in an expander"""
85
  with st.expander(f"🔍 Search Result #{index + 1} (Score: {result['score']:.4f})"):
86
  st.markdown("#### 📄 Document Information")
87
  col1, col2 = st.columns(2)
@@ -101,9 +91,6 @@ else:
101
  st.markdown("#### 📝 Content")
102
  st.markdown(f"```\n{result['text']}\n```")
103
 
104
- st.markdown("#### 📂 File Location")
105
- st.code(result['file_path'], language='plaintext')
106
-
107
  try:
108
  pdf_path = result['file_path']
109
  if os.path.exists(pdf_path):
@@ -129,8 +116,6 @@ else:
129
  st.markdown(pdf_display, unsafe_allow_html=True)
130
  else:
131
  st.error("Failed to create highlighted PDF")
132
- else:
133
- st.error("PDF file not found at the specified location.")
134
  except Exception as e:
135
  st.error(f"Error displaying PDF: {str(e)}")
136
 
@@ -157,7 +142,7 @@ else:
157
  for idx, result in enumerate(search_results):
158
  display_search_result(result, idx)
159
 
160
- response_text = "\n\n---\n\n".join([f"Text: {result['text']}\nFile Path: {result['file_path']}" for result in search_results])
161
 
162
  except requests.RequestException as e:
163
  st.error(f"Error: {str(e)}")
 
2
  import requests
3
  from datetime import datetime
4
  import base64
 
5
  import os
6
  import re
7
 
 
8
  if "dialog_done" not in st.session_state:
9
+ st.session_state.dialog_done = False
10
 
 
11
  if not st.session_state.dialog_done:
12
  st.title("เริ่มต้นคำถาม")
13
  st.write("คำถาม: ใครคือคนที่หน้าตาดีที่สุด?")
14
 
15
  answer = st.text_input("กรุณาตอบคำถามนี้:")
16
+ if st.button("ส่งคำตอบ"):
17
  if answer == "พี่ก้องคนหล่อ":
18
+ st.session_state.dialog_done = True
19
  st.success("คำตอบถูกต้อง! กดปุ่ม 'เข้าสู่หน้าหลัก' เพื่อดำเนินการต่อ")
20
  else:
21
  st.error("คำตอบไม่ถูกต้อง กรุณาลองใหม่อีกครั้ง.")
22
 
23
  if st.session_state.dialog_done:
 
24
  if st.button("เข้าสู่หน้าหลัก"):
25
+ st.experimental_rerun()
26
 
27
  else:
 
28
  st.title("AI สนับสนุนความรู้ด้าน PDPA")
29
  st.write("เราสอบถาม AI สืบค้น และสรุป")
30
 
31
+ system_prompt = "คุณเป็นผู้ช่วยที่มีความรู้ด้านกฎหมาย PDPA และสามารถให้คำตอบที่เกี่ยวข้องเฉพาะตาม context ที่ได้รับ"
 
32
 
33
  def clean_text_for_search(text):
 
34
  text = re.sub(r'P-\d+\s*$', '', text, flags=re.MULTILINE)
35
  text = re.sub(r'Confidential.*$', '', text, flags=re.MULTILINE)
36
  text = ' '.join(text.split())
37
  return text
38
 
39
  def create_highlighted_pdf(pdf_path, search_text, page_number):
 
40
  try:
41
  search_text = clean_text_for_search(search_text)
42
  doc = fitz.open(pdf_path)
 
65
  return None
66
 
67
  def format_file_size(size_in_bytes):
 
68
  for unit in ['B', 'KB', 'MB', 'GB']:
69
  if size_in_bytes < 1024:
70
  return f"{size_in_bytes:.2f} {unit}"
 
72
  return f"{size_in_bytes:.2f} GB"
73
 
74
  def display_search_result(result, index):
 
75
  with st.expander(f"🔍 Search Result #{index + 1} (Score: {result['score']:.4f})"):
76
  st.markdown("#### 📄 Document Information")
77
  col1, col2 = st.columns(2)
 
91
  st.markdown("#### 📝 Content")
92
  st.markdown(f"```\n{result['text']}\n```")
93
 
 
 
 
94
  try:
95
  pdf_path = result['file_path']
96
  if os.path.exists(pdf_path):
 
116
  st.markdown(pdf_display, unsafe_allow_html=True)
117
  else:
118
  st.error("Failed to create highlighted PDF")
 
 
119
  except Exception as e:
120
  st.error(f"Error displaying PDF: {str(e)}")
121
 
 
142
  for idx, result in enumerate(search_results):
143
  display_search_result(result, idx)
144
 
145
+ response_text = "\n\n---\n\n".join([f"Text: {result['text']}" for result in search_results])
146
 
147
  except requests.RequestException as e:
148
  st.error(f"Error: {str(e)}")