Update app.py
Browse files
app.py
CHANGED
@@ -57,11 +57,35 @@ SOCRATIC_PROMPT = """\
|
|
57 |
|
58 |
ADVICE_PROMPT = """\
|
59 |
๋น์ ์ ์ ์ ์ํ๊ณผ ์ ๋ฌธ์์ด๋ฉฐ Socratic CBT ๊ธฐ๋ฒ์ ์ฌ์ฉํ๋ ์ฌ๋ฆฌ์๋ด ์ ๋ฌธ๊ฐ์
๋๋ค.
|
60 |
-
์๋ ํํธ(๋ํ ์์ฝ)๋ฅผ ๋ฐํ์ผ๋ก, ์ฌ์ฉ์ ๋ง์ถคํ์ผ๋ก ๊ตฌ์ฒด์ ์ด๊ณ ๊ณต๊ฐ ์ด๋ฆฐ ์กฐ์ธ์ ํ๊ตญ์ด๋ก ์์ฑํ์ธ์.
|
61 |
|
62 |
-
|
63 |
-
|
64 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
65 |
|
66 |
ํํธ:
|
67 |
{hints}
|
@@ -164,37 +188,35 @@ def predict(user_input: str, state: dict):
|
|
164 |
|
165 |
# ============== 4) Gradio UI ==============
|
166 |
def gradio_predict(user_input, chat_state):
|
167 |
-
"""Gradio callback"""
|
168 |
new_history, new_state = predict(user_input, chat_state)
|
169 |
|
170 |
-
#
|
171 |
display_history = []
|
172 |
for (role, txt) in new_history:
|
173 |
if role == "User":
|
174 |
-
display_history.append([txt, ""])
|
175 |
else:
|
176 |
-
if len(display_history)==0:
|
177 |
display_history.append(["", txt])
|
178 |
else:
|
179 |
-
display_history[-1][1] = txt
|
180 |
|
181 |
-
|
|
|
182 |
|
183 |
def create_app():
|
184 |
with gr.Blocks() as demo:
|
185 |
-
gr.
|
186 |
-
|
187 |
-
|
188 |
-
|
189 |
-
|
190 |
-
|
191 |
-
|
192 |
-
|
193 |
-
|
194 |
-
|
195 |
-
|
196 |
-
# submit
|
197 |
-
txt.submit(fn=gradio_predict, inputs=[txt, chat_state], outputs=[chatbot, chat_state])
|
198 |
return demo
|
199 |
|
200 |
app = create_app()
|
|
|
57 |
|
58 |
ADVICE_PROMPT = """\
|
59 |
๋น์ ์ ์ ์ ์ํ๊ณผ ์ ๋ฌธ์์ด๋ฉฐ Socratic CBT ๊ธฐ๋ฒ์ ์ฌ์ฉํ๋ ์ฌ๋ฆฌ์๋ด ์ ๋ฌธ๊ฐ์
๋๋ค.
|
|
|
60 |
|
61 |
+
์๋ ํํธ(๋ํ ์์ฝ)์ ํจ๊ป, ๋ค์์ ์ ์๋ 5๊ฐ์ง CBT ๊ธฐ๋ฒ์ ์ ์ ํ ์ฐธ๊ณ ํ์ฌ,
|
62 |
+
์ฌ์ฉ์ ๋ง์ถคํ์ผ๋ก ๊ตฌ์ฒด์ ์ด๊ณ ๊ณต๊ฐ ์ด๋ฆฐ ์กฐ์ธ์ ํ๊ตญ์ด๋ก ์์ฑํ์ธ์:
|
63 |
+
|
64 |
+
(1) ์๋ฉด ์ ํ ์๋ฒ (Sleep Restriction):
|
65 |
+
"์๋ฉด ์ ํ ์๋ฒ์ ์นจ๋์ ๋จธ๋ฌด๋ ์๊ฐ์ ์๋์ ์ผ๋ก ์ค์ฌ, ์นจ๋์ ์๋ฉด ์ฌ์ด์ ์ฌ๋ฐ๋ฅธ ์ฐ๊ฒฐ๊ณ ๋ฆฌ๋ฅผ ์ฌ๊ตฌ์ถํ๋ ๋ฐฉ๋ฒ์
๋๋ค.
|
66 |
+
์๋ฅผ ๋ค์ด, ์นจ๋์ 10์๊ฐ ๋จธ๋ฌผ์ง๋ง ์ค์ ์๋ฉด ์๊ฐ์ด 5์๊ฐ์ธ ๊ฒฝ์ฐ, ์ฒ์์๋ 5์๊ฐ๋ง ์นจ๋์์ ์๊ณ ์ ์ฐจ ์๊ฐ์ ๋๋ ค๊ฐ๋ฉฐ
|
67 |
+
'์นจ๋๋ ์๋ฉด์ ์ํ ์ฅ์'๋ก ์ธ์ํ๋๋ก ๋์ต๋๋ค."
|
68 |
+
|
69 |
+
(2) ์๊ทน ์กฐ์ ์๋ฒ (Stimulus Control):
|
70 |
+
"์๊ทน ์กฐ์ ์๋ฒ์ ์นจ๋์ ์๋ฉด์ ํ๊ฒฝ์ ์ฌ์ ๋ฆฝํ๋ฉฐ, ์นจ๋๋ฅผ ์ค์ง ์๋ฉด๋ง์ ์ํ ์ฅ์๋ก ์ธ์ํ๊ฒ ๋ง๋๋ ์น๋ฃ๋ฒ์
๋๋ค.
|
71 |
+
์๋ฅผ ๋ค์ด, ์นจ๋์ ๋์ ์์ ๋๋ ์ฆ์ ์ ๋ค์ง ๋ชปํ๋๋ผ๋, ์นจ๋์์๋ ์ค์ง ์๋ฉด์ ์ทจํ๋ ์ต๊ด์ ๊ธฐ๋ฅด๋ ๊ฒ์ด ํต์ฌ์
๋๋ค."
|
72 |
+
|
73 |
+
(3) ์๋ฉด ์์ ๊ต์ก (Sleep Hygiene):
|
74 |
+
"์๋ฉด ์์ ๊ต์ก์ ๊ฑด๊ฐํ ์๋ฉด์ ์ํด ์ํ ์ต๊ด์ ๊ฐ์ ํ๋ ๋ฐฉ๋ฒ์
๋๋ค.
|
75 |
+
์นดํ์ธ ์ญ์ทจ๋ฅผ ์ค์ด๊ฑฐ๋ ๋ฆ์ ์๊ฐ์ ์ ์๊ธฐ๊ธฐ ์ฌ์ฉยท๋ฐ์ ์กฐ๋ช
๋ฑ์ ํผํ๊ณ , ๋ฎ์๋ ๊ฐ๋ฒผ์ด ์ด๋์ ํด๋๋ ๋ฑ์ ์ต๊ด์ ํฌํจํฉ๋๋ค."
|
76 |
+
|
77 |
+
(4) ์ด์ ๊ธฐ๋ฒ (Relaxation Techniques):
|
78 |
+
"์ด์ ๊ธฐ๋ฒ์ ์ฌํธํก, ์ ์ง์ ๊ทผ์ก์ด์, ๋ช
์ ๊ฐ์ ๋ฐฉ๋ฒ์ ํตํด ์์ฐ์ค๋ฌ์ด ์๋ฉด์ ์ ๋ํ๋ ๋ฐฉ๋ฒ์
๋๋ค.
|
79 |
+
๋ชธ์ ์ค์บํ๊ณ , ๊ฑฐ๋ถํ ์คํธ๋ ์นญ์ ํ๊ณ , ๊ทผ์ก ์ด์์ ์ฐ์ตํ๋ฉฐ ๊ธด์ฅ์ ๋ฎ์ถ๋ ๊ฒ์ด ์ฃผ๋ ๋ชฉํ์
๋๋ค."
|
80 |
+
|
81 |
+
(5) ์ธ์ง ์ฌ๊ตฌ์ฑ (Cognitive Restructuring):
|
82 |
+
"์ธ์ง ์ฌ๊ตฌ์ฑ์ โ์ฐ๋ฆฌ๊ฐ ์ํฉ์ ์ด๋ป๊ฒ ๋ฐ๋ผ๋ณด๋๋์ ๋ฐ๋ผ ๋ชธ์ ๋ฐ์๋ ๋ฌ๋ผ์ง ์ ์๋คโ๋ ๊ธ์ ์ ๊ด์ ์ผ๋ก ์ ํ์ํค๋ฉฐ,
|
83 |
+
๊ฑฑ์ ์ด๋ ๋ถ์, ๋ถ์ ์ ์ธ ์ฌ๊ณ ํจํด์ ์ ๊ฒยท์กฐ์ ํ๋ ๊ธฐ๋ฒ์
๋๋ค. ์ด๋ฅผ ํตํด ์ฌ์ฉ์์ ๊ฑฑ์ ์ ์ํํ๊ณ
|
84 |
+
์๊ธฐํจ๋ฅ๊ฐ์ ๋์ด๋๋ก ๋์ต๋๋ค."
|
85 |
+
|
86 |
+
์๋ ์ฌํญ์ ๊ผญ ๋ฐ์ํด ์ฃผ์ธ์:
|
87 |
+
- ๋ถ์์ ์ํํ๊ธฐ ์ํ ์ ๊ธฐ๋ฒ๋ค์ ์์ฐ์ค๋ฝ๊ฒ ๋
น์ด๋, ์ฌ์ฉ์์ ํ์ฌ ์ํฉ(ํํธ์ ๋ด๊ธด ๊ณ ๋ฏผ)๊ณผ ์ฐ๊ฒฐํด ์ด์ผ๊ธฐํ์ธ์.
|
88 |
+
- ๋๋ฌด ๋ฑ๋ฑํ์ง ์๊ฒ, ๋ถ๋๋ฝ๊ณ ์น์ ํ ๋งํฌ๋ฅผ ์ฌ์ฉํ์ธ์.
|
89 |
|
90 |
ํํธ:
|
91 |
{hints}
|
|
|
188 |
|
189 |
# ============== 4) Gradio UI ==============
|
190 |
def gradio_predict(user_input, chat_state):
|
|
|
191 |
new_history, new_state = predict(user_input, chat_state)
|
192 |
|
193 |
+
# display_history: list of [์ฌ์ฉ์๋ฌธ์์ด, ์ฑ๋ด๋ฌธ์์ด]
|
194 |
display_history = []
|
195 |
for (role, txt) in new_history:
|
196 |
if role == "User":
|
197 |
+
display_history.append([txt, ""])
|
198 |
else:
|
199 |
+
if len(display_history) == 0:
|
200 |
display_history.append(["", txt])
|
201 |
else:
|
202 |
+
display_history[-1][1] = txt
|
203 |
|
204 |
+
# ์ธ ๋ฒ์งธ ๊ฐ์ผ๋ก "" ๋ฐํํ๋ฉด, textbox๊ฐ ์๋์ผ๋ก ๋น์์ง
|
205 |
+
return display_history, new_state, ""
|
206 |
|
207 |
def create_app():
|
208 |
with gr.Blocks() as demo:
|
209 |
+
chatbot = gr.Chatbot()
|
210 |
+
chat_state = gr.State({"history": [], "stage": "EMPATHY", "turn": 0, "hints": []})
|
211 |
+
txt = gr.Textbox(show_label=False, placeholder="๋ฉ์์ง๋ฅผ ์
๋ ฅํ์ธ์")
|
212 |
+
|
213 |
+
# outputs์ txt๋ฅผ ์ถ๊ฐ + ์ฝ๋ฐฑ์์ ์ธ ๋ฒ์งธ ๊ฐ์ ""๋ก ๋ฆฌํด
|
214 |
+
txt.submit(
|
215 |
+
fn=gradio_predict,
|
216 |
+
inputs=[txt, chat_state],
|
217 |
+
outputs=[chatbot, chat_state, txt]
|
218 |
+
)
|
219 |
+
|
|
|
|
|
220 |
return demo
|
221 |
|
222 |
app = create_app()
|