awacke1 commited on
Commit
c60ef95
·
verified ·
1 Parent(s): 99d439f

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +36 -39
app.py CHANGED
@@ -39,7 +39,9 @@ def load_data():
39
  st.session_state.users = []
40
 
41
  # Load data at the start
42
- load_data()
 
 
43
 
44
  # Function to get or create user
45
  def get_or_create_user():
@@ -100,7 +102,7 @@ with st.sidebar:
100
  st.session_state.current_user['name'] = new_name
101
  save_data()
102
  st.success(f"Name updated to {new_name}")
103
- break
104
 
105
  st.title("Active Users")
106
  for user in st.session_state.users:
@@ -110,47 +112,42 @@ with st.sidebar:
110
  st.title("Personalized Real-Time Chat with ArXiv Search")
111
 
112
  # Display chat messages
113
- chat_container = st.container()
 
 
114
 
115
  # Input for new message
116
- new_message = st.text_input("Type your message or ArXiv search query:")
117
- if st.button("Send / Search"):
118
- if new_message:
119
- timestamp = datetime.now(pytz.utc).strftime('%Y-%m-%d %H:%M:%S %Z')
120
-
121
- # Check if it's an ArXiv search query
122
- if new_message.lower().startswith("arxiv:"):
123
- query = new_message[6:].strip()
124
- search_results = search_arxiv(query)
125
- st.session_state.messages.append({
126
- 'user': 'ArXiv Bot',
127
- 'message': f"Search results for '{query}':\n\n{search_results}",
128
- 'timestamp': timestamp
129
- })
130
- else:
131
- st.session_state.messages.append({
132
- 'user': st.session_state.current_user['name'],
133
- 'message': new_message,
134
- 'timestamp': timestamp
135
- })
136
-
137
- save_data()
138
- st.experimental_rerun()
139
-
140
- # Function to display chat messages
141
- def display_messages():
142
- for msg in st.session_state.messages:
143
- with chat_container.container():
144
- st.write(f"**{msg['user']}** ({msg['timestamp']}): {msg['message']}")
145
 
146
- # Display messages
147
- display_messages()
148
 
149
  # Polling for updates
150
  if st.button("Refresh Chat"):
151
- load_data()
152
- st.experimental_rerun()
 
 
 
153
 
154
- # Auto-refresh (note: this will refresh the entire app)
155
- time.sleep(5)
156
- st.experimental_rerun()
 
39
  st.session_state.users = []
40
 
41
  # Load data at the start
42
+ if 'data_loaded' not in st.session_state:
43
+ load_data()
44
+ st.session_state.data_loaded = True
45
 
46
  # Function to get or create user
47
  def get_or_create_user():
 
102
  st.session_state.current_user['name'] = new_name
103
  save_data()
104
  st.success(f"Name updated to {new_name}")
105
+ st.rerun()
106
 
107
  st.title("Active Users")
108
  for user in st.session_state.users:
 
112
  st.title("Personalized Real-Time Chat with ArXiv Search")
113
 
114
  # Display chat messages
115
+ for message in st.session_state.messages:
116
+ with st.chat_message(message["role"]):
117
+ st.markdown(message["content"])
118
 
119
  # Input for new message
120
+ if prompt := st.chat_input("Type your message or ArXiv search query:"):
121
+ st.session_state.messages.append({"role": "user", "content": prompt})
122
+ with st.chat_message("user"):
123
+ st.markdown(prompt)
124
+
125
+ # Check if it's an ArXiv search query
126
+ if prompt.lower().startswith("arxiv:"):
127
+ query = prompt[6:].strip()
128
+ with st.chat_message("assistant"):
129
+ with st.spinner("Searching ArXiv..."):
130
+ search_results = search_arxiv(query)
131
+ st.markdown(f"Search results for '{query}':\n\n{search_results}")
132
+ st.session_state.messages.append({"role": "assistant", "content": f"Search results for '{query}':\n\n{search_results}"})
133
+ else:
134
+ # Here you would typically send the message to your chat model and get a response
135
+ # For this example, we'll just echo the message
136
+ with st.chat_message("assistant"):
137
+ st.markdown(f"You said: {prompt}")
138
+ st.session_state.messages.append({"role": "assistant", "content": f"You said: {prompt}"})
 
 
 
 
 
 
 
 
 
 
139
 
140
+ save_data()
141
+ st.rerun()
142
 
143
  # Polling for updates
144
  if st.button("Refresh Chat"):
145
+ st.rerun()
146
+
147
+ # Auto-refresh
148
+ if 'last_refresh' not in st.session_state:
149
+ st.session_state.last_refresh = time.time()
150
 
151
+ if time.time() - st.session_state.last_refresh > 5: # Refresh every 5 seconds
152
+ st.session_state.last_refresh = time.time()
153
+ st.rerun()