Spaces:
Runtime error
Runtime error
Update app.py
Browse files
app.py
CHANGED
|
@@ -27,8 +27,8 @@ genai.configure(api_key=key)
|
|
| 27 |
vectorstore = get_vectorstore()
|
| 28 |
# Define the augment_prompt function
|
| 29 |
def augment_prompt(query: str, k: int = 10):
|
| 30 |
-
|
| 31 |
-
queries
|
| 32 |
|
| 33 |
retriever = vectorstore.as_retriever(search_kwargs={"k": k})
|
| 34 |
results = retriever.invoke(query)
|
|
@@ -40,34 +40,42 @@ Dữ liệu:
|
|
| 40 |
{source_knowledge}
|
| 41 |
"""
|
| 42 |
else:
|
| 43 |
-
return
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 44 |
|
| 45 |
def get_answer(query, queries_list=None):
|
| 46 |
if queries_list is None:
|
| 47 |
queries_list = []
|
| 48 |
|
| 49 |
messages = [
|
| 50 |
-
|
| 51 |
-
|
| 52 |
-
]
|
| 53 |
-
#
|
| 54 |
-
# Bạn tham
|
| 55 |
-
# Trang thông tin điện tử: https://neu.edu.vn ; https://daotao.neu.edu.vn
|
| 56 |
-
# Trang mạng xã hội có thông tin tuyển sinh: https://www.facebook.com/ktqdNEU ; https://www.facebook.com/tvtsneu ;
|
| 57 |
-
# Email tuyển sinh: [email protected]
|
| 58 |
-
# Số điện thoại tuyển sinh: 0888.128.558
|
| 59 |
-
#
|
| 60 |
|
| 61 |
queries_list.append(query)
|
| 62 |
queries = {"role": "user", "parts": [{"text": prompt_order(queries_list)}]}
|
| 63 |
messages_with_queries = messages.copy()
|
| 64 |
messages_with_queries.append(queries)
|
| 65 |
-
|
| 66 |
-
|
| 67 |
-
# Configure API key
|
| 68 |
genai.configure(api_key=key)
|
| 69 |
|
| 70 |
-
|
| 71 |
model = genai.GenerativeModel("gemini-2.0-flash")
|
| 72 |
|
| 73 |
response = model.generate_content(contents=messages_with_queries, stream=True)
|
|
@@ -78,13 +86,6 @@ def get_answer(query, queries_list=None):
|
|
| 78 |
yield response_text
|
| 79 |
|
| 80 |
messages.append({"role": "model", "parts": [{"text": response_text}]})
|
| 81 |
-
|
| 82 |
-
# user_feedback = yield "\nNhập phản hồi của bạn (hoặc nhập 'q' để thoát): "
|
| 83 |
-
# if user_feedback.lower() == "q":
|
| 84 |
-
# break
|
| 85 |
-
|
| 86 |
-
# messages.append({"role": "user", "parts": [{"text": query}]})
|
| 87 |
-
|
| 88 |
log_message(messages)
|
| 89 |
|
| 90 |
institutions = ['Tất cả', 'Trường Công Nghệ']
|
|
@@ -94,20 +95,25 @@ print("Launching on space... This may take some time...")
|
|
| 94 |
|
| 95 |
with gr.Blocks() as demo:
|
| 96 |
with gr.Row():
|
| 97 |
-
category1 = gr.Dropdown(choices
|
| 98 |
-
category2 = gr.Dropdown(choices
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 99 |
|
| 100 |
chat_interface = gr.ChatInterface(get_answer,
|
| 101 |
textbox=gr.Textbox(placeholder="Đặt câu hỏi tại đây",
|
| 102 |
-
|
| 103 |
-
|
| 104 |
-
|
| 105 |
-
type="messages"
|
| 106 |
-
# textbox=prompt,
|
| 107 |
# additional_inputs=[category1, category2]
|
| 108 |
)
|
| 109 |
-
# playwright_path = get_driver_dir()
|
| 110 |
|
| 111 |
if __name__ == "__main__":
|
| 112 |
-
demo.launch()
|
| 113 |
-
# demo.launch()
|
|
|
|
| 27 |
vectorstore = get_vectorstore()
|
| 28 |
# Define the augment_prompt function
|
| 29 |
def augment_prompt(query: str, k: int = 10):
|
| 30 |
+
# Lưu lại truy vấn (có thể dùng cho mục đích khác)
|
| 31 |
+
queries = [query]
|
| 32 |
|
| 33 |
retriever = vectorstore.as_retriever(search_kwargs={"k": k})
|
| 34 |
results = retriever.invoke(query)
|
|
|
|
| 40 |
{source_knowledge}
|
| 41 |
"""
|
| 42 |
else:
|
| 43 |
+
return "Không có thông tin liên quan. \n."
|
| 44 |
+
|
| 45 |
+
# Hàm mới để log toàn bộ dữ liệu trả về từ vectorstore.invoke
|
| 46 |
+
def log_vectorstore(query: str, k: int = 10):
|
| 47 |
+
retriever = vectorstore.as_retriever(search_kwargs={"k": k})
|
| 48 |
+
results = retriever.invoke(query)
|
| 49 |
+
if results:
|
| 50 |
+
return "\n\n".join([doc.page_content for doc in results])
|
| 51 |
+
else:
|
| 52 |
+
return "Không có thông tin liên quan."
|
| 53 |
|
| 54 |
def get_answer(query, queries_list=None):
|
| 55 |
if queries_list is None:
|
| 56 |
queries_list = []
|
| 57 |
|
| 58 |
messages = [
|
| 59 |
+
{"role": "user", "parts": [{"text": "IMPORTANT: You are a super helpful, polite, Vietnamese-speaking assistant to give information of an university. If you cannot see the answer in contexts, try to search it up online by yourself OR tell user to make a more detailed question."}]},
|
| 60 |
+
{"role": "user", "parts": [{"text": augment_prompt(query=query, k=100)}]}
|
| 61 |
+
]
|
| 62 |
+
# bonus = '''
|
| 63 |
+
# Bạn tham khảo thêm các nguồn thông tin tại:
|
| 64 |
+
# Trang thông tin điện tử: https://neu.edu.vn ; https://daotao.neu.edu.vn
|
| 65 |
+
# Trang mạng xã hội có thông tin tuyển sinh: https://www.facebook.com/ktqdNEU ; https://www.facebook.com/tvtsneu ;
|
| 66 |
+
# Email tuyển sinh: [email protected]
|
| 67 |
+
# Số điện thoại tuyển sinh: 0888.128.558
|
| 68 |
+
# '''
|
| 69 |
|
| 70 |
queries_list.append(query)
|
| 71 |
queries = {"role": "user", "parts": [{"text": prompt_order(queries_list)}]}
|
| 72 |
messages_with_queries = messages.copy()
|
| 73 |
messages_with_queries.append(queries)
|
| 74 |
+
|
| 75 |
+
# Cấu hình API key cho model
|
|
|
|
| 76 |
genai.configure(api_key=key)
|
| 77 |
|
| 78 |
+
# Khởi tạo model Gemini
|
| 79 |
model = genai.GenerativeModel("gemini-2.0-flash")
|
| 80 |
|
| 81 |
response = model.generate_content(contents=messages_with_queries, stream=True)
|
|
|
|
| 86 |
yield response_text
|
| 87 |
|
| 88 |
messages.append({"role": "model", "parts": [{"text": response_text}]})
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 89 |
log_message(messages)
|
| 90 |
|
| 91 |
institutions = ['Tất cả', 'Trường Công Nghệ']
|
|
|
|
| 95 |
|
| 96 |
with gr.Blocks() as demo:
|
| 97 |
with gr.Row():
|
| 98 |
+
category1 = gr.Dropdown(choices=institutions, label="Trường", value=None)
|
| 99 |
+
category2 = gr.Dropdown(choices=categories, label="Bạn quan tâm tới", value=None)
|
| 100 |
+
|
| 101 |
+
# Phần UI riêng để log dữ liệu từ vectorstore.invoke
|
| 102 |
+
with gr.Row():
|
| 103 |
+
log_query_input = gr.Textbox(label="Nhập truy vấn cho log", placeholder="Nhập truy vấn để xem log vectorstore invoke", value="")
|
| 104 |
+
log_k_input = gr.Number(label="Số lượng kết quả (k)", value=10)
|
| 105 |
+
log_output = gr.Textbox(label="Log vectorstore invoke", interactive=False)
|
| 106 |
+
log_button = gr.Button("Hiển thị log")
|
| 107 |
+
log_button.click(fn=log_vectorstore, inputs=[log_query_input, log_k_input], outputs=log_output)
|
| 108 |
|
| 109 |
chat_interface = gr.ChatInterface(get_answer,
|
| 110 |
textbox=gr.Textbox(placeholder="Đặt câu hỏi tại đây",
|
| 111 |
+
container=False,
|
| 112 |
+
autoscroll=True,
|
| 113 |
+
scale=7),
|
| 114 |
+
type="messages"
|
|
|
|
| 115 |
# additional_inputs=[category1, category2]
|
| 116 |
)
|
|
|
|
| 117 |
|
| 118 |
if __name__ == "__main__":
|
| 119 |
+
demo.launch()
|
|
|