Update app.py
Browse files
app.py
CHANGED
@@ -394,7 +394,7 @@ if 'context_memory' not in st.session_state:
|
|
394 |
st.session_state.context_memory = []
|
395 |
|
396 |
def handle_submit(user_query: str):
|
397 |
-
"""Enhanced query handling with conversation history"""
|
398 |
if not user_query:
|
399 |
st.warning("⚠️ กรุณาระบุคำถาม")
|
400 |
return
|
@@ -410,8 +410,11 @@ def handle_submit(user_query: str):
|
|
410 |
add_to_history("user", user_query)
|
411 |
|
412 |
# Convert the Streamlit chat history format to RAG format
|
|
|
413 |
rag_conversation_history = []
|
414 |
-
|
|
|
|
|
415 |
# Map Streamlit's role names to the format used in the RAG system
|
416 |
rag_role = "user" if role == "user" else "assistant"
|
417 |
|
@@ -427,8 +430,29 @@ def handle_submit(user_query: str):
|
|
427 |
if 'context_memory' not in st.session_state:
|
428 |
st.session_state.context_memory = []
|
429 |
|
430 |
-
# Process query with conversation history
|
431 |
with st.spinner("🔍 กำลังค้นหาคำตอบ..."):
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
432 |
result = st.session_state.pipeline.process_query(
|
433 |
query=user_query,
|
434 |
conversation_history=rag_conversation_history
|
|
|
394 |
st.session_state.context_memory = []
|
395 |
|
396 |
def handle_submit(user_query: str):
|
397 |
+
"""Enhanced query handling with improved conversation history tracking"""
|
398 |
if not user_query:
|
399 |
st.warning("⚠️ กรุณาระบุคำถาม")
|
400 |
return
|
|
|
410 |
add_to_history("user", user_query)
|
411 |
|
412 |
# Convert the Streamlit chat history format to RAG format
|
413 |
+
# Include more context history (up to 5 previous exchanges)
|
414 |
rag_conversation_history = []
|
415 |
+
history_to_include = st.session_state.chat_history[-11:] if len(st.session_state.chat_history) > 10 else st.session_state.chat_history
|
416 |
+
|
417 |
+
for role, content in history_to_include:
|
418 |
# Map Streamlit's role names to the format used in the RAG system
|
419 |
rag_role = "user" if role == "user" else "assistant"
|
420 |
|
|
|
430 |
if 'context_memory' not in st.session_state:
|
431 |
st.session_state.context_memory = []
|
432 |
|
433 |
+
# Process query with improved conversation history
|
434 |
with st.spinner("🔍 กำลังค้นหาคำตอบ..."):
|
435 |
+
# Add debug logging to verify context
|
436 |
+
print(f"Processing query with {len(rag_conversation_history)} context messages")
|
437 |
+
|
438 |
+
# Add special handling for reference questions
|
439 |
+
reference_keywords = ["ก่อนหน้านี้", "ก่อนหน้า", "ที่ผ่านมา", "คำถามก่อนหน้า", "คำถามที่แล้ว",
|
440 |
+
"previous", "earlier", "before", "last time", "last question"]
|
441 |
+
|
442 |
+
is_reference_question = any(keyword in user_query.lower() for keyword in reference_keywords)
|
443 |
+
|
444 |
+
# If this is a reference question, emphasize context in the query
|
445 |
+
if is_reference_question and len(rag_conversation_history) >= 3:
|
446 |
+
# Extract the previous user question (should be 2 positions back)
|
447 |
+
previous_questions = [msg["content"] for msg in rag_conversation_history[:-2]
|
448 |
+
if msg["role"] == "user"]
|
449 |
+
|
450 |
+
if previous_questions:
|
451 |
+
prev_question = previous_questions[-1]
|
452 |
+
enhanced_query = f"คำถามนี้อ้างอิงถึงคำถามก่อนหน้า '{prev_question}' โปรดพิจารณาบริบทนี้ในการตอบ: {user_query}"
|
453 |
+
print(f"Enhanced reference query: {enhanced_query}")
|
454 |
+
user_query = enhanced_query
|
455 |
+
|
456 |
result = st.session_state.pipeline.process_query(
|
457 |
query=user_query,
|
458 |
conversation_history=rag_conversation_history
|