code-slicer commited on
Commit
838438d
Β·
verified Β·
1 Parent(s): c32fc33

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +40 -20
app.py CHANGED
@@ -246,12 +246,6 @@ def _llm_structured_extract(user_text: str):
246
  return data
247
 
248
  # ──────────────────────────────── Streamlit용 LLM λͺ¨λ“œ UI ────────────────────────────────
249
- def _ensure_llm_state():
250
- st.session_state.setdefault("llm_mode", False)
251
- st.session_state.setdefault("llm_history", []) # [{'role':'user'|'assistant', 'content': str}, ...]
252
- st.session_state.setdefault("llm_intro_needed", False)
253
- st.session_state.setdefault("llm_input", "")
254
-
255
  def render_llm_followup(chat_container, inline=False):
256
  _ensure_llm_state()
257
  MAX_TURNS = 6
@@ -339,7 +333,12 @@ def render_llm_followup(chat_container, inline=False):
339
  st.session_state["llm_mode"] = False
340
  st.rerun()
341
 
342
-
 
 
 
 
 
343
  # μ§€μ—° μ΄ˆκΈ°ν™”: import μ‹œμ μ—λŠ” 데이터 μ ‘κ·Ό κΈˆμ§€, μ—¬κΈ°μ„œ ν•œ 번만 μ£Όμž…
