Spaces:
No application file
No application file
fix
Browse files- app/app_routes.py +35 -44
app/app_routes.py
CHANGED
@@ -191,6 +191,10 @@ def register_routes(app, login_required, llm_interface, retriever, stt_client, D
|
|
191 |
@login_required
|
192 |
def chat():
|
193 |
"""ํ
์คํธ ๊ธฐ๋ฐ ์ฑ๋ด API"""
|
|
|
|
|
|
|
|
|
194 |
try:
|
195 |
# ์ฑ์ด ์ค๋น๋์๋์ง ํ์ธ
|
196 |
is_ready = app_ready_event.is_set() if isinstance(app_ready_event, threading.Event) else False
|
@@ -213,41 +217,33 @@ def register_routes(app, login_required, llm_interface, retriever, stt_client, D
|
|
213 |
search_results = []
|
214 |
search_warning = None
|
215 |
try:
|
216 |
-
# retriever ์ํ ๊ฒ์ฆ
|
217 |
if retriever is None:
|
218 |
logger.warning("Retriever๊ฐ ์ด๊ธฐํ๋์ง ์์์ต๋๋ค.")
|
219 |
-
#
|
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 |
-
#
|
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 |
-
#
|
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 |
-
|
243 |
-
|
244 |
-
|
245 |
-
|
246 |
-
|
247 |
-
|
248 |
-
|
249 |
-
|
250 |
-
|
|
|
251 |
search_results = []
|
252 |
search_warning = "๊ฒ์ ๊ธฐ๋ฅ์ด ํ์ฌ ์ ํ๋์ด ์์ต๋๋ค."
|
253 |
except Exception as search_err:
|
@@ -364,6 +360,9 @@ def register_routes(app, login_required, llm_interface, retriever, stt_client, D
|
|
364 |
@login_required
|
365 |
def voice_chat():
|
366 |
"""์์ฑ ์ฑ API ์๋ํฌ์ธํธ"""
|
|
|
|
|
|
|
367 |
try:
|
368 |
# ์ฑ์ด ์ค๋น๋์๋์ง ํ์ธ
|
369 |
is_ready = app_ready_event.is_set() if isinstance(app_ready_event, threading.Event) else False
|
@@ -417,40 +416,32 @@ def register_routes(app, login_required, llm_interface, retriever, stt_client, D
|
|
417 |
search_results = []
|
418 |
search_warning = None
|
419 |
try:
|
420 |
-
# retriever ์ํ ๊ฒ์ฆ
|
421 |
if retriever is None:
|
422 |
logger.warning("Retriever๊ฐ ์ด๊ธฐํ๋์ง ์์์ต๋๋ค.")
|
423 |
-
#
|
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 |
-
#
|
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 |
-
#
|
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 |
-
|
446 |
-
|
447 |
-
|
448 |
-
|
449 |
-
|
450 |
-
|
451 |
-
|
452 |
-
|
453 |
-
|
|
|
454 |
search_results = []
|
455 |
search_warning = "๊ฒ์ ๊ธฐ๋ฅ์ด ํ์ฌ ์ ํ๋์ด ์์ต๋๋ค."
|
456 |
except Exception as search_err:
|
|
|
191 |
@login_required
|
192 |
def chat():
|
193 |
"""ํ
์คํธ ๊ธฐ๋ฐ ์ฑ๋ด API"""
|
194 |
+
# ํจ์ ๋ด์์๋ ์ ์ญ retriever ๋ณ์๋ฅผ ์ง์ ์ฌ์ฉํ๊ณ ์์ ํ์ง ์์
|
195 |
+
# nonlocal ํค์๋๋ฅผ ์ฌ์ฉํ์ฌ ์ธ๋ถ ์ค์ฝํ์ retriever ๋ณ์๋ฅผ ์ฐธ์กฐ
|
196 |
+
nonlocal retriever
|
197 |
+
|
198 |
try:
|
199 |
# ์ฑ์ด ์ค๋น๋์๋์ง ํ์ธ
|
200 |
is_ready = app_ready_event.is_set() if isinstance(app_ready_event, threading.Event) else False
|
|
|
217 |
search_results = []
|
218 |
search_warning = None
|
219 |
try:
|
220 |
+
# retriever ์ํ ๊ฒ์ฆ - ์ฌ๊ธฐ์ retriever ๋ณ์๋ฅผ ์์ ํ์ง ์๋๋ก ์ฃผ์
|
221 |
if retriever is None:
|
222 |
logger.warning("Retriever๊ฐ ์ด๊ธฐํ๋์ง ์์์ต๋๋ค.")
|
223 |
+
# retriever๊ฐ None์ธ ๊ฒฝ์ฐ ๊ฒฝ๊ณ ๋ง ๊ธฐ๋กํ๊ณ ์์ ํ์ง ์์
|
|
|
|
|
|
|
|
|
224 |
search_warning = "๊ฒ์ ๊ธฐ๋ฅ์ด ์์ง ์ค๋น๋์ง ์์์ต๋๋ค."
|
225 |
elif hasattr(retriever, 'is_mock') and retriever.is_mock:
|
226 |
logger.info("Mock Retriever ์ฌ์ฉ ์ค - ๊ฒ์ ๊ฒฐ๊ณผ ์์.")
|
227 |
+
# ์ํ ๊ธฐ๋ก๋ง ํ๊ณ ์์ ํ์ง ์์
|
|
|
|
|
|
|
228 |
search_warning = "๊ฒ์ ์ธ๋ฑ์ค๊ฐ ์์ง ๊ตฌ์ถ ์ค์
๋๋ค. ๊ธฐ๋ณธ ์๋ต๋ง ์ ๊ณต๋ฉ๋๋ค."
|
229 |
elif not hasattr(retriever, 'search'):
|
230 |
logger.warning("Retriever์ search ๋ฉ์๋๊ฐ ์์ต๋๋ค.")
|
231 |
+
# ์ํ ๊ธฐ๋ก๋ง ํ๊ณ ์์ ํ์ง ์์
|
|
|
|
|
232 |
search_warning = "๊ฒ์ ๊ธฐ๋ฅ์ด ํ์ฌ ์ ํ๋์ด ์์ต๋๋ค."
|
233 |
else:
|
234 |
try:
|
235 |
logger.info(f"๊ฒ์ ์ํ: {query[:50]}...")
|
236 |
# ์ค๋ฅ ์ ๋น ๊ฒฐ๊ณผ๋ฅผ ๋ฐํํ๋ ์ถ๊ฐ try-except ๋ธ๋ก
|
237 |
+
# retriever๊ฐ ์ ํจํ๊ณ search ๋ฉ์๋๊ฐ ์๋ ๊ฒฝ์ฐ์๋ง ๊ฒ์ ์คํ
|
238 |
+
if retriever is not None and hasattr(retriever, 'search'):
|
239 |
+
try:
|
240 |
+
search_results = retriever.search(query, top_k=5, first_stage_k=6)
|
241 |
+
except Exception as search_err:
|
242 |
+
logger.error(f"retriever.search() ํธ์ถ ์ค ์ค๋ฅ ๋ฐ์: {search_err}", exc_info=True)
|
243 |
+
search_results = []
|
244 |
+
search_warning = f"๊ฒ์ ์ค ์ค๋ฅ ๋ฐ์: {str(search_err)}"
|
245 |
+
else:
|
246 |
+
logger.warning("๊ฒ์์ ์คํํ ์ ์์ต๋๋ค: retriever๊ฐ None์ด๊ฑฐ๋ search ๋ฉ์๋๊ฐ ์์ต๋๋ค.")
|
247 |
search_results = []
|
248 |
search_warning = "๊ฒ์ ๊ธฐ๋ฅ์ด ํ์ฌ ์ ํ๋์ด ์์ต๋๋ค."
|
249 |
except Exception as search_err:
|
|
|
360 |
@login_required
|
361 |
def voice_chat():
|
362 |
"""์์ฑ ์ฑ API ์๋ํฌ์ธํธ"""
|
363 |
+
# ํจ์ ๋ด์์๋ ์ ์ญ retriever ๋ณ์๋ฅผ ์ง์ ์ฌ์ฉํ๊ณ ์์ ํ์ง ์์
|
364 |
+
nonlocal retriever
|
365 |
+
|
366 |
try:
|
367 |
# ์ฑ์ด ์ค๋น๋์๋์ง ํ์ธ
|
368 |
is_ready = app_ready_event.is_set() if isinstance(app_ready_event, threading.Event) else False
|
|
|
416 |
search_results = []
|
417 |
search_warning = None
|
418 |
try:
|
419 |
+
# retriever ์ํ ๊ฒ์ฆ - ์ฌ๊ธฐ์ retriever ๋ณ์๋ฅผ ์์ ํ์ง ์๋๋ก ์ฃผ์
|
420 |
if retriever is None:
|
421 |
logger.warning("Retriever๊ฐ ์ด๊ธฐํ๋์ง ์์์ต๋๋ค.")
|
422 |
+
# ์ํ ๊ธฐ๋ก๋ง ํ๊ณ ์์ ํ์ง ์์
|
|
|
|
|
|
|
|
|
423 |
search_warning = "๊ฒ์ ๊ธฐ๋ฅ์ด ์์ง ์ค๋น๋์ง ์์์ต๋๋ค."
|
424 |
elif hasattr(retriever, 'is_mock') and retriever.is_mock:
|
425 |
logger.info("Mock Retriever ์ฌ์ฉ ์ค - ๊ฒ์ ๊ฒฐ๊ณผ ์์.")
|
426 |
+
# ์ํ ๊ธฐ๋ก๋ง ํ๊ณ ์์ ํ์ง ์์
|
|
|
|
|
|
|
427 |
search_warning = "๊ฒ์ ์ธ๋ฑ์ค๊ฐ ์์ง ๊ตฌ์ถ ์ค์
๋๋ค. ๊ธฐ๋ณธ ์๋ต๋ง ์ ๊ณต๋ฉ๋๋ค."
|
428 |
elif not hasattr(retriever, 'search'):
|
429 |
logger.warning("Retriever์ search ๋ฉ์๋๊ฐ ์์ต๋๋ค.")
|
430 |
+
# ์ํ ๊ธฐ๋ก๋ง ํ๊ณ ์์ ํ์ง ์์
|
|
|
|
|
431 |
search_warning = "๊ฒ์ ๊ธฐ๋ฅ์ด ํ์ฌ ์ ํ๋์ด ์์ต๋๋ค."
|
432 |
else:
|
433 |
try:
|
434 |
logger.info(f"๊ฒ์ ์ํ: {transcription[:50]}...")
|
435 |
+
# retriever๊ฐ ์ ํจํ๊ณ search ๋ฉ์๋๊ฐ ์๋ ๊ฒฝ์ฐ์๋ง ๊ฒ์ ์คํ
|
436 |
+
if retriever is not None and hasattr(retriever, 'search'):
|
437 |
+
try:
|
438 |
+
search_results = retriever.search(transcription, top_k=5, first_stage_k=6)
|
439 |
+
except Exception as search_err:
|
440 |
+
logger.error(f"retriever.search() ํธ์ถ ์ค ์ค๋ฅ ๋ฐ์: {search_err}", exc_info=True)
|
441 |
+
search_results = []
|
442 |
+
search_warning = f"๊ฒ์ ์ค ์ค๋ฅ ๋ฐ์: {str(search_err)}"
|
443 |
+
else:
|
444 |
+
logger.warning("๊ฒ์์ ์คํํ ์ ์์ต๋๋ค: retriever๊ฐ None์ด๊ฑฐ๋ search ๋ฉ์๋๊ฐ ์์ต๋๋ค.")
|
445 |
search_results = []
|
446 |
search_warning = "๊ฒ์ ๊ธฐ๋ฅ์ด ํ์ฌ ์ ํ๋์ด ์์ต๋๋ค."
|
447 |
except Exception as search_err:
|