raviix46 commited on
Commit
ddbe657
·
verified ·
1 Parent(s): 98552e9

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +46 -4
app.py CHANGED
@@ -1,9 +1,20 @@
1
- # app.py
2
  import gradio as gr
3
 
4
  from rag_data import THREAD_OPTIONS
5
- from rag_sessions import start_session, reset_session, get_session
6
- from rag_retrieval import rewrite_query, retrieve_chunks, build_answer, log_trace
 
 
 
 
 
 
 
 
 
 
 
 
7
 
8
 
9
  def init_session_ui(thread_id: str):
@@ -21,17 +32,29 @@ def chat_ui(user_text: str, session_id: str, search_outside_thread: bool):
21
  if session is None:
22
  return "Session not found. Please start again.", "", ""
23
 
 
24
  rewrite = rewrite_query(user_text, session)
 
 
25
  retrieved = retrieve_chunks(rewrite, session, search_outside_thread)
 
 
 
 
 
 
 
26
  answer, citations = build_answer(user_text, rewrite, retrieved)
27
 
28
- # Update simple memory
29
  session["recent_turns"].append({"user": user_text, "answer": answer})
30
  if len(session["recent_turns"]) > 5:
31
  session["recent_turns"] = session["recent_turns"][-5:]
32
 
 
33
  log_trace(session_id, user_text, rewrite, retrieved, answer, citations)
34
 
 
35
  debug_retrieved = "\n".join(
36
  [
37
  f"{r['chunk_id']} (msg={r['message_id']}, "
@@ -50,6 +73,16 @@ def reset_session_ui(session_id: str):
50
  return "", "Session reset."
51
 
52
 
 
 
 
 
 
 
 
 
 
 
53
  with gr.Blocks() as demo:
54
  gr.Markdown("# 📧 Email Thread RAG Assistant\nAsk questions about a selected Enron email thread.")
55
 
@@ -77,8 +110,11 @@ with gr.Blocks() as demo:
77
  search_toggle = gr.Checkbox(label="Search outside selected thread", value=False)
78
  ask_btn = gr.Button("Ask")
79
  reset_btn = gr.Button("Reset Session")
 
80
 
81
  answer_box = gr.Markdown(label="Answer")
 
 
82
  with gr.Accordion("Debug info", open=False):
83
  rewrite_box = gr.Textbox(label="Rewritten query", interactive=False)
84
  retrieved_box = gr.Textbox(label="Retrieved chunks", interactive=False)
@@ -95,5 +131,11 @@ with gr.Blocks() as demo:
95
  outputs=[session_state, status_box],
96
  )
97
 
 
 
 
 
 
 
98
  if __name__ == "__main__":
99
  demo.launch()
 
 
1
  import gradio as gr
2
 
3
  from rag_data import THREAD_OPTIONS
4
+ from rag_sessions import (
5
+ start_session,
6
+ reset_session,
7
+ get_session,
8
+ update_entity_memory,
9
+ )
10
+ from rag_retrieval import (
11
+ rewrite_query,
12
+ retrieve_chunks,
13
+ build_answer,
14
+ log_trace,
15
+ extract_entities_for_turn,
16
+ )
17
+ from rag_timeline import build_timeline
18
 
19
 
20
  def init_session_ui(thread_id: str):
 
32
  if session is None:
33
  return "Session not found. Please start again.", "", ""
34
 
35
+ # 1) Rewrite query using thread + entity memory
36
  rewrite = rewrite_query(user_text, session)
37
+
38
+ # 2) Retrieve chunks
39
  retrieved = retrieve_chunks(rewrite, session, search_outside_thread)
40
+
41
+ # 3) Extract entities from this turn + retrieved evidence, update memory
42
+ new_entities = extract_entities_for_turn(user_text, retrieved)
43
+ if new_entities:
44
+ update_entity_memory(session_id, new_entities)
45
+
46
+ # 4) Build grounded answer
47
  answer, citations = build_answer(user_text, rewrite, retrieved)
48
 
49
+ # 5) Update simple turn memory
50
  session["recent_turns"].append({"user": user_text, "answer": answer})
51
  if len(session["recent_turns"]) > 5:
52
  session["recent_turns"] = session["recent_turns"][-5:]
53
 
54
+ # 6) Log trace for this turn
55
  log_trace(session_id, user_text, rewrite, retrieved, answer, citations)
56
 
57
+ # 7) Debug: show retrieved chunk ids + scores
58
  debug_retrieved = "\n".join(
59
  [
60
  f"{r['chunk_id']} (msg={r['message_id']}, "
 
73
  return "", "Session reset."
74
 
75
 
76
+ def timeline_ui(session_id: str):
77
+ if not session_id:
78
+ return "Please start a session by selecting a thread."
79
+ session = get_session(session_id)
80
+ if session is None:
81
+ return "Session not found. Please start again."
82
+ tid = session["thread_id"]
83
+ return build_timeline(tid)
84
+
85
+
86
  with gr.Blocks() as demo:
87
  gr.Markdown("# 📧 Email Thread RAG Assistant\nAsk questions about a selected Enron email thread.")
88
 
 
110
  search_toggle = gr.Checkbox(label="Search outside selected thread", value=False)
111
  ask_btn = gr.Button("Ask")
112
  reset_btn = gr.Button("Reset Session")
113
+ timeline_btn = gr.Button("Show Timeline")
114
 
115
  answer_box = gr.Markdown(label="Answer")
116
+ timeline_box = gr.Markdown(label="Thread timeline")
117
+
118
  with gr.Accordion("Debug info", open=False):
119
  rewrite_box = gr.Textbox(label="Rewritten query", interactive=False)
120
  retrieved_box = gr.Textbox(label="Retrieved chunks", interactive=False)
 
131
  outputs=[session_state, status_box],
132
  )
133
 
134
+ timeline_btn.click(
135
+ fn=timeline_ui,
136
+ inputs=[session_state],
137
+ outputs=[timeline_box],
138
+ )
139
+
140
  if __name__ == "__main__":
141
  demo.launch()