benjamin5607 commited on
Commit
ac1812d
ยท
verified ยท
1 Parent(s): ea0f5b7

Delete app.py

Browse files
Files changed (1) hide show
  1. app.py +0 -123
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("์ง€๊ธˆ์€ ํƒ€๋กœ ๋ชจ๋“œ ๊ฐœ๋ฐœ ์ค‘์ž…๋‹ˆ๋‹ค! ์‚ฌ์ด๋“œ๋ฐ”์—์„œ 'ํƒ€๋กœ ๋งˆ์Šคํ„ฐ'๋ฅผ ์„ ํƒํ•ด์ฃผ์„ธ์š”.")