quoc-khanh commited on
Commit
e4cfcd3
·
verified ·
1 Parent(s): 3ebea8e

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +20 -14
app.py CHANGED
@@ -19,19 +19,17 @@ if "GOOGLE_API_KEY" not in os.environ:
19
  os.environ["GOOGLE_API_KEY"] = "AIzaSyDJ4vIKuIBIPNHATLxnoHlagXWbsAz-vRs"
20
  key = "AIzaSyDJ4vIKuIBIPNHATLxnoHlagXWbsAz-vRs"
21
 
22
- ###
23
-
24
  # Cấu hình API key cho Google GenAI
25
  genai.configure(api_key=key)
26
 
27
  vectorstore = get_vectorstore()
28
- last_vector_docs = None
29
 
30
  def augment_prompt(query: str, k: int = 10):
31
  global last_vector_docs
32
  retriever = vectorstore.as_retriever(search_kwargs={"k": k})
33
  results = retriever.invoke(query)
34
- # Lưu kết quả để dùng sau cho log
35
  last_vector_docs = results
36
  if results:
37
  source_knowledge = "\n\n".join([doc.page_content for doc in results])
@@ -68,12 +66,20 @@ def get_answer(query, queries_list=None):
68
  messages.append({"role": "model", "parts": [{"text": response_text}]})
69
  log_message(messages)
70
 
71
- def log_vectorstore():
72
  global last_vector_docs
73
  if last_vector_docs is None:
74
  return "Chưa có dữ liệu vectorstore được gọi từ get_answer."
75
  else:
76
- return "\n\n".join([doc.page_content for doc in last_vector_docs])
 
 
 
 
 
 
 
 
77
 
78
  institutions = ['Tất cả', 'Trường Công Nghệ']
79
  categories = ['Tất cả', 'Đề án', 'Chương trình đào tạo']
@@ -82,21 +88,21 @@ print("Launching on space... This may take some time...")
82
 
83
  with gr.Blocks() as demo:
84
  with gr.Row():
85
- # Nếu cần dropdown category
86
  category1 = gr.Dropdown(choices=institutions, label="Trường", value=None)
87
  category2 = gr.Dropdown(choices=categories, label="Bạn quan tâm tới", value=None)
88
 
89
- # Ô nhập dùng chung (đã sẵn cho ChatInterface)
90
  shared_query = gr.Textbox(placeholder="Đặt câu hỏi tại đây", container=False, autoscroll=True, scale=7)
91
-
92
- # Chat Interface đã sử dụng shared_query
93
  chat_interface = gr.ChatInterface(get_answer, textbox=shared_query, type="messages")
94
 
95
- # Nút để hiển thị log từ vectorstore.invoke (dùng dữ liệu đã được lưu từ get_answer)
 
96
  with gr.Row():
97
- log_button = gr.Button("Hiển thị tài liệu được trích xuất")
98
- log_output = gr.Textbox(label="Content", interactive=False)
99
- log_button.click(fn=log_vectorstore, inputs=[], outputs=log_output)
 
100
 
101
  if __name__ == "__main__":
102
  demo.launch()
 
19
  os.environ["GOOGLE_API_KEY"] = "AIzaSyDJ4vIKuIBIPNHATLxnoHlagXWbsAz-vRs"
20
  key = "AIzaSyDJ4vIKuIBIPNHATLxnoHlagXWbsAz-vRs"
21
 
 
 
22
  # Cấu hình API key cho Google GenAI
23
  genai.configure(api_key=key)
24
 
25
  vectorstore = get_vectorstore()
26
+ last_vector_docs = None # Lưu kết quả docs từ vectorstore.invoke trong lần gọi get_answer gần nhất
27
 
28
  def augment_prompt(query: str, k: int = 10):
29
  global last_vector_docs
30
  retriever = vectorstore.as_retriever(search_kwargs={"k": k})
31
  results = retriever.invoke(query)
32
+ # Lưu kết quả để dùng cho log và lọc sau này
33
  last_vector_docs = results
34
  if results:
35
  source_knowledge = "\n\n".join([doc.page_content for doc in results])
 
66
  messages.append({"role": "model", "parts": [{"text": response_text}]})
67
  log_message(messages)
68
 
69
+ def filter_vector_docs(keyword: str):
70
  global last_vector_docs
71
  if last_vector_docs is None:
72
  return "Chưa có dữ liệu vectorstore được gọi từ get_answer."
73
  else:
74
+ if not keyword.strip():
75
+ # Nếu không nhập gì, trả về tất cả
76
+ filtered = [doc.page_content for doc in last_vector_docs]
77
+ else:
78
+ # Lọc các chunk chứa từ khoá (không phân biệt chữ hoa thường)
79
+ filtered = [doc.page_content for doc in last_vector_docs if keyword.lower() in doc.page_content.lower()]
80
+ if not filtered:
81
+ return f"Không có kết quả chứa từ khoá '{keyword}'."
82
+ return "\n\n".join(filtered)
83
 
84
  institutions = ['Tất cả', 'Trường Công Nghệ']
85
  categories = ['Tất cả', 'Đề án', 'Chương trình đào tạo']
 
88
 
89
  with gr.Blocks() as demo:
90
  with gr.Row():
91
+ # Dropdown category nếu cần
92
  category1 = gr.Dropdown(choices=institutions, label="Trường", value=None)
93
  category2 = gr.Dropdown(choices=categories, label="Bạn quan tâm tới", value=None)
94
 
95
+ # Chat Interface sử dụng ô nhập chung
96
  shared_query = gr.Textbox(placeholder="Đặt câu hỏi tại đây", container=False, autoscroll=True, scale=7)
 
 
97
  chat_interface = gr.ChatInterface(get_answer, textbox=shared_query, type="messages")
98
 
99
+ # Phần lọc các chunk: ô prompt nhập từ khoá nút "Tìm trích xuất" nằm cùng hàng,
100
+ # kết quả sẽ hiển thị ở ô bên dưới. Nếu để trống, hiển thị toàn bộ.
101
  with gr.Row():
102
+ filter_prompt = gr.Textbox(label="Nhập từ khoá", placeholder="Nhập từ khoá để lọc (để trống để hiển thị tất cả)", interactive=True)
103
+ filter_button = gr.Button("Tìm trích xuất")
104
+ filter_output = gr.Textbox(label="Content", interactive=False)
105
+ filter_button.click(fn=filter_vector_docs, inputs=filter_prompt, outputs=filter_output)
106
 
107
  if __name__ == "__main__":
108
  demo.launch()