Update app.py
Browse files
app.py
CHANGED
@@ -34,8 +34,10 @@ states = [
|
|
34 |
chatbot = QLearningChatbot(states)
|
35 |
|
36 |
# Function to display Q-table
|
37 |
-
def display_q_table(
|
38 |
-
|
|
|
|
|
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 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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 |
-
|
147 |
-
|
148 |
-
|
149 |
-
|
150 |
-
message(
|
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}
|
163 |
)
|
164 |
|
165 |
# Display Q-table
|
166 |
-
st.dataframe(display_q_table(
|
|
|
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))
|