Spaces:
Sleeping
Sleeping
Delete app.py
Browse files
app.py
DELETED
|
@@ -1,123 +0,0 @@
|
|
| 1 |
-
import streamlit as st
|
| 2 |
-
import random
|
| 3 |
-
import time
|
| 4 |
-
|
| 5 |
-
# --- [์ค์ ๋ฐ ๊ณตํต ํจ์] ---
|
| 6 |
-
st.set_page_config(page_title="AI ๋ง์ ์ ", page_icon="๐ฎ", layout="wide")
|
| 7 |
-
|
| 8 |
-
# ๊ฐ๋จํ ํ๋ก ๋ฑ ๋ฐ์ดํฐ (๋์ค์ 78์ฅ ๋ค ๋ฃ์ด์ผ ํจ)
|
| 9 |
-
TAROT_DECK = [
|
| 10 |
-
"The Fool (0๋ฒ, ๋ฐ๋ณด)", "The Magician (1๋ฒ, ๋ง๋ฒ์ฌ)", "The High Priestess (2๋ฒ, ๊ณ ์ ์ฌ์ฌ์ )",
|
| 11 |
-
"The Empress (3๋ฒ, ์ฌํฉ์ )", "The Emperor (4๋ฒ, ํฉ์ )", "The Hierophant (5๋ฒ, ๊ตํฉ)",
|
| 12 |
-
"The Lovers (6๋ฒ, ์ฐ์ธ)", "The Chariot (7๋ฒ, ์ ์ฐจ)", "Strength (8๋ฒ, ํ)",
|
| 13 |
-
"The Hermit (9๋ฒ, ์๋์)", "Wheel of Fortune (10๋ฒ, ์ด๋ช
์ ์๋ ๋ฐํด)", "Justice (11๋ฒ, ์ ์)",
|
| 14 |
-
"The Hanged Man (12๋ฒ, ๋งค๋ฌ๋ฆฐ ๋จ์)", "Death (13๋ฒ, ์ฃฝ์)", "Temperance (14๋ฒ, ์ ์ )",
|
| 15 |
-
"The Devil (15๋ฒ, ์
๋ง)", "The Tower (16๋ฒ, ํ)", "The Star (17๋ฒ, ๋ณ)",
|
| 16 |
-
"The Moon (18๋ฒ, ๋ฌ)", "The Sun (19๋ฒ, ํ์)", "Judgement (20๋ฒ, ์ฌํ)",
|
| 17 |
-
"The World (21๋ฒ, ์ธ๊ณ)"
|
| 18 |
-
]
|
| 19 |
-
|
| 20 |
-
# --- [๋ฉ์ธ UI] ---
|
| 21 |
-
st.title("๐ฎ AI ๋ง์ ์ : ๋น์ ์ ์ด๋ช
์ ์ฝ์ด๋๋ฆฝ๋๋ค")
|
| 22 |
-
st.markdown("---")
|
| 23 |
-
|
| 24 |
-
# ์ฌ์ด๋๋ฐ: ๋ชจ๋ ์ ํ
|
| 25 |
-
mode = st.sidebar.radio(
|
| 26 |
-
"๋๊ตฌ์๊ฒ ์๋ดํ์๊ฒ ์ต๋๊น?",
|
| 27 |
-
["๐ ํ๋ก ๋ง์คํฐ (์์)", "๐ก ํ์์ง๋ฆฌ ๋๊ฐ (์ง๋ฆฌ)", "๐น ์ฉํ ์ ์์ด (์ ์ )"]
|
| 28 |
-
)
|
| 29 |
-
|
| 30 |
-
# ==========================================
|
| 31 |
-
# ๐ ํ๋ก ๋ง์คํฐ ๋ชจ๋ (์
๊ทธ๋ ์ด๋ ๋ฒ์ )
|
| 32 |
-
# ==========================================
|
| 33 |
-
if "ํ๋ก" in mode:
|
| 34 |
-
st.sidebar.info("๋น์ ์ ๋ฌด์์์ ์นด๋๋ก ์ฝ์ด๋
๋๋ค.")
|
| 35 |
-
icon = "๐"
|
| 36 |
-
persona_prompt = "๋น์ ์ ์ ๋น๋ก์ด ํ๋ก ๋ง์คํฐ์
๋๋ค. ์ฌ์ฉ์๊ฐ ๋ฝ์ ์นด๋์ ์์ง์ ๊ธฐ๋ฐ์ผ๋ก ๊ณผ๊ฑฐ, ํ์ฌ, ๋ฏธ๋ ํ๋ฆ์ ์์ ์ด๊ณ ๋ถ๋๋ฌ์ด ๋งํฌ๋ก ํด์ํด ์ฃผ์ธ์."
|
| 37 |
-
|
| 38 |
-
# --- [ํ๋ก ์ํ ๊ด๋ฆฌ ์ด๊ธฐํ] ---
|
| 39 |
-
# tarot_stage: 'input' (์
๋ ฅ๋จ๊ณ) -> 'picking' (๋ฝ๊ธฐ๋จ๊ณ) -> 'reading' (ํด์๋จ๊ณ)
|
| 40 |
-
if "tarot_stage" not in st.session_state:
|
| 41 |
-
st.session_state.tarot_stage = "input"
|
| 42 |
-
if "user_query" not in st.session_state:
|
| 43 |
-
st.session_state.user_query = ""
|
| 44 |
-
if "picked_cards" not in st.session_state:
|
| 45 |
-
st.session_state.picked_cards = []
|
| 46 |
-
|
| 47 |
-
# --- [1๋จ๊ณ: ๊ณ ๋ฏผ ์
๋ ฅ] ---
|
| 48 |
-
if st.session_state.tarot_stage == "input":
|
| 49 |
-
st.subheader("์ด๋ค ๊ณ ๋ฏผ์ด ๋น์ ์ ์ด๊ณณ์ผ๋ก ์ด๋์๋์?")
|
| 50 |
-
query = st.text_input("๊ณ ๋ฏผ์ ์
๋ ฅํ๊ณ ์ํฐ๋ฅผ ๋๋ฅด์ธ์...", key="query_input")
|
| 51 |
-
|
| 52 |
-
if query:
|
| 53 |
-
st.session_state.user_query = query
|
| 54 |
-
st.session_state.tarot_stage = "picking" # ๋ค์ ๋จ๊ณ๋ก ์ด๋
|
| 55 |
-
st.rerun() # ํ๋ฉด ์๋ก๊ณ ์นจ
|
| 56 |
-
|
| 57 |
-
# --- [2๋จ๊ณ: ์นด๋ ๋ฝ๊ธฐ (์ธํฐ๋์
)] ---
|
| 58 |
-
elif st.session_state.tarot_stage == "picking":
|
| 59 |
-
st.subheader("๋ง์์ ์ง์คํ๊ณ ์ด๋ช
์ ์นด๋๋ฅผ ์ ํํ์ธ์.")
|
| 60 |
-
st.write(f"๋น์ ์ ๊ณ ๋ฏผ: **'{st.session_state.user_query}'**")
|
| 61 |
-
st.markdown("---")
|
| 62 |
-
|
| 63 |
-
# ์นด๋ ๋ท๋ฉด ์ฐ์ถ (์ง๊ธ์ ๋ฒํผ์ผ๋ก ๋์ฒด)
|
| 64 |
-
st.write("โผ ์๋ ๋ฒํผ์ ๋๋ฌ ์ ์คํ๊ฒ 3์ฅ์ ๋ฝ์ผ์ธ์ โผ")
|
| 65 |
-
|
| 66 |
-
# ์ค์ ๋ก๋ ๋ฒํผ ํ๋๊ฐ 3์ฅ์ ๋ฝ๋ ๋์์ ์ํํ๊ฒ ํจ (UX์ ์ด๊ฒ ๊น๋)
|
| 67 |
-
if st.button("๐ด ์ด๋ช
์ ์นด๋ 3์ฅ ๋ฝ๊ธฐ (ํด๋ฆญ)", type="primary", use_container_width=True):
|
| 68 |
-
# ๋ฐฑ์๋์์ ๋๋ค์ผ๋ก 3์ฅ ์ ํ
|
| 69 |
-
picked = random.sample(TAROT_DECK, 3)
|
| 70 |
-
st.session_state.picked_cards = picked
|
| 71 |
-
st.session_state.tarot_stage = "reading" # ๋ค์ ๋จ๊ณ๋ก ์ด๋
|
| 72 |
-
st.rerun()
|
| 73 |
-
|
| 74 |
-
# --- [3๋จ๊ณ: ๊ฒฐ๊ณผ ํด์ (๋ฆฌ๋ฉ)] ---
|
| 75 |
-
elif st.session_state.tarot_stage == "reading":
|
| 76 |
-
st.subheader("์ด๋ช
์ ์๋ ๋ฐํด๊ฐ ๋ณด์ฌ์ฃผ๋ ๋ต์
๋๋ค.")
|
| 77 |
-
st.write(f"๊ณ ๋ฏผ: '{st.session_state.user_query}'")
|
| 78 |
-
st.markdown("---")
|
| 79 |
-
|
| 80 |
-
# ๋ฝํ ์นด๋ ๋ณด์ฌ์ฃผ๊ธฐ (3์ฅ ๋ฐฐ์ด)
|
| 81 |
-
col1, col2, col3 = st.columns(3)
|
| 82 |
-
with col1:
|
| 83 |
-
st.info("๊ณผ๊ฑฐ (Past)")
|
| 84 |
-
# ๋์ค์ ์ฌ๊ธฐ์ ์ค์ ์นด๋ ์ด๋ฏธ์ง๊ฐ ๋ค์ด๊ฐ์ผ ํจ
|
| 85 |
-
st.image("https://placehold.co/200x300/png?text=Card+1", caption=st.session_state.picked_cards[0])
|
| 86 |
-
with col2:
|
| 87 |
-
st.success("ํ์ฌ (Present)")
|
| 88 |
-
st.image("https://placehold.co/200x300/png?text=Card+2", caption=st.session_state.picked_cards[1])
|
| 89 |
-
with col3:
|
| 90 |
-
st.warning("๋ฏธ๋ (Future)")
|
| 91 |
-
st.image("https://placehold.co/200x300/png?text=Card+3", caption=st.session_state.picked_cards[2])
|
| 92 |
-
|
| 93 |
-
st.markdown("---")
|
| 94 |
-
|
| 95 |
-
# AI ํด์ ์์ญ
|
| 96 |
-
with st.spinner(f"{icon} ๋ง์คํฐ๊ฐ ์นด๋์ ์์ง์ ์ฝ๊ณ ์์ต๋๋ค..."):
|
| 97 |
-
# TODO: ์ค์ LLM์ ๋ณด๋ผ ํ๋กฌํํธ ๊ตฌ์ฑ
|
| 98 |
-
# ์: f"{persona_prompt}\n๊ณ ๋ฏผ: {st.session_state.user_query}\n๋ฝ์ ์นด๋: {st.session_state.picked_cards}..."
|
| 99 |
-
|
| 100 |
-
time.sleep(3) # ์ฐ์ถ์ฉ ๋๋ ์ด
|
| 101 |
-
|
| 102 |
-
# ๊ฐ์ง ์๋ต
|
| 103 |
-
fake_response = f"""
|
| 104 |
-
๋น์ ์ด ๋ฝ์ ์ฒซ ๋ฒ์งธ ์นด๋ **{st.session_state.picked_cards[0]}**์ ๋น์ ์ ๊ณผ๊ฑฐ์...
|
| 105 |
-
๊ทธ๋ฆฌ๊ณ ํ์ฌ๋ฅผ ๋ํ๋ด๋ **{st.session_state.picked_cards[1]}** ์นด๋๋ ์ง๊ธ ๋น์ ์ด...
|
| 106 |
-
๋ง์ง๋ง์ผ๋ก ๋ฏธ๋์ **{st.session_state.picked_cards[2]}** ์นด๋๋ ์กฐ๋ง๊ฐ ๋ค๊ฐ์ฌ...
|
| 107 |
-
|
| 108 |
-
ํ์, ์ ์ฒด์ ์ผ๋ก ๋ณด๋ ์ง๊ธ์ ์ ์ ๋ฉ์ถฐ์ ๋ด๋ฉด์ ๋ค์ฌ๋ค๋ณผ ์๊ธฐ๋ก๊ตฐ์.
|
| 109 |
-
"""
|
| 110 |
-
st.write(fake_response)
|
| 111 |
-
|
| 112 |
-
# ๋ค์ํ๊ธฐ ๋ฒํผ
|
| 113 |
-
if st.button("๐ ๋ค๋ฅธ ๊ณ ๋ฏผ ์๋ดํ๊ธฐ"):
|
| 114 |
-
st.session_state.tarot_stage = "input"
|
| 115 |
-
st.session_state.user_query = ""
|
| 116 |
-
st.session_state.picked_cards = []
|
| 117 |
-
st.rerun()
|
| 118 |
-
|
| 119 |
-
# ==========================================
|
| 120 |
-
# ๋๋จธ์ง ๋ชจ๋ (ํ์, ์ ์์ด) - ์ผ๋จ ์จ๊น ์ฒ๋ฆฌ
|
| 121 |
-
# ==========================================
|
| 122 |
-
else:
|
| 123 |
-
st.warning("์ง๊ธ์ ํ๋ก ๋ชจ๋ ๊ฐ๋ฐ ์ค์
๋๋ค! ์ฌ์ด๋๋ฐ์์ 'ํ๋ก ๋ง์คํฐ'๋ฅผ ์ ํํด์ฃผ์ธ์.")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|