SwatGarg commited on
Commit
5fc454f
·
verified ·
1 Parent(s): d00e713

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +27 -31
app.py CHANGED
@@ -34,8 +34,10 @@ states = [
34
  chatbot = QLearningChatbot(states)
35
 
36
  # Function to display Q-table
37
- def display_q_table(q_values, states):
38
- q_table_dict = {"State": states}
 
 
39
  q_table_df = pd.DataFrame(q_table_dict)
40
  return q_table_df
41
 
@@ -62,19 +64,11 @@ def speech_recognition_callback():
62
 
63
  ## generated stores AI generated responses
64
  if 'generated' not in st.session_state:
65
- st.session_state['generated'] = []
66
-
67
  ## past stores User's questions
68
  if 'past' not in st.session_state:
69
- st.session_state['past'] = []
70
-
71
- # Initialize memory
72
- if "entered_text" not in st.session_state:
73
- st.session_state.entered_text = []
74
- if "entered_mood" not in st.session_state:
75
- st.session_state.entered_mood = []
76
- if "messages" not in st.session_state:
77
- st.session_state.messages = []
78
  if "user_sentiment" not in st.session_state:
79
  st.session_state.user_sentiment = "Neutral"
80
 
@@ -91,8 +85,9 @@ def get_text():
91
  return input_text
92
 
93
  def generate_response(prompt):
 
94
  response = mdl.call_conversational_rag(prompt,final_chain)
95
- return response['answer']
96
 
97
  # Collect user input
98
  # Add a radio button to choose input mode
@@ -115,6 +110,7 @@ else:
115
  ## Applying the user input box
116
  with input_container:
117
  if user_message:
 
118
  st.session_state.entered_text.append(user_message)
119
  st.session_state.messages.append({"role": "user", "content": user_message})
120
 
@@ -124,17 +120,22 @@ with input_container:
124
 
125
  # Process the user's message and generate a response
126
  with st.spinner("Processing..."):
127
- response = generate_response(user_message)
128
  st.session_state.past.append(user_message)
129
  st.session_state.messages.append({"role": "ai", "content": response})
130
-
131
- # Detect sentiment
132
- user_sentiment = chatbot.detect_sentiment(user_message)
133
 
134
  # Display the AI's response
135
  with st.chat_message("ai"):
136
  st.markdown(response)
137
- st.session_state.user_sentiment = user_sentiment
 
 
 
 
 
 
 
138
 
139
  # Convert the response to speech
140
  speech_fp = text_to_speech(response)
@@ -143,24 +144,19 @@ with input_container:
143
 
144
 
145
  # Check if there are generated responses to display
146
- if st.session_state['generated']:
147
- with conversation_history_container:
148
- # Display the conversation history
149
- for i, (past_message, generated_response) in enumerate(zip(st.session_state['past'], st.session_state['generated'])):
150
- message(past_message, is_user=True, key=str(i) + '_user')
151
- message(generated_response, key=str(i) + '_ai')
152
- else:
153
- # If no generated responses, display the initial message from the AI
154
- if not st.session_state['past']:
155
- st.markdown("I'm your Mental health Assistant, How may I help you?")
156
 
157
 
158
 
159
  with st.sidebar.expander("Sentiment Analysis"):
160
  # Use the values stored in session state
161
  st.write(
162
- f"- Detected User Tone: {st.session_state.user_sentiment} ({st.session_state.mood_trend.capitalize()}{st.session_state.mood_trend_symbol})"
163
  )
164
 
165
  # Display Q-table
166
- st.dataframe(display_q_table(chatbot.q_values, states))
 
34
  chatbot = QLearningChatbot(states)
35
 
36
  # Function to display Q-table
37
+ def display_q_table(states):
38
+ values = [0,1,2]
39
+ q_table_dict = {"State": states,
40
+ "values":values}
41
  q_table_df = pd.DataFrame(q_table_dict)
42
  return q_table_df
43
 
 
64
 
65
  ## generated stores AI generated responses
66
  if 'generated' not in st.session_state:
67
+ st.session_state['generated'] = ["I'm your Mental health Assistant, How may I help you?"]
 
68
  ## past stores User's questions
69
  if 'past' not in st.session_state:
70
+ st.session_state['past'] = ['Hi']
71
+
 
 
 
 
 
 
 
72
  if "user_sentiment" not in st.session_state:
73
  st.session_state.user_sentiment = "Neutral"
74
 
 
85
  return input_text
86
 
87
  def generate_response(prompt):
88
+ sentiment = mdl.predict_classification(prompt)
89
  response = mdl.call_conversational_rag(prompt,final_chain)
90
+ return response['answer'], sentiment
91
 
92
  # Collect user input
93
  # Add a radio button to choose input mode
 
110
  ## Applying the user input box
111
  with input_container:
112
  if user_message:
113
+ detected_sentiment = None
114
  st.session_state.entered_text.append(user_message)
115
  st.session_state.messages.append({"role": "user", "content": user_message})
116
 
 
120
 
121
  # Process the user's message and generate a response
122
  with st.spinner("Processing..."):
123
+ response,detected_sentiment = generate_response(user_message)
124
  st.session_state.past.append(user_message)
125
  st.session_state.messages.append({"role": "ai", "content": response})
126
+
 
 
127
 
128
  # Display the AI's response
129
  with st.chat_message("ai"):
130
  st.markdown(response)
131
+ if detected_sentiment == 0:
132
+ st.session_state.user_sentiment = 'Negetive'
133
+ elif detected_sentiment == 1:
134
+ st.session_state.user_sentiment = 'Neutral'
135
+ elif detected_sentiment == 1:
136
+ st.session_state.user_sentiment = 'Positive'
137
+ else:
138
+ st.session_state.user_sentiment = 'Neutral'
139
 
140
  # Convert the response to speech
141
  speech_fp = text_to_speech(response)
 
144
 
145
 
146
  # Check if there are generated responses to display
147
+ with response_container:
148
+ if st.session_state['generated']:
149
+ for i in range(len(st.session_state['generated'])):
150
+ message(st.session_state['past'][i], is_user=True, key=str(i) + '_user')
151
+ message(st.session_state["generated"][i], key=str(i))
 
 
 
 
 
152
 
153
 
154
 
155
  with st.sidebar.expander("Sentiment Analysis"):
156
  # Use the values stored in session state
157
  st.write(
158
+ f"- Detected User Tone: {st.session_state.user_sentiment}"
159
  )
160
 
161
  # Display Q-table
162
+ st.dataframe(display_q_table(states))