344
  init_datasets(
345
  travel_df=travel_df,
@@ -642,7 +641,7 @@ def region_ui(travel_df, external_score_df, festival_df, weather_df, package_df,
642
  return
643
 
644
  # ────────────────── 3) μΆ”μ²œ μ’…λ£Œ 단계: 더 이상 μΆ”μ²œν•  μ—¬ν–‰μ§€κ°€ 없을 λ•Œ
645
- elif st.session_state[step_key] == "recommand_end":
646
  with chat_container:
647
  # 3.1) λ©”μ‹œμ§€ 좜λ ₯
648
  log_and_render(
@@ -876,16 +875,23 @@ def region_ui(travel_df, external_score_df, festival_df, weather_df, package_df,
876
  # μ„Έμ…˜ 정리
877
  st.session_state["package_rendered"] = True
878
  st.session_state[step_key] = "package_end"
879
- show_llm_inline()
880
 
881
- render_llm_followup(chat_container, inline=True)
882
- return
 
883
 
884
  # ────────────────── 7) μ’…λ£Œ 단계
885
  elif st.session_state[step_key] == "package_end":
 
 
 
 
 
 
886
  log_and_render("ν•„μš”ν•˜μ‹€ λ•Œ μ–Έμ œλ“ μ§€ 또 μ°Ύμ•„μ£Όμ„Έμš”! ✈️",
887
  sender="bot", chat_container=chat_container,
888
- key="goodbye")
889
  to_llm_mode()
890
 
891
  # ───────────────────────────────────── intent λͺ¨λ“œ
@@ -1234,14 +1240,21 @@ def intent_ui(travel_df, external_score_df, festival_df, weather_df, package_df,
1234
  st.session_state[step_key] = "package_end"
1235
  show_llm_inline() # ν”Œλž˜κ·Έλ§Œ ON (rerun μ—†μŒ)
1236
 
1237
- render_llm_followup(chat_container, inline=True)
1238
- return
1239
-
 
1240
  # ────────────────── 7) μ’…λ£Œ 단계
1241
  elif st.session_state[step_key] == "package_end":
 
 
 
 
 
 
1242
  log_and_render("ν•„μš”ν•˜μ‹€ λ•Œ μ–Έμ œλ“ μ§€ 또 μ°Ύμ•„μ£Όμ„Έμš”! ✈️",
1243
  sender="bot", chat_container=chat_container,
1244
- key="goodbye")
1245
  to_llm_mode()
1246
 
1247
  # ───────────────────────────────────── emotion λͺ¨λ“œ
@@ -1662,14 +1675,21 @@ def emotion_ui(travel_df, external_score_df, festival_df, weather_df, package_df
1662
  st.session_state[step_key] = "package_end"
1663
  show_llm_inline() # ν”Œλž˜κ·Έλ§Œ ON (rerun μ—†μŒ)
1664
 
1665
- render_llm_followup(chat_container, inline=True)
1666
- return
1667
-
 
1668
  # ────────────────── 7) μ’…λ£Œ 단계
1669
  elif st.session_state[step_key] == "package_end":
 
 
 
 
 
 
1670
  log_and_render("ν•„μš”ν•˜μ‹€ λ•Œ μ–Έμ œλ“ μ§€ 또 μ°Ύμ•„μ£Όμ„Έμš”! ✈️",
1671
  sender="bot", chat_container=chat_container,
1672
- key="goodbye")
1673
  to_llm_mode()
1674
 
1675
  # ───────────────────────────────────── unknown λͺ¨λ“œ
 
246
  return data
247
 
248
  # ──────────────────────────────── Streamlit용 LLM λͺ¨λ“œ UI ────────────────────────────────
 
 
 
 
 
 
249
  def render_llm_followup(chat_container, inline=False):
250
  _ensure_llm_state()
251
  MAX_TURNS = 6
 
333
  st.session_state["llm_mode"] = False
334
  st.rerun()
335
 
336
+ def render_llm_inline_if_open(chat_container):
337
+ """llm_inline ν”Œλž˜κ·Έκ°€ 켜져 있으면 인라인 LLM νŒ¨λ„μ„ κ·Έλ¦½λ‹ˆλ‹€."""
338
+ _ensure_llm_state()
339
+ if st.session_state.get("llm_inline", False):
340
+ render_llm_followup(chat_container, inline=True)
341
+
342
  # μ§€μ—° μ΄ˆκΈ°ν™”: import μ‹œμ μ—λŠ” 데이터 μ ‘κ·Ό κΈˆμ§€, μ—¬κΈ°μ„œ ν•œ 번만 μ£Όμž…
343
  init_datasets(
344
  travel_df=travel_df,
 
641
  return
642
 
643
  # ────────────────── 3) μΆ”μ²œ μ’…λ£Œ 단계: 더 이상 μΆ”μ²œν•  μ—¬ν–‰μ§€κ°€ 없을 λ•Œ
644
+ elif st.session_state[step_key] == "recommend_end":
645
  with chat_container:
646
  # 3.1) λ©”μ‹œμ§€ 좜λ ₯
647
  log_and_render(
 
875
  # μ„Έμ…˜ 정리
876
  st.session_state["package_rendered"] = True
877
  st.session_state[step_key] = "package_end"
878
+ show_llm_inline()
879
 
880
+ # βœ… rerun 없이 같은 사이클에 인라인 LLM νŒ¨λ„μ„ λ°”λ‘œ ν‘œμ‹œ
881
+ render_llm_inline_if_open(chat_container)
882
+ return
883
 
884
  # ────────────────── 7) μ’…λ£Œ 단계
885
  elif st.session_state[step_key] == "package_end":
886
+ # 인라인 LLM이 μ—΄λ € 있으면 μ•ˆλ‚΄ 버블을 반볡 좜λ ₯ν•˜μ§€ 말고
887
+ # LLM νŒ¨λ„λ§Œ μœ μ§€ν•©λ‹ˆλ‹€.
888
+ if st.session_state.get("llm_inline", False):
889
+ render_llm_inline_if_open(chat_container)
890
+ return
891
+ # 인라인을 닫은 κ²½μš°μ—λ§Œ λ§ˆμ§€λ§‰ 인사와 전체 LLM λͺ¨λ“œ μ§„μž…
892
  log_and_render("ν•„μš”ν•˜μ‹€ λ•Œ μ–Έμ œλ“ μ§€ 또 μ°Ύμ•„μ£Όμ„Έμš”! ✈️",
893
  sender="bot", chat_container=chat_container,
894
+ key="goodbye")
895
  to_llm_mode()
896
 
897
  # ───────────────────────────────────── intent λͺ¨λ“œ
 
1240
  st.session_state[step_key] = "package_end"
1241
  show_llm_inline() # ν”Œλž˜κ·Έλ§Œ ON (rerun μ—†μŒ)
1242
 
1243
+ # βœ… rerun 없이 같은 사이클에 인라인 LLM νŒ¨λ„μ„ λ°”λ‘œ ν‘œμ‹œ
1244
+ render_llm_inline_if_open(chat_container)
1245
+ return
1246
+
1247
  # ────────────────── 7) μ’…λ£Œ 단계
1248
  elif st.session_state[step_key] == "package_end":
1249
+ # 인라인 LLM이 μ—΄λ € 있으면 μ•ˆλ‚΄ 버블을 반볡 좜λ ₯ν•˜μ§€ 말고
1250
+ # LLM νŒ¨λ„λ§Œ μœ μ§€ν•©λ‹ˆλ‹€.
1251
+ if st.session_state.get("llm_inline", False):
1252
+ render_llm_inline_if_open(chat_container)
1253
+ return
1254
+ # 인라인을 닫은 κ²½μš°μ—λ§Œ λ§ˆμ§€λ§‰ 인사와 전체 LLM λͺ¨λ“œ μ§„μž…
1255
  log_and_render("ν•„μš”ν•˜μ‹€ λ•Œ μ–Έμ œλ“ μ§€ 또 μ°Ύμ•„μ£Όμ„Έμš”! ✈️",
1256
  sender="bot", chat_container=chat_container,
1257
+ key="goodbye")
1258
  to_llm_mode()
1259
 
1260
  # ───────────────────────────────────── emotion λͺ¨λ“œ
 
1675
  st.session_state[step_key] = "package_end"
1676
  show_llm_inline() # ν”Œλž˜κ·Έλ§Œ ON (rerun μ—†μŒ)
1677
 
1678
+ # βœ… rerun 없이 같은 사이클에 인라인 LLM νŒ¨λ„μ„ λ°”λ‘œ ν‘œμ‹œ
1679
+ render_llm_inline_if_open(chat_container)
1680
+ return
1681
+
1682
  # ────────────────── 7) μ’…λ£Œ 단계
1683
  elif st.session_state[step_key] == "package_end":
1684
+ # 인라인 LLM이 μ—΄λ € 있으면 μ•ˆλ‚΄ 버블을 반볡 좜λ ₯ν•˜μ§€ 말고
1685
+ # LLM νŒ¨λ„λ§Œ μœ μ§€ν•©λ‹ˆλ‹€.
1686
+ if st.session_state.get("llm_inline", False):
1687
+ render_llm_inline_if_open(chat_container)
1688
+ return
1689
+ # 인라인을 닫은 κ²½μš°μ—λ§Œ λ§ˆμ§€λ§‰ 인사와 전체 LLM λͺ¨λ“œ μ§„μž…
1690
  log_and_render("ν•„μš”ν•˜μ‹€ λ•Œ μ–Έμ œλ“ μ§€ 또 μ°Ύμ•„μ£Όμ„Έμš”! ✈️",
1691
  sender="bot", chat_container=chat_container,
1692
+ key="goodbye")
1693
  to_llm_mode()
1694
 
1695
  # ───────────────────────────────────── unknown λͺ¨λ“œ