Spaces:
Sleeping
Sleeping
Update src/streamlit_app.py
Browse files- src/streamlit_app.py +21 -57
src/streamlit_app.py
CHANGED
|
@@ -2,70 +2,17 @@
|
|
| 2 |
import re
|
| 3 |
import streamlit as st
|
| 4 |
|
| 5 |
-
|
| 6 |
-
## assitant μλ°ν μ΄λ―Έμ§ κ²½λ‘
|
| 7 |
assistant_icon_path = "https://huggingface.co/spaces/randmimc/aitom/resolve/main/chat_icon/assistant.ico"
|
| 8 |
|
| 9 |
-
#
|
| 10 |
if "approval_state" not in st.session_state:
|
| 11 |
st.session_state.approval_state = "require"
|
| 12 |
if "messages" not in st.session_state:
|
| 13 |
st.session_state.messages = []
|
| 14 |
|
| 15 |
-
st.markdown("""
|
| 16 |
-
<style>
|
| 17 |
-
.chat-container { /* μ±ν
λ©μμ§λ₯Ό κ°μΈλ 컨ν
μ΄λλ₯Ό μ€λͺ
ν©λλ€. */
|
| 18 |
-
display: flex; /* μ±ν
μμ(μλ°ν, λ§νμ λ±)μ κ°λ‘ λ°©ν₯μΌλ‘ μ λ ¬ν©λλ€. */
|
| 19 |
-
margin-bottom: 10px; /*λ©μΈμ§κ° κ°κ²©μ 10pxλ‘ ν©λλ€. */
|
| 20 |
-
}
|
| 21 |
-
.user-container {
|
| 22 |
-
justify-content: flex-end; /* μ¬μ©μμ λ©μμ§λ₯Ό μ°μΈ‘μ λ ¬ν©λλ€.*/
|
| 23 |
-
}
|
| 24 |
-
.assistant-container {
|
| 25 |
-
justify-content: flex-start; /* μ΄μμ€ν΄μ€ λ©μμ§λ₯Ό μ’μΈ‘ μ λ ¬ν©λλ€.*/
|
| 26 |
-
flex-direction: row; /* Avatarμ Bubbleμ μνμΌλ‘ μ λ ¬ν©λλ€. */
|
| 27 |
-
}
|
| 28 |
-
.chat-bubble { /* λ§νμ μ€νμΌμ μ μν©λλ€. */
|
| 29 |
-
padding: 10px; /* λ§νμ μμ λ©μμ§κ° κ°κ²©μ 10pxλ‘ ν©λλ€. */
|
| 30 |
-
border-radius: 10px; /*λ§νμ μ λͺ¨μ리λ₯Ό λκΈκ² λ§λλλ€.*/
|
| 31 |
-
max-width: 70%; /* νμ€μ΄ λ무 κΈΈμ§ μκ² μ νν©λλ€. */
|
| 32 |
-
word-wrap: break-word; /* ν
μ€νΈλ₯Ό λ¨μ΄ λ¨μλ‘ μ€λ΄λ¦Όν©λλ€. */
|
| 33 |
-
white-space: pre-wrap; /* ν
μ€νΈλ₯Ό λ¨μ΄ λ¨μλ‘ μ€λ΄λ¦Όν©λλ€. */
|
| 34 |
-
}
|
| 35 |
-
.user-bubble { /* μ¬μ©μ λ©μμ§ μ€νμΌμ μ μν©λλ€. */
|
| 36 |
-
font-size: 14px; /* ν°νΈ μ¬μ΄μ¦λ₯Ό μ§μ ν©λλ€. */
|
| 37 |
-
color: #333; /* ν°νΈ μμμ μ§μ ν©λλ€. */
|
| 38 |
-
background-color: #e5e5e5; /* λ§νμ λ°°κ²½μμ μ§μ ν©λλ€. */
|
| 39 |
-
}
|
| 40 |
-
.assistant-bubble {
|
| 41 |
-
font-size: 14px; /* ν°νΈ μ¬μ΄μ¦λ₯Ό μ§μ ν©λλ€. */
|
| 42 |
-
color: #333; /* ν°νΈ μμμ μ§μ ν©λλ€. */
|
| 43 |
-
text-align: left; /* λ©μΈμ§λ₯Ό μΌμͺ½ μ λ ¬ ν©λλ€. */
|
| 44 |
-
background-color: #feeddf; /* λ§νμ λ°°κ²½μμ μ§μ ν©λλ€. */
|
| 45 |
-
}
|
| 46 |
-
.avatar { /* νλ‘ν μ΄λ―Έμ§(μλ°ν) μ€νμΌμ μ§μ ν©λλ€. */
|
| 47 |
-
width: 30px; /* μλ°ν νμ μ§μ ν©λλ€. */
|
| 48 |
-
height: 30px; /* μλ°ν λμ μ§μ ν©λλ€. */
|
| 49 |
-
border-radius: 50%; /* μλ°νλ₯Ό μκ²½μΌλ‘ λ§λλλ€. */
|
| 50 |
-
margin-right: 10px; /*λ©μΈμ§κ° κ°κ²©μ 10pxλ‘ ν©λλ€. */
|
| 51 |
-
}
|
| 52 |
-
</style>
|
| 53 |
-
""", unsafe_allow_html=True)
|
| 54 |
-
|
| 55 |
-
def user_message_style(question):
|
| 56 |
-
return f"""<div class="chat-container user-container">
|
| 57 |
-
<div class="chat-bubble user-bubble">{question}</div>
|
| 58 |
-
</div>"""
|
| 59 |
-
|
| 60 |
-
def assistant_message_style(assistant_icon_path, answer):
|
| 61 |
-
return f"""<div class="chat-container assistant-container">
|
| 62 |
-
<img src="{assistant_icon_path}" class="avatar">
|
| 63 |
-
<div class="chat-bubble assistant-bubble">{answer}</div>
|
| 64 |
-
</div>"""
|
| 65 |
-
|
| 66 |
# λλ‘λ€μ΄ λ©λ΄
|
| 67 |
-
st.
|
| 68 |
-
st.subheader("μμ½ν κΈ°μ¬ μ ν")
|
| 69 |
|
| 70 |
options = [
|
| 71 |
"",
|
|
@@ -74,4 +21,21 @@ options = [
|
|
| 74 |
"μ€λ μ΄λ¦° G7 μ μνμμμλ κΈλ‘λ² κ²½μ ν볡과 κΈ°ν λ³ν λμμ μν λ
Όμκ° μ΄μ΄μ‘λ€.",
|
| 75 |
"νκ΅μνμ κΈ°μ€κΈλ¦¬λ₯Ό λκ²°νλ©΄μλ λ¬Όκ° μμΉμ λν μ°λ €λ₯Ό λνλλ€."
|
| 76 |
]
|
| 77 |
-
selected_text = st.selectbox("
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 2 |
import re
|
| 3 |
import streamlit as st
|
| 4 |
|
| 5 |
+
# assitant μλ°ν μ΄λ―Έμ§ κ²½λ‘
|
|
|
|
| 6 |
assistant_icon_path = "https://huggingface.co/spaces/randmimc/aitom/resolve/main/chat_icon/assistant.ico"
|
| 7 |
|
| 8 |
+
# μΈμ
μνμμ approval_state λ° messages μ΄κΈ°ν
|
| 9 |
if "approval_state" not in st.session_state:
|
| 10 |
st.session_state.approval_state = "require"
|
| 11 |
if "messages" not in st.session_state:
|
| 12 |
st.session_state.messages = []
|
| 13 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 14 |
# λλ‘λ€μ΄ λ©λ΄
|
| 15 |
+
st.subheader("λ°μ΄ν° μ ν")
|
|
|
|
| 16 |
|
| 17 |
options = [
|
| 18 |
"",
|
|
|
|
| 21 |
"μ€λ μ΄λ¦° G7 μ μνμμμλ κΈλ‘λ² κ²½μ ν볡과 κΈ°ν λ³ν λμμ μν λ
Όμκ° μ΄μ΄μ‘λ€.",
|
| 22 |
"νκ΅μνμ κΈ°μ€κΈλ¦¬λ₯Ό λκ²°νλ©΄μλ λ¬Όκ° μμΉμ λν μ°λ €λ₯Ό λνλλ€."
|
| 23 |
]
|
| 24 |
+
selected_text = st.selectbox("λ°μ΄ν°λ₯Ό μ ννμΈμ", options)
|
| 25 |
+
|
| 26 |
+
# λ°μ΄ν° μν λ° μ‘°μΉ μν© νμ ν¨μ
|
| 27 |
+
def display_status_and_action(text):
|
| 28 |
+
if text == "":
|
| 29 |
+
st.info("λ¨Όμ λ°μ΄ν°λ₯Ό μ νν΄μ£ΌμΈμ.")
|
| 30 |
+
elif text == "yes":
|
| 31 |
+
st.success("β
λ°μ΄ν° μν: μΉμΈλ¨")
|
| 32 |
+
st.markdown("**μ‘°μΉ μ¬ν:** μΆκ° μ‘°μΉλ νμνμ§ μμ΅λλ€.")
|
| 33 |
+
else:
|
| 34 |
+
st.warning("β οΈ λ°μ΄ν° μν: μΉμΈ λκΈ° μ€")
|
| 35 |
+
st.markdown("**μ‘°μΉ μ¬ν:** μλ λ²νΌμ λλ¬ μΉμΈ μμ²μ μ§ννμΈμ.")
|
| 36 |
+
if st.button("μΉμΈ μμ²"):
|
| 37 |
+
st.session_state.approval_state = "requested"
|
| 38 |
+
st.success("μΉμΈ μμ²μ΄ μ μΆλμμ΅λλ€.")
|
| 39 |
+
|
| 40 |
+
# μν λ° μ‘°μΉ μΆλ ₯
|
| 41 |
+
display_status_and_action(selected_text)
|