karthikeyan-r commited on
Commit
eeaf9ed
·
verified ·
1 Parent(s): 171f684

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +71 -69
app.py CHANGED
@@ -34,7 +34,8 @@ if "tokenizer" not in st.session_state:
34
  if "qa_pipeline" not in st.session_state:
35
  st.session_state["qa_pipeline"] = None
36
  if "conversation" not in st.session_state:
37
- # We'll store conversation as a list of dicts, e.g. [{"role": "user"/"assistant", "content": "..."}]
 
38
  st.session_state["conversation"] = []
39
 
40
  # ----- Load Model -----
@@ -76,9 +77,7 @@ if load_model_button:
76
  st.session_state["tokenizer"] = tokenizer
77
  st.session_state["qa_pipeline"] = qa_pipe
78
 
79
- # ---------------------------
80
- # Add a welcome message only once, if conversation is empty
81
- # ---------------------------
82
  if len(st.session_state["conversation"]) == 0:
83
  st.session_state["conversation"].append({
84
  "role": "assistant",
@@ -102,85 +101,88 @@ if clear_conversation_button:
102
  st.success("Conversation cleared.")
103
 
104
  # ----- Title -----
105
- st.title("ChatBot")
106
 
107
- user_input = None # We'll collect it below
108
 
109
- # If we have a T5 pipeline (general QA model):
 
110
  if st.session_state["qa_pipeline"]:
 
111
  user_input = st.chat_input("Enter your query:")
112
  if user_input:
113
- # 1) Save user message to conversation immediately
114
- st.session_state["conversation"].append({"role": "user", "content": user_input})
 
 
 
115
 
116
  # 2) Generate assistant response
117
- with st.chat_message("assistant"):
118
- with st.spinner("Generating response..."):
119
- try:
120
- response = st.session_state["qa_pipeline"](
121
- f"Q: {user_input}",
122
- max_length=250
123
- )
124
- generated_text = response[0]["generated_text"]
125
- except Exception as e:
126
- generated_text = f"Error: {str(e)}"
127
- st.write(generated_text)
128
-
129
- # 3) Save assistant message
130
- st.session_state["conversation"].append({"role": "assistant", "content": generated_text})
131
-
132
- # If we have the calculation model loaded (model_options["1"]):
133
  elif st.session_state["model"] and (model_choice == model_options["1"]):
 
134
  user_input = st.chat_input("Enter your query for calculation:")
135
  if user_input:
136
  # 1) Save user message
137
- st.session_state["conversation"].append({"role": "user", "content": user_input})
 
 
 
138
 
139
  # 2) Generate assistant response
140
- with st.chat_message("assistant"):
141
- with st.spinner("Generating response..."):
142
- try:
143
- tokenizer = st.session_state["tokenizer"]
144
- model = st.session_state["model"]
145
-
146
- inputs = tokenizer(
147
- f"Input: {user_input}\nOutput:",
148
- return_tensors="pt",
149
- padding=True,
150
- truncation=True
151
- )
152
- input_ids = inputs.input_ids
153
- attention_mask = inputs.attention_mask
154
-
155
- output = model.generate(
156
- input_ids=input_ids,
157
- attention_mask=attention_mask,
158
- max_length=250,
159
- pad_token_id=tokenizer.pad_token_id,
160
- eos_token_id=tokenizer.eos_token_id,
161
- do_sample=False
162
- )
163
-
164
- decoded_output = tokenizer.decode(
165
- output[0],
166
- skip_special_tokens=True
167
- )
168
- # Extract answer after 'Output:' if present
169
- if "Output:" in decoded_output:
170
- answer = decoded_output.split("Output:")[-1].strip()
171
- else:
172
- answer = decoded_output.strip()
173
-
174
- except Exception as e:
175
- answer = f"Error: {str(e)}"
176
-
177
- st.write(answer)
178
-
179
- # 3) Save assistant message
180
- st.session_state["conversation"].append({"role": "assistant", "content": answer})
181
-
182
- # If no model is loaded at all:
183
  else:
 
184
  st.info("No model is loaded. Please select a model and click 'Load Model' from the sidebar.")
185
 
186
 
 
34
  if "qa_pipeline" not in st.session_state:
35
  st.session_state["qa_pipeline"] = None
36
  if "conversation" not in st.session_state:
37
+ # We'll store conversation as a list of dicts,
38
+ # e.g. [{"role": "assistant", "content": "Hello..."}, {"role": "user", "content": "..."}]
39
  st.session_state["conversation"] = []
40
 
41
  # ----- Load Model -----
 
77
  st.session_state["tokenizer"] = tokenizer
78
  st.session_state["qa_pipeline"] = qa_pipe
79
 
80
+ # If conversation is empty, insert a welcome message
 
 
81
  if len(st.session_state["conversation"]) == 0:
82
  st.session_state["conversation"].append({
83
  "role": "assistant",
 
101
  st.success("Conversation cleared.")
102
 
103
  # ----- Title -----
104
+ st.title("Chat Conversation UI")
105
 
 
106
 
107
+ user_input = None
108
+
109
  if st.session_state["qa_pipeline"]:
110
+ # T5 pipeline
111
  user_input = st.chat_input("Enter your query:")
112
  if user_input:
113
+ # 1) Save user message
114
+ st.session_state["conversation"].append({
115
+ "role": "user",
116
+ "content": user_input
117
+ })
118
 
119
  # 2) Generate assistant response
120
+ try:
121
+ response = st.session_state["qa_pipeline"](
122
+ f"Q: {user_input}", max_length=250
123
+ )
124
+ answer = response[0]["generated_text"]
125
+ except Exception as e:
126
+ answer = f"Error: {str(e)}"
127
+
128
+ # 3) Append assistant message to conversation
129
+ st.session_state["conversation"].append({
130
+ "role": "assistant",
131
+ "content": answer
132
+ })
133
+
 
 
134
  elif st.session_state["model"] and (model_choice == model_options["1"]):
135
+ # Calculation model
136
  user_input = st.chat_input("Enter your query for calculation:")
137
  if user_input:
138
  # 1) Save user message
139
+ st.session_state["conversation"].append({
140
+ "role": "user",
141
+ "content": user_input
142
+ })
143
 
144
  # 2) Generate assistant response
145
+ tokenizer = st.session_state["tokenizer"]
146
+ model = st.session_state["model"]
147
+
148
+ try:
149
+ inputs = tokenizer(
150
+ f"Input: {user_input}\nOutput:",
151
+ return_tensors="pt",
152
+ padding=True,
153
+ truncation=True
154
+ )
155
+ input_ids = inputs.input_ids
156
+ attention_mask = inputs.attention_mask
157
+
158
+ output = model.generate(
159
+ input_ids=input_ids,
160
+ attention_mask=attention_mask,
161
+ max_length=250,
162
+ pad_token_id=tokenizer.pad_token_id,
163
+ eos_token_id=tokenizer.eos_token_id,
164
+ do_sample=False
165
+ )
166
+
167
+ decoded_output = tokenizer.decode(
168
+ output[0],
169
+ skip_special_tokens=True
170
+ )
171
+ # Extract answer after 'Output:' if present
172
+ if "Output:" in decoded_output:
173
+ answer = decoded_output.split("Output:")[-1].strip()
174
+ else:
175
+ answer = decoded_output.strip()
176
+ except Exception as e:
177
+ answer = f"Error: {str(e)}"
178
+
179
+ # 3) Append assistant message to conversation
180
+ st.session_state["conversation"].append({
181
+ "role": "assistant",
182
+ "content": answer
183
+ })
 
 
 
 
184
  else:
185
+ # If no model is loaded:
186
  st.info("No model is loaded. Please select a model and click 'Load Model' from the sidebar.")
187
 
188