Severian commited on
Commit
ebfa2e3
·
verified ·
1 Parent(s): 6407f4a

Update chatbot.py

Browse files
Files changed (1) hide show
  1. chatbot.py +74 -30
chatbot.py CHANGED
@@ -138,10 +138,18 @@ Let's start by exploring your innovative idea! What's the name of your idea, or
138
  setattr(self.idea_form, stage["field"], form_data[stage["field"]])
139
 
140
  # Save to database
141
- if self.idea_id:
142
- update_idea_in_database(self.idea_id, self.idea_form, self.db)
143
- else:
144
- self.idea_id = save_idea_to_database(self.idea_form, self.db)
 
 
 
 
 
 
 
 
145
 
146
  return form_data
147
 
@@ -157,15 +165,60 @@ Let's start by exploring your innovative idea! What's the name of your idea, or
157
  self.idea_id = None
158
  self.current_stage = None
159
  self.add_system_message(self.get_initial_greeting())
160
- clear_database(self.db)
 
 
 
 
 
 
 
 
161
  return self.chat_history, self.idea_form.dict()
162
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
163
  def update_idea_form(self, stage_name: str, form_data: str):
164
  setattr(self.idea_form, stage_name.lower().replace(" ", "_"), form_data)
165
- if self.idea_id:
166
- update_idea_in_database(self.idea_id, self.idea_form, self.db)
167
- else:
168
- self.idea_id = save_idea_to_database(self.idea_form, self.db)
 
 
 
 
 
 
 
 
169
 
170
  def generate_form_data(self, stage: str, model: str, thinking_budget: int) -> str:
171
  # Prepare the conversation history for the LLM
@@ -204,23 +257,6 @@ Let's start by exploring your innovative idea! What's the name of your idea, or
204
 
205
  return form_data.get(stage, "")
206
 
207
- def start_over(self):
208
- self.reset()
209
- clear_database(self.db)
210
- self.idea_id = None
211
-
212
- # Reinitialize with a new empty idea
213
- new_idea = InnovativeIdea()
214
- self.db.add(new_idea)
215
- self.db.commit()
216
- self.idea_id = new_idea.id
217
-
218
- self.idea_form = IdeaForm()
219
- self.chat_history = []
220
- self.add_system_message(self.get_initial_greeting())
221
-
222
- return self.chat_history, self.idea_form.dict()
223
-
224
  def process_stage_input_stream(self, stage_name: str, message: str, model: str, system_prompt: str, thinking_budget: int):
225
  if self.current_stage != stage_name:
226
  activation_message = self.activate_stage(stage_name)
@@ -281,10 +317,18 @@ Let's start by exploring your innovative idea! What's the name of your idea, or
281
  setattr(self.idea_form, stage.field, form_data[stage.name])
282
 
283
  # Save to database
284
- if self.idea_id:
285
- update_idea_in_database(self.idea_id, self.idea_form, self.db)
286
- else:
287
- self.idea_id = save_idea_to_database(self.idea_form, self.db)
 
 
 
 
 
 
 
 
288
 
289
  def generate_form_data_stream(self, stage: str, model: str, thinking_budget: int):
290
  conversation = "\n".join([f"{role}: {message}" for role, message in self.chat_history])
 
138
  setattr(self.idea_form, stage["field"], form_data[stage["field"]])
139
 
140
  # Save to database
141
+ try:
142
+ new_session = SessionLocal()
143
+ if self.idea_id:
144
+ update_idea_in_database(self.idea_id, self.idea_form, new_session)
145
+ else:
146
+ self.idea_id = save_idea_to_database(self.idea_form, new_session)
147
+ new_session.commit()
148
+ except Exception as e:
149
+ logging.error(f"Error saving idea to database: {str(e)}")
150
+ new_session.rollback()
151
+ finally:
152
+ new_session.close()
153
 
154
  return form_data
155
 
 
165
  self.idea_id = None
166
  self.current_stage = None
167
  self.add_system_message(self.get_initial_greeting())
168
+ try:
169
+ new_session = SessionLocal()
170
+ clear_database(new_session)
171
+ new_session.commit()
172
+ except Exception as e:
173
+ logging.error(f"Error clearing database: {str(e)}")
174
+ new_session.rollback()
175
+ finally:
176
+ new_session.close()
177
  return self.chat_history, self.idea_form.dict()
178
 
179
+ def start_over(self):
180
+ self.chat_history = []
181
+ self.idea_form = IdeaForm()
182
+ self.current_stage = None
183
+ self.add_system_message(self.get_initial_greeting())
184
+
185
+ try:
186
+ new_session = SessionLocal()
187
+ # Clear the existing database
188
+ clear_database(new_session)
189
+
190
+ # Create a new empty idea
191
+ new_idea = InnovativeIdea()
192
+ new_session.add(new_idea)
193
+ new_session.commit()
194
+ new_session.refresh(new_idea)
195
+
196
+ # Update the idea_id
197
+ self.idea_id = new_idea.id
198
+
199
+ new_session.close()
200
+ except Exception as e:
201
+ logging.error(f"Error in start_over: {str(e)}")
202
+ if 'new_session' in locals():
203
+ new_session.rollback()
204
+ new_session.close()
205
+
206
+ return self.chat_history, self.idea_form.dict(), STAGES[0]["name"]
207
+
208
  def update_idea_form(self, stage_name: str, form_data: str):
209
  setattr(self.idea_form, stage_name.lower().replace(" ", "_"), form_data)
210
+ try:
211
+ new_session = SessionLocal()
212
+ if self.idea_id:
213
+ update_idea_in_database(self.idea_id, self.idea_form, new_session)
214
+ else:
215
+ self.idea_id = save_idea_to_database(self.idea_form, new_session)
216
+ new_session.commit()
217
+ except Exception as e:
218
+ logging.error(f"Error updating idea form: {str(e)}")
219
+ new_session.rollback()
220
+ finally:
221
+ new_session.close()
222
 
223
  def generate_form_data(self, stage: str, model: str, thinking_budget: int) -> str:
224
  # Prepare the conversation history for the LLM
 
257
 
258
  return form_data.get(stage, "")
259
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
260
  def process_stage_input_stream(self, stage_name: str, message: str, model: str, system_prompt: str, thinking_budget: int):
261
  if self.current_stage != stage_name:
262
  activation_message = self.activate_stage(stage_name)
 
317
  setattr(self.idea_form, stage.field, form_data[stage.name])
318
 
319
  # Save to database
320
+ try:
321
+ new_session = SessionLocal()
322
+ if self.idea_id:
323
+ update_idea_in_database(self.idea_id, self.idea_form, new_session)
324
+ else:
325
+ self.idea_id = save_idea_to_database(self.idea_form, new_session)
326
+ new_session.commit()
327
+ except Exception as e:
328
+ logging.error(f"Error saving idea to database: {str(e)}")
329
+ new_session.rollback()
330
+ finally:
331
+ new_session.close()
332
 
333
  def generate_form_data_stream(self, stage: str, model: str, thinking_budget: int):
334
  conversation = "\n".join([f"{role}: {message}" for role, message in self.chat_history])