randmimc commited on
Commit
55218eb
ยท
verified ยท
1 Parent(s): a8c8bb5

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +59 -16
app.py CHANGED
@@ -1,3 +1,4 @@
 
1
  import streamlit as st
2
 
3
  assistant_icon_path = "chat_icon/assistant.ico"
@@ -9,34 +10,76 @@ if "approval_state" not in st.session_state:
9
  if "messages" not in st.session_state:
10
  st.session_state.messages = []
11
 
12
- # Display chat messages from history on app rerun
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
13
  for message in st.session_state.messages:
14
- col1, col2 = st.columns([1, 1]) # ๋‘ ๊ฐœ์˜ ๋™์ผํ•œ ํฌ๊ธฐ์˜ ์—ด ์ƒ์„ฑ
15
-
16
  if message["role"] == "user":
17
- with col1: # ์™ผ์ชฝ ์—ด์— ์‚ฌ์šฉ์ž ๋ฉ”์‹œ์ง€ ํ‘œ์‹œ
18
- with st.chat_message("user", avatar=user_icon_path):
19
- st.markdown(message["content"])
 
 
 
 
20
  else:
21
- with col2: # ์˜ค๋ฅธ์ชฝ ์—ด์— AI ๋ฉ”์‹œ์ง€ ํ‘œ์‹œ
22
- with st.chat_message("assistant", avatar=assistant_icon_path):
23
- st.markdown(message["content"])
 
 
 
 
24
 
25
  # Start with an assistant message
26
  if not st.session_state.messages:
27
- st.session_state.messages.append({"role": "assistant", "content": "type yes to start"})
 
28
 
29
  if prompt := st.chat_input():
30
  if st.session_state.approval_state == "require":
31
- st.session_state.messages.append({"role": "user", "content": prompt})
32
  if prompt.lower() == "yes":
33
  st.session_state.approval_state = "approved"
34
- st.session_state.messages.append({"role": "assistant", "content": "token approved now you can use ai-tom chatbot"})
35
  else:
36
- st.session_state.messages.append({"role": "assistant", "content": "wrong token try again"})
37
  elif st.session_state.approval_state == "approved":
38
- st.session_state.messages.append({"role": "user", "content": prompt})
39
  response = f"Echo: {prompt}"
40
- st.session_state.messages.append({"role": "assistant", "content": response})
41
 
42
- st.rerun() # ํ™”๋ฉด ๊ฐฑ์‹ 
 
1
+ import random
2
  import streamlit as st
3
 
4
  assistant_icon_path = "chat_icon/assistant.ico"
 
10
  if "messages" not in st.session_state:
11
  st.session_state.messages = []
12
 
13
+ # Custom CSS to align messages
14
+ st.markdown("""
15
+ <style>
16
+ .chat-container {
17
+ display: flex;
18
+ align-items: center;
19
+ margin-bottom: 10px;
20
+ }
21
+ .user-container {
22
+ justify-content: flex-start;
23
+ }
24
+ .assistant-container {
25
+ justify-content: flex-end;
26
+ }
27
+ .chat-bubble {
28
+ padding: 10px;
29
+ border-radius: 10px;
30
+ max-width: 70%;
31
+ }
32
+ .user-bubble {
33
+ background-color: #d1e7dd;
34
+ text-align: left;
35
+ }
36
+ .assistant-bubble {
37
+ background-color: #f8d7da;
38
+ text-align: right;
39
+ }
40
+ .avatar {
41
+ width: 40px;
42
+ height: 40px;
43
+ border-radius: 50%;
44
+ }
45
+ </style>
46
+ """, unsafe_allow_html=True)
47
+
48
+ # Display chat messages from history
49
  for message in st.session_state.messages:
 
 
50
  if message["role"] == "user":
51
+ st.markdown(
52
+ f"""
53
+ <div class="chat-container user-container">
54
+ <img src="{user_icon_path}" class="avatar">
55
+ <div class="chat-bubble user-bubble">{message["content"]}</div>
56
+ </div>
57
+ """, unsafe_allow_html=True)
58
  else:
59
+ st.markdown(
60
+ f"""
61
+ <div class="chat-container assistant-container">
62
+ <div class="chat-bubble assistant-bubble">{message["content"]}</div>
63
+ <img src="{assistant_icon_path}" class="avatar">
64
+ </div>
65
+ """, unsafe_allow_html=True)
66
 
67
  # Start with an assistant message
68
  if not st.session_state.messages:
69
+ st.session_state.messages.append({"role": "assistant", "avatar": assistant_icon_path, "content": "Type yes to start"})
70
+ st.rerun()
71
 
72
  if prompt := st.chat_input():
73
  if st.session_state.approval_state == "require":
74
+ st.session_state.messages.append({"role": "user", "avatar": user_icon_path, "content": prompt})
75
  if prompt.lower() == "yes":
76
  st.session_state.approval_state = "approved"
77
+ st.session_state.messages.append({"role": "assistant", "avatar": assistant_icon_path, "content": "Token approved. Now you can use AI-Tom chatbot."})
78
  else:
79
+ st.session_state.messages.append({"role": "assistant", "avatar": assistant_icon_path, "content": "Wrong token, try again."})
80
  elif st.session_state.approval_state == "approved":
81
+ st.session_state.messages.append({"role": "user", "avatar": user_icon_path, "content": prompt})
82
  response = f"Echo: {prompt}"
83
+ st.session_state.messages.append({"role": "assistant", "avatar": assistant_icon_path, "content": response})
84
 
85
+ st.rerun()