ofermend commited on
Commit
3911511
β€’
1 Parent(s): 53233bd

added sample questions

Browse files
Files changed (2) hide show
  1. app.py +36 -8
  2. requirements.txt +2 -1
app.py CHANGED
@@ -1,10 +1,12 @@
1
 
2
- from omegaconf import OmegaConf
3
- import streamlit as st
4
  import os
5
  from PIL import Image
6
  import sys
7
 
 
 
 
 
8
  from dotenv import load_dotenv
9
  load_dotenv(override=True)
10
 
@@ -18,7 +20,6 @@ languages = {'English': 'en', 'Spanish': 'es', 'French': 'fr', 'German': 'de', '
18
  'Hebrew': 'he', 'Hindi': 'hi', 'Italian': 'it', 'Japanese': 'ja', 'Korean': 'ko', 'Portuguese': 'pt'}
19
  initial_prompt = "How can I help you today?"
20
 
21
-
22
  def create_tools(cfg):
23
 
24
  def adjust_response_to_student(
@@ -108,6 +109,16 @@ def initialize_agent(_cfg):
108
  def toggle_logs():
109
  st.session_state.show_logs = not st.session_state.show_logs
110
 
 
 
 
 
 
 
 
 
 
 
111
  def launch_bot():
112
  def reset():
113
  cfg = st.session_state.cfg
@@ -116,6 +127,7 @@ def launch_bot():
116
  st.session_state.agent = initialize_agent(cfg)
117
  st.session_state.log_messages = []
118
  st.session_state.prompt = None
 
119
  st.session_state.show_logs = False
120
 
121
  st.set_page_config(page_title="Justice Harvard Teaching Assistant", layout="wide")
@@ -126,15 +138,18 @@ def launch_bot():
126
  'api_key': str(os.environ['VECTARA_API_KEY']),
127
  'style': teaching_styles[0],
128
  'language': 'English',
129
- 'student_age': 18
130
-
131
  })
132
  st.session_state.cfg = cfg
133
  st.session_state.style = cfg.style
134
  st.session_state.language = cfg.language
135
  st.session_state.student_age = cfg.student_age
136
-
 
 
137
  reset()
 
138
  cfg = st.session_state.cfg
139
 
140
  # left side content
@@ -187,8 +202,18 @@ def launch_bot():
187
  with st.chat_message(message["role"], avatar=message["avatar"]):
188
  st.write(message["content"])
189
 
 
 
 
 
 
 
190
  # User-provided prompt
191
- if prompt := st.chat_input():
 
 
 
 
192
  st.session_state.messages.append({"role": "user", "content": prompt, "avatar": 'πŸ§‘β€πŸ’»'})
193
  st.session_state.prompt = prompt # Save the prompt in session state
194
  st.session_state.log_messages = []
@@ -196,6 +221,7 @@ def launch_bot():
196
  with st.chat_message("user", avatar='πŸ§‘β€πŸ’»'):
197
  print(f"Starting new question: {prompt}\n")
198
  st.write(prompt)
 
199
 
200
  # Generate a new response if last message is not from assistant
201
  if st.session_state.prompt:
@@ -206,7 +232,9 @@ def launch_bot():
206
  message = {"role": "assistant", "content": res, "avatar": 'πŸ€–'}
207
  st.session_state.messages.append(message)
208
  st.markdown(res)
209
- st.session_state.prompt = None
 
 
210
 
211
  log_placeholder = st.empty()
212
  with log_placeholder.container():
 
1
 
 
 
2
  import os
3
  from PIL import Image
4
  import sys
5
 
6
+ from omegaconf import OmegaConf
7
+ import streamlit as st
8
+ from streamlit_pills import pills
9
+
10
  from dotenv import load_dotenv
11
  load_dotenv(override=True)
12
 
 
20
  'Hebrew': 'he', 'Hindi': 'hi', 'Italian': 'it', 'Japanese': 'ja', 'Korean': 'ko', 'Portuguese': 'pt'}
