Kim Juwon commited on
Commit
8807103
Β·
1 Parent(s): 7901dd6

update UI/UX

Browse files
Files changed (1) hide show
  1. app.py +118 -18
app.py CHANGED
@@ -14,19 +14,23 @@ def respond(
14
  max_tokens,
15
  temperature,
16
  top_p,
 
 
17
  ):
18
  messages = [{"role": "system", "content": system_message}]
19
 
 
 
 
20
  for val in history:
21
  if val[0]:
22
  messages.append({"role": "user", "content": val[0]})
23
  if val[1]:
24
  messages.append({"role": "assistant", "content": val[1]})
25
 
26
- messages.append({"role": "user", "content": message})
27
 
28
  response = ""
29
-
30
  for message in client.chat_completion(
31
  messages,
32
  max_tokens=max_tokens,
@@ -35,7 +39,6 @@ def respond(
35
  top_p=top_p,
36
  ):
37
  token = message.choices[0].delta.content
38
-
39
  response += token
40
  yield response
41
 
@@ -43,21 +46,118 @@ def respond(
43
  """
44
  For information on how to customize the ChatInterface, peruse the gradio docs: https://www.gradio.app/docs/chatinterface
45
  """
46
- demo = gr.ChatInterface(
47
- respond,
48
- additional_inputs=[
49
- gr.Textbox(value="You are a friendly Chatbot.", label="System message"),
50
- gr.Slider(minimum=1, maximum=2048, value=512, step=1, label="Max new tokens"),
51
- gr.Slider(minimum=0.1, maximum=4.0, value=0.7, step=0.1, label="Temperature"),
52
- gr.Slider(
53
- minimum=0.1,
54
- maximum=1.0,
55
- value=0.95,
56
- step=0.05,
57
- label="Top-p (nucleus sampling)",
58
- ),
59
- ],
60
- )
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
61
 
62
 
63
  if __name__ == "__main__":
 
14
  max_tokens,
15
  temperature,
16
  top_p,
17
+ genre,
18
+ mood,
19
  ):
20
  messages = [{"role": "system", "content": system_message}]
21
 
22
+ # μ‚¬μš©μž μž…λ ₯에 μž₯λ₯΄μ™€ κΈ°λΆ„ 정보 μΆ”κ°€
23
+ enhanced_message = f"Genre: {genre}\nMood: {mood}\nUser request: {message}"
24
+
25
  for val in history:
26
  if val[0]:
27
  messages.append({"role": "user", "content": val[0]})
28
  if val[1]:
29
  messages.append({"role": "assistant", "content": val[1]})
30
 
31
+ messages.append({"role": "user", "content": enhanced_message})
32
 
33
  response = ""
 
34
  for message in client.chat_completion(
35
  messages,
36
  max_tokens=max_tokens,
 
39
  top_p=top_p,
40
  ):
41
  token = message.choices[0].delta.content
 
42
  response += token
43
  yield response
44
 
 
46
  """
47
  For information on how to customize the ChatInterface, peruse the gradio docs: https://www.gradio.app/docs/chatinterface
48
  """
49
+
50
+ # μ»€μŠ€ν…€ CSS μŠ€νƒ€μΌ
51
+ custom_css = """
52
+ .gradio-container {
53
+ font-family: 'Helvetica Neue', Arial, sans-serif;
54
+ }
55
+ .container {
56
+ max-width: 800px;
57
+ margin: auto;
58
+ padding: 20px;
59
+ }
60
+ .chat-message {
61
+ padding: 15px;
62
+ border-radius: 10px;
63
+ margin-bottom: 10px;
64
+ }
65
+ .user-message {
66
+ background-color: #f0f2f5;
67
+ }
68
+ .bot-message {
69
+ background-color: #e3f2fd;
70
+ }
71
+ """
72
+
73
+ with gr.Blocks(css=custom_css) as demo:
74
+ gr.Markdown("""
75
+ # 🎬 Personalized Movie Recommender
76
+
77
+ μ•ˆλ…•ν•˜μ„Έμš”! λ‹Ήμ‹ λ§Œμ„ μœ„ν•œ μ˜ν™” μΆ”μ²œ μ‹œμŠ€ν…œμž…λ‹ˆλ‹€.
78
+ μ„ ν˜Έν•˜λŠ” μž₯λ₯΄μ™€ ν˜„μž¬ 기뢄을 μ•Œλ €μ£Όμ‹œλ©΄, λ§žμΆ€ν˜• μ˜ν™”λ₯Ό μΆ”μ²œν•΄λ“œλ¦½λ‹ˆλ‹€.
79
+ """)
80
+
81
+ with gr.Row():
82
+ with gr.Column(scale=2):
83
+ chatbot = gr.Chatbot(
84
+ height=600,
85
+ show_copy_button=True,
86
+ avatar_images=("πŸ‘€", "🎬"),
87
+ bubble_full_width=False,
88
+ )
89
+ msg = gr.Textbox(
90
+ placeholder="μ–΄λ–€ μ˜ν™”λ₯Ό μ°Ύκ³  κ³„μ‹ κ°€μš”?",
91
+ show_label=False,
92
+ container=False
93
+ )
94
+ with gr.Row():
95
+ submit = gr.Button("μΆ”μ²œ λ°›κΈ°", variant="primary")
96
+ clear = gr.Button("λŒ€ν™” μ΄ˆκΈ°ν™”")
97
+
98
+ with gr.Column(scale=1):
99
+ with gr.Group():
100
+ gr.Markdown("### 🎯 μΆ”μ²œ μ„€μ •")
101
+ genre = gr.Dropdown(
102
+ choices=["μ•‘μ…˜", "μ½”λ―Έλ””", "λ“œλΌλ§ˆ", "둜맨슀", "슀릴러", "SF", "νŒνƒ€μ§€", "μ• λ‹ˆλ©”μ΄μ…˜"],
103
+ label="μ„ ν˜Έν•˜λŠ” μž₯λ₯΄",
104
+ multiselect=True
105
+ )
106
+ mood = gr.Dropdown(
107
+ choices=["μ‹ λ‚˜λŠ”", "감성적인", "κΈ΄μž₯감 μžˆλŠ”", "νŽΈμ•ˆν•œ", "μ‹ λΉ„λ‘œμš΄"],
108
+ label="ν˜„μž¬ κΈ°λΆ„",
109
+ multiselect=True
110
+ )
111
+
112
+ with gr.Group():
113
+ gr.Markdown("### βš™οΈ κ³ κΈ‰ μ„€μ •")
114
+ system_message = gr.Textbox(
115
+ value="You are a friendly movie recommendation assistant. Provide detailed movie recommendations based on user preferences.",
116
+ label="μ‹œμŠ€ν…œ λ©”μ‹œμ§€"
117
+ )
118
+ max_tokens = gr.Slider(
119
+ minimum=1,
120
+ maximum=2048,
121
+ value=512,
122
+ step=1,
123
+ label="μ΅œλŒ€ 토큰 수"
124
+ )
125
+ temperature = gr.Slider(
126
+ minimum=0.1,
127
+ maximum=4.0,
128
+ value=0.7,
129
+ step=0.1,
130
+ label="Temperature"
131
+ )
132
+ top_p = gr.Slider(
133
+ minimum=0.1,
134
+ maximum=1.0,
135
+ value=0.95,
136
+ step=0.05,
137
+ label="Top-p"
138
+ )
139
+
140
+ submit.click(
141
+ respond,
142
+ inputs=[
143
+ msg,
144
+ chatbot,
145
+ system_message,
146
+ max_tokens,
147
+ temperature,
148
+ top_p,
149
+ genre,
150
+ mood,
151
+ ],
152
+ outputs=chatbot,
153
+ ).then(
154
+ lambda: "",
155
+ None,
156
+ msg,
157
+ queue=False
158
+ )
159
+
160
+ clear.click(lambda: None, None, chatbot, queue=False)
161
 
162
 
163
  if __name__ == "__main__":