jeongsoo commited on
Commit
1defd08
ยท
1 Parent(s): 9f3746a
Files changed (1) hide show
  1. app/app_routes.py +62 -12
app/app_routes.py CHANGED
@@ -216,26 +216,53 @@ def register_routes(app, login_required, llm_interface, retriever, stt_client, D
216
  # retriever ์ƒํƒœ ๊ฒ€์ฆ
217
  if retriever is None:
218
  logger.warning("Retriever๊ฐ€ ์ดˆ๊ธฐํ™”๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.")
 
 
 
 
 
219
  search_warning = "๊ฒ€์ƒ‰ ๊ธฐ๋Šฅ์ด ์•„์ง ์ค€๋น„๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค."
220
  elif hasattr(retriever, 'is_mock') and retriever.is_mock:
221
  logger.info("Mock Retriever ์‚ฌ์šฉ ์ค‘ - ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ ์—†์Œ.")
 
 
 
 
222
  search_warning = "๊ฒ€์ƒ‰ ์ธ๋ฑ์Šค๊ฐ€ ์•„์ง ๊ตฌ์ถ• ์ค‘์ž…๋‹ˆ๋‹ค. ๊ธฐ๋ณธ ์‘๋‹ต๋งŒ ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค."
223
  elif not hasattr(retriever, 'search'):
224
  logger.warning("Retriever์— search ๋ฉ”์†Œ๋“œ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.")
 
 
 
225
  search_warning = "๊ฒ€์ƒ‰ ๊ธฐ๋Šฅ์ด ํ˜„์žฌ ์ œํ•œ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค."
226
  else:
227
  try:
228
  logger.info(f"๊ฒ€์ƒ‰ ์ˆ˜ํ–‰: {query[:50]}...")
229
  # ์˜ค๋ฅ˜ ์‹œ ๋นˆ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ์ถ”๊ฐ€ try-except ๋ธ”๋ก
230
- search_results = retriever.search(query, top_k=5, first_stage_k=6)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
231
  if not search_results:
232
  logger.info("๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.")
233
  else:
234
  logger.info(f"๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ: {len(search_results)}๊ฐœ ํ•ญ๋ชฉ")
235
- except Exception as search_err:
236
- logger.error(f"retriever.search() ํ˜ธ์ถœ ์ค‘ ์˜ค๋ฅ˜ ๋ฐœ์ƒ: {search_err}", exc_info=True)
237
  search_results = []
238
- search_warning = f"๊ฒ€์ƒ‰ ์ค‘ ์˜ค๋ฅ˜ ๋ฐœ์ƒ: {str(search_err)}"
239
  except Exception as e:
240
  logger.error(f"๊ฒ€์ƒ‰ ์ค‘ ์˜ค๋ฅ˜ ๋ฐœ์ƒ: {str(e)}", exc_info=True)
241
  search_results = []
@@ -393,29 +420,52 @@ def register_routes(app, login_required, llm_interface, retriever, stt_client, D
393
  # retriever ์ƒํƒœ ๊ฒ€์ฆ
394
  if retriever is None:
395
  logger.warning("Retriever๊ฐ€ ์ดˆ๊ธฐํ™”๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.")
 
 
 
 
 
396
  search_warning = "๊ฒ€์ƒ‰ ๊ธฐ๋Šฅ์ด ์•„์ง ์ค€๋น„๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค."
397
  elif hasattr(retriever, 'is_mock') and retriever.is_mock:
398
  logger.info("Mock Retriever ์‚ฌ์šฉ ์ค‘ - ๏ฟฝ๏ฟฝ๏ฟฝ์ƒ‰ ๊ฒฐ๊ณผ ์—†์Œ.")
 
 
 
 
399
  search_warning = "๊ฒ€์ƒ‰ ์ธ๋ฑ์Šค๊ฐ€ ์•„์ง ๊ตฌ์ถ• ์ค‘์ž…๋‹ˆ๋‹ค. ๊ธฐ๋ณธ ์‘๋‹ต๋งŒ ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค."
400
  elif not hasattr(retriever, 'search'):
401
  logger.warning("Retriever์— search ๋ฉ”์†Œ๋“œ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.")
 
 
 
402
  search_warning = "๊ฒ€์ƒ‰ ๊ธฐ๋Šฅ์ด ํ˜„์žฌ ์ œํ•œ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค."
403
  else:
404
  try:
405
  logger.info(f"๊ฒ€์ƒ‰ ์ˆ˜ํ–‰: {transcription[:50]}...")
406
- search_results = retriever.search(transcription, top_k=5, first_stage_k=6)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
407
  if not search_results:
408
  logger.info("๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.")
409
  else:
410
  logger.info(f"๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ: {len(search_results)}๊ฐœ ํ•ญ๋ชฉ")
411
- except Exception as search_err:
412
- logger.error(f"retriever.search() ํ˜ธ์ถœ ์ค‘ ์˜ค๋ฅ˜ ๋ฐœ์ƒ: {search_err}", exc_info=True)
413
  search_results = []
414
- search_warning = f"๊ฒ€์ƒ‰ ์ค‘ ์˜ค๋ฅ˜ ๋ฐœ์ƒ: {str(search_err)}"
415
- except Exception as e:
416
- logger.error(f"๊ฒ€์ƒ‰ ์ค‘ ์˜ค๋ฅ˜ ๋ฐœ์ƒ: {str(e)}", exc_info=True)
417
- search_results = []
418
- search_warning = f"๊ฒ€์ƒ‰ ์ค‘ ์˜ค๋ฅ˜ ๋ฐœ์ƒ: {str(e)}"
419
  except Exception as e:
420
  logger.error(f"๊ฒ€์ƒ‰ ์—”์ง„ ์ ‘๊ทผ ์ค‘ ์˜ค๋ฅ˜ ๋ฐœ์ƒ: {str(e)}", exc_info=True)
421
  search_results = []
 
216
  # retriever ์ƒํƒœ ๊ฒ€์ฆ
217
  if retriever is None:
218
  logger.warning("Retriever๊ฐ€ ์ดˆ๊ธฐํ™”๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.")
219
+ # Retriever๊ฐ€ None์ธ ๊ฒฝ์šฐ ๋นˆ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๊ณ  search ๋ฉ”์†Œ๋“œ ์ถ”๊ฐ€
220
+ from types import SimpleNamespace
221
+ retriever = SimpleNamespace()
222
+ retriever.search = lambda q, **kwargs: []
223
+ logger.info("์ž„์‹œ retriever ๊ฐ์ฒด ์ƒ์„ฑ ๋ฐ ๋นˆ search ๋ฉ”์†Œ๋“œ ์ถ”๊ฐ€")
224
  search_warning = "๊ฒ€์ƒ‰ ๊ธฐ๋Šฅ์ด ์•„์ง ์ค€๋น„๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค."
225
  elif hasattr(retriever, 'is_mock') and retriever.is_mock:
226
  logger.info("Mock Retriever ์‚ฌ์šฉ ์ค‘ - ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ ์—†์Œ.")
227
+ # search ๋ฉ”์†Œ๋“œ๊ฐ€ ์žˆ๋Š”์ง€ ํ™•์ธ, ์—†์œผ๋ฉด ์ถ”๊ฐ€
228
+ if not hasattr(retriever, 'search'):
229
+ retriever.search = lambda q, **kwargs: []
230
+ logger.info("Mock retriever์— search ๋ฉ”์†Œ๋“œ ์ถ”๊ฐ€")
231
  search_warning = "๊ฒ€์ƒ‰ ์ธ๋ฑ์Šค๊ฐ€ ์•„์ง ๊ตฌ์ถ• ์ค‘์ž…๋‹ˆ๋‹ค. ๊ธฐ๋ณธ ์‘๋‹ต๋งŒ ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค."
232
  elif not hasattr(retriever, 'search'):
233
  logger.warning("Retriever์— search ๋ฉ”์†Œ๋“œ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.")
234
+ # search ๋ฉ”์†Œ๋“œ ๋™์  ์ถ”๊ฐ€
235
+ retriever.search = lambda q, **kwargs: []
236
+ logger.info("retriever์— ๋นˆ search ๋ฉ”์†Œ๋“œ ๋™์  ์ถ”๊ฐ€")
237
  search_warning = "๊ฒ€์ƒ‰ ๊ธฐ๋Šฅ์ด ํ˜„์žฌ ์ œํ•œ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค."
238
  else:
239
  try:
240
  logger.info(f"๊ฒ€์ƒ‰ ์ˆ˜ํ–‰: {query[:50]}...")
241
  # ์˜ค๋ฅ˜ ์‹œ ๋นˆ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ์ถ”๊ฐ€ try-except ๋ธ”๋ก
242
+ try:
243
+ search_results = retriever.search(query, top_k=5, first_stage_k=6)
244
+ except AttributeError as attr_err:
245
+ logger.error(f"retriever์— search ๋ฉ”์†Œ๋“œ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค: {attr_err}", exc_info=True)
246
+ # retriever๊ฐ€ MockComponent๊ฐ€ ์•„๋‹ˆ๊ฑฐ๋‚˜ search ๋ฉ”์†Œ๋“œ๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ
247
+ # ๋™์ ์œผ๋กœ ๋ฉ”์†Œ๋“œ ์ถ”๊ฐ€
248
+ if not hasattr(retriever, 'search'):
249
+ logger.warning("retriever์— search ๋ฉ”์†Œ๋“œ๋ฅผ ๋™์ ์œผ๋กœ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.")
250
+ retriever.search = lambda q, **kwargs: []
251
+ search_results = []
252
+ search_warning = "๊ฒ€์ƒ‰ ๊ธฐ๋Šฅ์ด ํ˜„์žฌ ์ œํ•œ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค."
253
+ except Exception as search_err:
254
+ logger.error(f"retriever.search() ํ˜ธ์ถœ ์ค‘ ์˜ค๋ฅ˜ ๋ฐœ์ƒ: {search_err}", exc_info=True)
255
+ search_results = []
256
+ search_warning = f"๊ฒ€์ƒ‰ ์ค‘ ์˜ค๋ฅ˜ ๋ฐœ์ƒ: {str(search_err)}"
257
+
258
  if not search_results:
259
  logger.info("๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.")
260
  else:
261
  logger.info(f"๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ: {len(search_results)}๊ฐœ ํ•ญ๋ชฉ")
262
+ except Exception as e:
263
+ logger.error(f"๊ฒ€์ƒ‰ ์ฒ˜๋ฆฌ ์ค‘ ์˜ˆ์ƒ์น˜ ๋ชปํ•œ ์˜ค๋ฅ˜: {e}", exc_info=True)
264
  search_results = []
265
+ search_warning = f"๊ฒ€์ƒ‰ ์ฒ˜๋ฆฌ ์ค‘ ์˜ค๋ฅ˜ ๋ฐœ์ƒ: {str(e)}"
266
  except Exception as e:
267
  logger.error(f"๊ฒ€์ƒ‰ ์ค‘ ์˜ค๋ฅ˜ ๋ฐœ์ƒ: {str(e)}", exc_info=True)
268
  search_results = []
 
420
  # retriever ์ƒํƒœ ๊ฒ€์ฆ
421
  if retriever is None:
422
  logger.warning("Retriever๊ฐ€ ์ดˆ๊ธฐํ™”๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.")
423
+ # Retriever๊ฐ€ None์ธ ๊ฒฝ์šฐ ๋นˆ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๊ณ  search ๋ฉ”์†Œ๋“œ ์ถ”๊ฐ€
424
+ from types import SimpleNamespace
425
+ retriever = SimpleNamespace()
426
+ retriever.search = lambda q, **kwargs: []
427
+ logger.info("์ž„์‹œ retriever ๊ฐ์ฒด ์ƒ์„ฑ ๋ฐ ๋นˆ search ๋ฉ”์†Œ๋“œ ์ถ”๊ฐ€")
428
  search_warning = "๊ฒ€์ƒ‰ ๊ธฐ๋Šฅ์ด ์•„์ง ์ค€๋น„๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค."
429
  elif hasattr(retriever, 'is_mock') and retriever.is_mock:
430
  logger.info("Mock Retriever ์‚ฌ์šฉ ์ค‘ - ๏ฟฝ๏ฟฝ๏ฟฝ์ƒ‰ ๊ฒฐ๊ณผ ์—†์Œ.")
431
+ # search ๋ฉ”์†Œ๋“œ๊ฐ€ ์žˆ๋Š”์ง€ ํ™•์ธ, ์—†์œผ๋ฉด ์ถ”๊ฐ€
432
+ if not hasattr(retriever, 'search'):
433
+ retriever.search = lambda q, **kwargs: []
434
+ logger.info("Mock retriever์— search ๋ฉ”์†Œ๋“œ ์ถ”๊ฐ€")
435
  search_warning = "๊ฒ€์ƒ‰ ์ธ๋ฑ์Šค๊ฐ€ ์•„์ง ๊ตฌ์ถ• ์ค‘์ž…๋‹ˆ๋‹ค. ๊ธฐ๋ณธ ์‘๋‹ต๋งŒ ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค."
436
  elif not hasattr(retriever, 'search'):
437
  logger.warning("Retriever์— search ๋ฉ”์†Œ๋“œ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.")
438
+ # search ๋ฉ”์†Œ๋“œ ๋™์  ์ถ”๊ฐ€
439
+ retriever.search = lambda q, **kwargs: []
440
+ logger.info("retriever์— ๋นˆ search ๋ฉ”์†Œ๋“œ ๋™์  ์ถ”๊ฐ€")
441
  search_warning = "๊ฒ€์ƒ‰ ๊ธฐ๋Šฅ์ด ํ˜„์žฌ ์ œํ•œ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค."
442
  else:
443
  try:
444
  logger.info(f"๊ฒ€์ƒ‰ ์ˆ˜ํ–‰: {transcription[:50]}...")
445
+ try:
446
+ search_results = retriever.search(transcription, top_k=5, first_stage_k=6)
447
+ except AttributeError as attr_err:
448
+ logger.error(f"retriever์— search ๋ฉ”์†Œ๋“œ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค: {attr_err}", exc_info=True)
449
+ # retriever๊ฐ€ MockComponent๊ฐ€ ์•„๋‹ˆ๊ฑฐ๋‚˜ search ๋ฉ”์†Œ๋“œ๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ
450
+ # ๋™์ ์œผ๋กœ ๋ฉ”์†Œ๋“œ ์ถ”๊ฐ€
451
+ if not hasattr(retriever, 'search'):
452
+ logger.warning("retriever์— search ๋ฉ”์†Œ๋“œ๋ฅผ ๋™์ ์œผ๋กœ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.")
453
+ retriever.search = lambda q, **kwargs: []
454
+ search_results = []
455
+ search_warning = "๊ฒ€์ƒ‰ ๊ธฐ๋Šฅ์ด ํ˜„์žฌ ์ œํ•œ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค."
456
+ except Exception as search_err:
457
+ logger.error(f"retriever.search() ํ˜ธ์ถœ ์ค‘ ์˜ค๋ฅ˜ ๋ฐœ์ƒ: {search_err}", exc_info=True)
458
+ search_results = []
459
+ search_warning = f"๊ฒ€์ƒ‰ ์ค‘ ์˜ค๋ฅ˜ ๋ฐœ์ƒ: {str(search_err)}"
460
+
461
  if not search_results:
462
  logger.info("๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.")
463
  else:
464
  logger.info(f"๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ: {len(search_results)}๊ฐœ ํ•ญ๋ชฉ")
465
+ except Exception as e:
466
+ logger.error(f"๊ฒ€์ƒ‰ ์ฒ˜๋ฆฌ ์ค‘ ์˜ˆ์ƒ์น˜ ๋ชปํ•œ ์˜ค๋ฅ˜: {e}", exc_info=True)
467
  search_results = []
468
+ search_warning = f"๊ฒ€์ƒ‰ ์ฒ˜๋ฆฌ ์ค‘ ์˜ค๋ฅ˜ ๋ฐœ์ƒ: {str(e)}"
 
 
 
 
469
  except Exception as e:
470
  logger.error(f"๊ฒ€์ƒ‰ ์—”์ง„ ์ ‘๊ทผ ์ค‘ ์˜ค๋ฅ˜ ๋ฐœ์ƒ: {str(e)}", exc_info=True)
471
  search_results = []