21
  initial_prompt = "How can I help you today?"
22
 
 
23
  def create_tools(cfg):
24
 
25
  def adjust_response_to_student(
 
109
  def toggle_logs():
110
  st.session_state.show_logs = not st.session_state.show_logs
111
 
112
+ def show_example_questions():
113
+ if len(st.session_state.example_messages) > 0 and st.session_state.first_turn:
114
+ selected_example = pills("Queries to Try:", st.session_state.example_messages, index=None)
115
+ if selected_example:
116
+ st.session_state.ex_prompt = selected_example
117
+ st.session_state.first_turn = False
118
+ return True
119
+ return False
120
+
121
+
122
  def launch_bot():
123
  def reset():
124
  cfg = st.session_state.cfg
 
127
  st.session_state.agent = initialize_agent(cfg)
128
  st.session_state.log_messages = []
129
  st.session_state.prompt = None
130
+ st.session_state.first_turn = True
131
  st.session_state.show_logs = False
132
 
133
  st.set_page_config(page_title="Justice Harvard Teaching Assistant", layout="wide")
 
138
  'api_key': str(os.environ['VECTARA_API_KEY']),
139
  'style': teaching_styles[0],
140
  'language': 'English',
141
+ 'student_age': 18,
142
+ 'examples': os.environ.get('QUERY_EXAMPLES', None)
143
  })
144
  st.session_state.cfg = cfg
145
  st.session_state.style = cfg.style
146
  st.session_state.language = cfg.language
147
  st.session_state.student_age = cfg.student_age
148
+ st.session_state.ex_prompt = None
149
+ example_messages = [example.strip() for example in cfg.examples.split(",")] if cfg.examples else []
150
+ st.session_state.example_messages = [em for em in example_messages if len(em)>0]
151
  reset()
152
+
153
  cfg = st.session_state.cfg
154
 
155
  # left side content
 
202
  with st.chat_message(message["role"], avatar=message["avatar"]):
203
  st.write(message["content"])
204
 
205
+ example_container = st.empty()
206
+ with example_container:
207
+ if show_example_questions():
208
+ example_container.empty()
209
+ st.rerun()
210
+
211
  # User-provided prompt
212
+ if st.session_state.ex_prompt:
213
+ prompt = st.session_state.ex_prompt
214
+ else:
215
+ prompt = st.chat_input()
216
+ if prompt:
217
  st.session_state.messages.append({"role": "user", "content": prompt, "avatar": 'πŸ§‘β€πŸ’»'})
218
  st.session_state.prompt = prompt # Save the prompt in session state
219
  st.session_state.log_messages = []
 
221
  with st.chat_message("user", avatar='πŸ§‘β€πŸ’»'):
222
  print(f"Starting new question: {prompt}\n")
223
  st.write(prompt)
224
+ st.session_state.ex_prompt = None
225
 
226
  # Generate a new response if last message is not from assistant
227
  if st.session_state.prompt:
 
232
  message = {"role": "assistant", "content": res, "avatar": 'πŸ€–'}
233
  st.session_state.messages.append(message)
234
  st.markdown(res)
235
+ st.session_state.ex_prompt = None
236
+ st.session_state.prompt = None
237
+ st.rerun()
238
 
239
  log_placeholder = st.empty()
240
  with log_placeholder.container():
requirements.txt CHANGED
@@ -1,5 +1,6 @@
1
  omegaconf==2.3.0
2
- streamlit==1.32.2
3
  pydantic==1.10.15
4
  python-dotenv==1.0.1
 
 
5
  git+https://{GITHUB_TOKEN}@github.com/vectara/vectara-agent.git
 
1
  omegaconf==2.3.0
 
2
  pydantic==1.10.15
3
  python-dotenv==1.0.1
4
+ streamlit==1.32.2
5
+ streamlit_pills==0.3.0
6
  git+https://{GITHUB_TOKEN}@github.com/vectara/vectara-agent.git