Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
|
@@ -180,11 +180,10 @@ def to_llm_mode():
|
|
| 180 |
st.rerun()
|
| 181 |
|
| 182 |
def _ensure_llm_state():
|
| 183 |
-
st.session_state.setdefault("llm_mode", False)
|
| 184 |
-
st.session_state.setdefault("llm_inline", False)
|
| 185 |
-
st.session_state.setdefault("llm_history", [])
|
| 186 |
st.session_state.setdefault("llm_intro_needed", False)
|
| 187 |
-
st.session_state.setdefault("
|
| 188 |
|
| 189 |
def show_llm_inline():
|
| 190 |
_ensure_llm_state()
|
|
@@ -251,22 +250,20 @@ def render_llm_followup(chat_container, inline=False):
|
|
| 251 |
|
| 252 |
st.markdown("### β LLM μ§λ¬Έ")
|
| 253 |
|
| 254 |
-
# κΈ°μ‘΄ λν λ λ
|
| 255 |
for m in st.session_state.get("llm_msgs", []):
|
| 256 |
with st.chat_message(m["role"]):
|
| 257 |
st.markdown(m["content"])
|
| 258 |
|
| 259 |
-
# β οΈ μμ ― keyλ 'llm_query'λ‘ μ¬μ© (μ΄ keyμ λν΄ μ΄λμλ μ§μ λμ
κΈμ§)
|
| 260 |
user_msg = st.chat_input("무μμ΄λ λ¬Όμ΄λ³΄μΈμ (μ’
λ£νλ €λ©΄ 'μ’
λ£' μ
λ ₯)", key="llm_query")
|
| 261 |
if not user_msg:
|
| 262 |
return
|
| 263 |
|
| 264 |
text = user_msg.strip()
|
| 265 |
|
| 266 |
-
# μ’
λ£ λͺ
λ Ή
|
| 267 |
if text in {"μ’
λ£", "quit", "exit"}:
|
| 268 |
st.session_state["llm_inline"] = False
|
| 269 |
-
st.session_state["
|
| 270 |
st.rerun()
|
| 271 |
return
|
| 272 |
|
|
@@ -274,16 +271,21 @@ def render_llm_followup(chat_container, inline=False):
|
|
| 274 |
st.session_state.setdefault("llm_msgs", [])
|
| 275 |
st.session_state["llm_msgs"].append({"role": "user", "content": text})
|
| 276 |
|
| 277 |
-
#
|
| 278 |
try:
|
| 279 |
-
bot =
|
| 280 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 281 |
bot = "β οΈ LLM μλ΅μ λ°μ§ λͺ»νμ΅λλ€. Ollama μλ²λ₯Ό νμΈν΄ μ£ΌμΈμ."
|
| 282 |
-
st.session_state["llm_msgs"].append({"role": "assistant", "content": bot})
|
| 283 |
|
| 284 |
-
|
| 285 |
st.rerun()
|
| 286 |
|
|
|
|
| 287 |
def render_llm_inline_if_open(chat_container):
|
| 288 |
"""llm_inline νλκ·Έκ° μΌμ Έ μμΌλ©΄ μΈλΌμΈ LLM ν¨λμ 그립λλ€."""
|
| 289 |
_ensure_llm_state()
|
|
@@ -515,7 +517,7 @@ def region_ui(travel_df, external_score_df, festival_df, weather_df, package_df,
|
|
| 515 |
|
| 516 |
# μΆμ² κ°λ₯ν μ¬νμ§κ° μλ€λ©΄ μ’
λ£ λ¨κ³λ‘ μ ν
|
| 517 |
if remaining.empty and sample_key not in st.session_state:
|
| 518 |
-
st.session_state[step_key] = "
|
| 519 |
st.rerun()
|
| 520 |
return
|
| 521 |
|
|
@@ -1393,7 +1395,7 @@ def emotion_ui(travel_df, external_score_df, festival_df, weather_df, package_df
|
|
| 1393 |
return
|
| 1394 |
|
| 1395 |
# ββββββββββββββββββ 3) μΆμ² μ’
λ£ λ¨κ³: λ μ΄μ μΆμ²ν μ¬νμ§κ° μμ λ
|
| 1396 |
-
elif st.session_state[step_key] == "
|
| 1397 |
with chat_container:
|
| 1398 |
# 3.1) λ©μμ§ μΆλ ₯
|
| 1399 |
log_and_render(
|
|
|
|
| 180 |
st.rerun()
|
| 181 |
|
| 182 |
def _ensure_llm_state():
|
| 183 |
+
st.session_state.setdefault("llm_mode", False)
|
| 184 |
+
st.session_state.setdefault("llm_inline", False)
|
|
|
|
| 185 |
st.session_state.setdefault("llm_intro_needed", False)
|
| 186 |
+
st.session_state.setdefault("llm_msgs", [])
|
| 187 |
|
| 188 |
def show_llm_inline():
|
| 189 |
_ensure_llm_state()
|
|
|
|
| 250 |
|
| 251 |
st.markdown("### β LLM μ§λ¬Έ")
|
| 252 |
|
|
|
|
| 253 |
for m in st.session_state.get("llm_msgs", []):
|
| 254 |
with st.chat_message(m["role"]):
|
| 255 |
st.markdown(m["content"])
|
| 256 |
|
|
|
|
| 257 |
user_msg = st.chat_input("무μμ΄λ λ¬Όμ΄λ³΄μΈμ (μ’
λ£νλ €λ©΄ 'μ’
λ£' μ
λ ₯)", key="llm_query")
|
| 258 |
if not user_msg:
|
| 259 |
return
|
| 260 |
|
| 261 |
text = user_msg.strip()
|
| 262 |
|
| 263 |
+
# μ’
λ£ λͺ
λ Ή
|
| 264 |
if text in {"μ’
λ£", "quit", "exit"}:
|
| 265 |
st.session_state["llm_inline"] = False
|
| 266 |
+
st.session_state["llm_mode"] = False # β llm_open λμ llm_mode μ¬μ©
|
| 267 |
st.rerun()
|
| 268 |
return
|
| 269 |
|
|
|
|
| 271 |
st.session_state.setdefault("llm_msgs", [])
|
| 272 |
st.session_state["llm_msgs"].append({"role": "user", "content": text})
|
| 273 |
|
| 274 |
+
# β
Ollamaλ‘ μ€μ νΈμΆ
|
| 275 |
try:
|
| 276 |
+
bot = _call_ollama_chat(
|
| 277 |
+
messages=st.session_state["llm_msgs"],
|
| 278 |
+
system_prompt=KOREAN_SYSTEM_PROMPT
|
| 279 |
+
)
|
| 280 |
+
if not bot:
|
| 281 |
+
bot = "β οΈ LLM μλ΅μ λ°μ§ λͺ»νμ΅λλ€. Ollama μλ²λ₯Ό νμΈν΄ μ£ΌμΈμ."
|
| 282 |
+
except Exception:
|
| 283 |
bot = "β οΈ LLM μλ΅μ λ°μ§ λͺ»νμ΅λλ€. Ollama μλ²λ₯Ό νμΈν΄ μ£ΌμΈμ."
|
|
|
|
| 284 |
|
| 285 |
+
st.session_state["llm_msgs"].append({"role": "assistant", "content": bot})
|
| 286 |
st.rerun()
|
| 287 |
|
| 288 |
+
|
| 289 |
def render_llm_inline_if_open(chat_container):
|
| 290 |
"""llm_inline νλκ·Έκ° μΌμ Έ μμΌλ©΄ μΈλΌμΈ LLM ν¨λμ 그립λλ€."""
|
| 291 |
_ensure_llm_state()
|
|
|
|
| 517 |
|
| 518 |
# μΆμ² κ°λ₯ν μ¬νμ§κ° μλ€λ©΄ μ’
λ£ λ¨κ³λ‘ μ ν
|
| 519 |
if remaining.empty and sample_key not in st.session_state:
|
| 520 |
+
st.session_state[step_key] = "recommend_end"
|
| 521 |
st.rerun()
|
| 522 |
return
|
| 523 |
|
|
|
|
| 1395 |
return
|
| 1396 |
|
| 1397 |
# ββββββββββββββββββ 3) μΆμ² μ’
λ£ λ¨κ³: λ μ΄μ μΆμ²ν μ¬νμ§κ° μμ λ
|
| 1398 |
+
elif st.session_state[step_key] == "recommend_places_end":
|
| 1399 |
with chat_container:
|
| 1400 |
# 3.1) λ©μμ§ μΆλ ₯
|
| 1401 |
log_and_render(
|