kimtaeyeong1229 commited on
Commit
ba26eff
ยท
verified ยท
1 Parent(s): d4bad9d

Upload views/career.py with huggingface_hub

Browse files
Files changed (1) hide show
  1. views/career.py +281 -0
views/career.py ADDED
@@ -0,0 +1,281 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """Career page: AI Researcher vs Engineer analysis."""
2
+ import streamlit as st
3
+ import plotly.graph_objects as go
4
+ import plotly.express as px
5
+ import pandas as pd
6
+
7
+
8
+ def show():
9
+ st.title("AI ์ง๋ฌด ๋ถ„์„")
10
+ st.markdown("AI Researcher์™€ AI Engineer, ๋‘ ์ปค๋ฆฌ์–ด ๊ฒฝ๋กœ๋ฅผ ๋น„๊ตํ•˜๊ณ  ์ž์‹ ์—๊ฒŒ ๋งž๋Š” ๋ฐฉํ–ฅ์„ ์ฐพ์•„๋ณด์„ธ์š”.")
11
+
12
+ # โ”€โ”€ ํ•ต์‹ฌ ๋น„๊ต ํ…Œ์ด๋ธ” โ”€โ”€
13
+ st.subheader("ํ•ต์‹ฌ ์—ญํ•  ๋น„๊ต")
14
+ compare_data = {
15
+ "๊ตฌ๋ถ„": ["ํ•œ ์ค„ ์ •์˜", "์ฃผ์š” ์‚ฐ์ถœ๋ฌผ", "์‹œ๊ฐ„ ์ง€ํ‰", "์„ฑ๊ณผ ์ธก์ •", "์‹คํŒจ ํ—ˆ์šฉ๋„", "ํ•™๋ ฅ ์š”๊ฑด", "์ง„์ž… ๋‚œ์ด๋„"],
16
+ "AI Researcher": [
17
+ "์ƒˆ๋กœ์šด ์ง€์‹์„ ์ฐฝ์ถœํ•œ๋‹ค",
18
+ "๋…ผ๋ฌธ, ํŠนํ—ˆ, ์ƒˆ ์•Œ๊ณ ๋ฆฌ์ฆ˜",
19
+ "6๊ฐœ์›”~์ˆ˜ ๋…„ (์žฅ๊ธฐ ์—ฐ๊ตฌ)",
20
+ "๋…ผ๋ฌธ ์ธ์šฉ ์ˆ˜, SOTA ๋‹ฌ์„ฑ",
21
+ "๋†’์Œ (์—ฐ๊ตฌ์  ํƒ์ƒ‰)",
22
+ "๋ฐ•์‚ฌ ๊ฑฐ์˜ ํ•„์ˆ˜",
23
+ "โ˜…โ˜…โ˜…โ˜…โ˜…",
24
+ ],
25
+ "AI Engineer": [
26
+ "AI๋ฅผ ์ œํ’ˆ์— ๋…น์—ฌ๋‚ธ๋‹ค",
27
+ "์„œ๋น„์Šค, API, ํŒŒ์ดํ”„๋ผ์ธ",
28
+ "์ˆ˜ ์ฃผ~์ˆ˜ ๊ฐœ์›” (์ œํ’ˆ ์ค‘์‹ฌ)",
29
+ "์ง€์—ฐ์‹œ๊ฐ„, ์ฒ˜๋ฆฌ๋Ÿ‰, ์‚ฌ์šฉ์ž ์ง€ํ‘œ",
30
+ "๋‚ฎ์Œ (ํ”„๋กœ๋•์…˜ ์•ˆ์ •์„ฑ)",
31
+ "ํ•™๋ถ€ ์กธ์—… ํ›„ ์ง„์ž… ๊ฐ€๋Šฅ",
32
+ "โ˜…โ˜…โ˜…โ˜†โ˜†",
33
+ ],
34
+ }
35
+ df_compare = pd.DataFrame(compare_data).set_index("๊ตฌ๋ถ„")
36
+ st.dataframe(df_compare, use_container_width=True)
37
+
38
+ st.markdown("---")
39
+
40
+ # โ”€โ”€ ํƒญ๋ณ„ ์ƒ์„ธ โ”€โ”€
41
+ tab_r, tab_e, tab_jd, tab_choice = st.tabs(
42
+ ["Researcher ์ƒ์„ธ", "Engineer ์ƒ์„ธ", "JD ๋ณ€ํ™” (2014โ†’2024)", "์„ ํƒ ๊ธฐ์ค€"]
43
+ )
44
+
45
+ with tab_r:
46
+ st.subheader("AI Researcher")
47
+
48
+ col1, col2 = st.columns(2)
49
+ with col1:
50
+ st.markdown("#### ํ•ต์‹ฌ ์—ญํ• ")
51
+ roles = [
52
+ "๋ฌธํ—Œ ์กฐ์‚ฌ โ€” arXiv, NeurIPS, ICML, ICLR ์ง€์† ์ถ”์ ",
53
+ "๊ฐ€์„ค ์„ค์ • & ์‹คํ—˜ ์„ค๊ณ„",
54
+ "์ƒˆ๋กœ์šด ์•„ํ‚คํ…์ฒ˜ / ํ•™์Šต ๊ธฐ๋ฒ• ์—ฐ๊ตฌ",
55
+ "๋…ผ๋ฌธ ์ž‘์„ฑ & ๊ตญ์ œ ํ•™ํšŒ ๋ฐœํ‘œ",
56
+ "์žฌํ˜„์„ฑ ๊ฒ€์ฆ (ํ†ต๊ณ„์  ์œ ์˜์„ฑ)",
57
+ ]
58
+ for r in roles:
59
+ st.markdown(f"- {r}")
60
+
61
+ with col2:
62
+ st.markdown("#### ์š”๊ตฌ ์—ญ๋Ÿ‰ ์ˆ˜์ค€")
63
+ skills = {
64
+ "์ˆ˜ํ•™ (์„ ํ˜•๋Œ€์ˆ˜/ํ™•๋ฅ /๋ฏธ์ ๋ถ„)": 5,
65
+ "ML ์ด๋ก ": 5,
66
+ "๋”ฅ๋Ÿฌ๋‹ ์•„ํ‚คํ…์ฒ˜": 5,
67
+ "Python/PyTorch": 4,
68
+ "๋…ผ๋ฌธ ์ฝ๊ธฐ (์˜์–ด)": 5,
69
+ "์‹คํ—˜ ๊ด€๋ฆฌ": 3,
70
+ "MLOps/ํด๋ผ์šฐ๋“œ": 2,
71
+ }
72
+ fig = go.Figure(go.Bar(
73
+ x=list(skills.values()),
74
+ y=list(skills.keys()),
75
+ orientation='h',
76
+ marker_color='#3498db',
77
+ text=[f"{'โ˜…' * v}{'โ˜†' * (5-v)}" for v in skills.values()],
78
+ textposition='outside',
79
+ ))
80
+ fig.update_layout(xaxis=dict(range=[0, 6], showticklabels=False),
81
+ height=280, margin=dict(t=10, b=10))
82
+ st.plotly_chart(fig, use_container_width=True)
83
+
84
+ st.markdown("#### ์ปค๋ฆฌ์–ด ํŒจ์Šค")
85
+ st.markdown("""
86
+ ```
87
+ ํ•™๋ถ€ ์—ฐ๊ตฌ์ƒ (์ธํ„ด)
88
+ โ†“
89
+ ์„์‚ฌ ๊ณผ์ • / ์„์‚ฌ ์ธํ„ด์‹ญ
90
+ โ†“
91
+ ๋ฐ•์‚ฌ ๊ณผ์ • (์ผ๋ฐ˜์ ์œผ๋กœ ํ•„์ˆ˜)
92
+ โ†“
93
+ ํฌ๋‹ฅ or ๋ฆฌ์„œ์น˜ ์ธํ„ด (Google DeepMind, OpenAI, Anthropic ๋“ฑ)
94
+ โ†“
95
+ Research Scientist
96
+ โ†“
97
+ Senior Research Scientist
98
+ โ†“
99
+ Principal Researcher / Research Director
100
+ ```
101
+ """)
102
+ st.warning("์ƒ์œ„ AI ์—ฐ๊ตฌ์†Œ(OpenAI, Google DeepMind, Anthropic)๋Š” ๋Œ€๋ถ€๋ถ„ **๋ฐ•์‚ฌ ํ•™์œ„** ์š”๊ตฌ.")
103
+
104
+ with tab_e:
105
+ st.subheader("AI Engineer")
106
+
107
+ col1, col2 = st.columns(2)
108
+ with col1:
109
+ st.markdown("#### ํ•ต์‹ฌ ์—ญํ• ")
110
+ roles = [
111
+ "๋ชจ๋ธ ์„ ํƒ ๋ฐ ํŒŒ์ธํŠœ๋‹",
112
+ "MLOps ํŒŒ์ดํ”„๋ผ์ธ ๊ตฌ์ถ•",
113
+ "๋ชจ๋ธ ์ตœ์ ํ™” (์–‘์žํ™”, ONNX)",
114
+ "์„œ๋น™ ์ธํ”„๋ผ (REST API, gRPC)",
115
+ "๋ชจ๋‹ˆํ„ฐ๋ง โ€” ์„ฑ๋Šฅ ๋“œ๋ฆฌํ”„ํŠธ ๊ฐ์ง€",
116
+ ]
117
+ for r in roles:
118
+ st.markdown(f"- {r}")
119
+
120
+ with col2:
121
+ st.markdown("#### ์š”๊ตฌ ์—ญ๋Ÿ‰ ์ˆ˜์ค€")
122
+ skills = {
123
+ "Python (ํ”„๋กœ๋•์…˜ ์ˆ˜์ค€)": 5,
124
+ "ML/DL ์ดํ•ด (์‚ฌ์šฉ ์ˆ˜์ค€)": 3,
125
+ "MLOps (Airflow, Kubeflow)": 4,
126
+ "ํด๋ผ์šฐ๋“œ (AWS/GCP)": 4,
127
+ "Docker/Kubernetes": 4,
128
+ "API ๊ฐœ๋ฐœ (FastAPI)": 4,
129
+ "์ˆ˜ํ•™": 2,
130
+ }
131
+ fig = go.Figure(go.Bar(
132
+ x=list(skills.values()),
133
+ y=list(skills.keys()),
134
+ orientation='h',
135
+ marker_color='#2ecc71',
136
+ text=[f"{'โ˜…' * v}{'โ˜†' * (5-v)}" for v in skills.values()],
137
+ textposition='outside',
138
+ ))
139
+ fig.update_layout(xaxis=dict(range=[0, 6], showticklabels=False),
140
+ height=280, margin=dict(t=10, b=10))
141
+ st.plotly_chart(fig, use_container_width=True)
142
+
143
+ st.markdown("#### ์ปค๋ฆฌ์–ด ํŒจ์Šค")
144
+ st.markdown("""
145
+ ```
146
+ ์†Œํ”„ํŠธ์›จ์–ด ์—”์ง€๋‹ˆ์–ด (Python/๋ฐฑ์—”๋“œ)
147
+ ๋˜๋Š” ๋ฐ์ดํ„ฐ ๋ถ„์„๊ฐ€/์‚ฌ์ด์–ธํ‹ฐ์ŠคํŠธ
148
+ โ†“
149
+ ML Engineer (์ฃผ๋‹ˆ์–ด)
150
+ โ†“
151
+ ML Engineer (์‹œ๋‹ˆ์–ด)
152
+ โ†“
153
+ Staff ML Engineer / ML Platform Engineer
154
+ โ†“
155
+ Principal Engineer / ML Architect / Director of ML
156
+ ```
157
+ """)
158
+ st.success("**ํ•™๋ถ€ ์กธ์—… ํ›„ ์ง„์ž… ๊ฐ€๋Šฅ!** ๋ถ€ํŠธ์บ ํ”„ + ํฌํŠธํด๋ฆฌ์˜ค๋กœ 1~2๋…„ ๋‚ด ์ทจ์—… ์‚ฌ๋ก€ ๋‹ค์ˆ˜.")
159
+
160
+ with tab_jd:
161
+ st.subheader("JD ๋ณ€ํ™”: 2014 โ†’ 2024")
162
+
163
+ # Researcher JD
164
+ st.markdown("#### AI Researcher")
165
+ jd_r = pd.DataFrame({
166
+ "์š”๊ตฌ์‚ฌํ•ญ": ["ํ•™๋ ฅ", "์ฃผ๋ ฅ ๊ธฐ์ˆ ", "ํ”„๋ ˆ์ž„์›Œํฌ", "๋…ผ๋ฌธ ๊ธฐ๋Œ€๋Ÿ‰", "GPU ๊ฒฝํ—˜", "LLM ๊ด€๋ จ"],
167
+ "2014๋…„": ["๋ฐ•์‚ฌ ํ•„์ˆ˜", "SVM, Random Forest, ๋ฒ ์ด์ฆˆ", "Theano, Caffe, Matlab",
168
+ "1~2ํŽธ ์ด์ƒ", "์šฐ๋Œ€", "์–ธ๊ธ‰ ์—†์Œ"],
169
+ "2024๋…„": ["๋ฐ•์‚ฌ ๊ฑฐ์˜ ํ•„์ˆ˜ (์„์‚ฌ+์‹ค์  ์ธ์ • ์ผ๋ถ€)", "Transformer, LLM, Diffusion, RLHF",
170
+ "PyTorch (ํ‘œ์ค€), JAX", "3ํŽธ ์ด์ƒ (1์ €์ž ์šฐ๋Œ€)",
171
+ "์ˆ˜์ฒœ GPU ํ•™์Šต ๊ฒฝํ—˜ ํ•„์ˆ˜", "RLHF, RAG, Alignment ์ดํ•ด"],
172
+ })
173
+ st.dataframe(jd_r.set_index("์š”๊ตฌ์‚ฌํ•ญ"), use_container_width=True)
174
+
175
+ st.markdown("#### AI Engineer")
176
+ jd_e = pd.DataFrame({
177
+ "์š”๊ตฌ์‚ฌํ•ญ": ["์ง๋ฌด ๋ช…์นญ", "์ฃผ๋ ฅ ์—…๋ฌด", "๋ฐ์ดํ„ฐ", "๋ฐฐํฌ", "๋ชจ๋‹ˆํ„ฐ๋ง", "LLM"],
178
+ "2014๋…„": ["Data Scientist, ML Scientist", "๋ชจ๋ธ ํ•™์Šต, ํ”ผ์ฒ˜ ์—”์ง€๋‹ˆ์–ด๋ง",
179
+ "Hadoop, Hive, MapReduce", "์ˆ˜๋™ ๋ฐฐํฌ, ์Šคํฌ๋ฆฝํŠธ",
180
+ "๊ฑฐ์˜ ์—†์Œ", "์–ธ๊ธ‰ ์—†์Œ"],
181
+ "2024๋…„": ["ML Engineer, AI Engineer, MLOps Engineer",
182
+ "LLM ํŒŒ์ธํŠœ๋‹, RAG ํŒŒ์ดํ”„๋ผ์ธ, ๋ชจ๋ธ ์„œ๋น™",
183
+ "Spark, dbt, ๋ฐ์ดํ„ฐ ๋ ˆ์ดํฌํ•˜์šฐ์Šค", "CI/CD, Kubernetes, GitOps",
184
+ "MLflow, Grafana, ํ”ผ์ฒ˜ ์Šคํ† ์–ด ํ•„์ˆ˜",
185
+ "OpenAI/Anthropic API, HuggingFace ํ™œ์šฉ"],
186
+ })
187
+ st.dataframe(jd_e.set_index("์š”๊ตฌ์‚ฌํ•ญ"), use_container_width=True)
188
+
189
+ # Skill change visualization
190
+ st.markdown("#### 2024๋…„ ์ƒˆ๋กœ ์ƒ๊ธด ํ•„์ˆ˜ ์Šคํ‚ฌ")
191
+ new_skills = {
192
+ "LLM ํŒŒ์ธํŠœ๋‹ (LoRA/QLoRA)": 95,
193
+ "Vector Database": 88,
194
+ "RAG ๊ตฌํ˜„": 90,
195
+ "LLM ํ‰๊ฐ€/๋ฒค์น˜๋งˆํ‚น": 75,
196
+ "AI ์•ˆ์ „์„ฑ/Alignment": 70,
197
+ "์—์ด์ „ํŠธ ํ”„๋ ˆ์ž„์›Œํฌ": 80,
198
+ "ํ”„๋กฌํ”„ํŠธ ์ตœ์ ํ™”": 85,
199
+ }
200
+ fig = px.bar(
201
+ x=list(new_skills.values()),
202
+ y=list(new_skills.keys()),
203
+ orientation='h',
204
+ labels={'x': '์ˆ˜์š” ์ง€์ˆ˜ (2024)', 'y': '์Šคํ‚ฌ'},
205
+ title='2024๋…„ ์‹ ๊ทœ ์š”๊ตฌ ์—ญ๋Ÿ‰ ์ˆ˜์š” ์ง€์ˆ˜',
206
+ color=list(new_skills.values()),
207
+ color_continuous_scale='YlOrRd',
208
+ )
209
+ fig.update_layout(coloraxis_showscale=False)
210
+ st.plotly_chart(fig, use_container_width=True)
211
+
212
+ st.markdown("#### ์‚ฌ๋ผ์ง„ ์Šคํ‚ฌ")
213
+ gone = ["Hadoop MapReduce / Hive", "R ์–ธ์–ด", "MATLAB", "์ „ํ†ต NLP (TF-IDF, n-gram)", "HMM"]
214
+ for g in gone:
215
+ st.markdown(f"- ~~{g}~~")
216
+
217
+ with tab_choice:
218
+ st.subheader("๋‚˜๋Š” ์–ด๋–ค ํŠธ๋ž™์ด ๋งž์„๊นŒ?")
219
+ st.markdown("์•„๋ž˜ ์งˆ๋ฌธ์— ์†”์งํ•˜๊ฒŒ ๋‹ตํ•ด๋ณด์„ธ์š”.")
220
+
221
+ score = 0
222
+
223
+ q1 = st.radio(
224
+ "1. ์ƒˆ๋กœ์šด ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ *์™œ* ์ž‘๋™ํ•˜๋Š”์ง€ ํŒŒ๊ณ ๋“œ๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.",
225
+ ["๋งค์šฐ ๊ทธ๋ ‡๋‹ค (+2)", "๊ทธ๋ ‡๋‹ค (+1)", "๋ชจ๋ฅด๊ฒ ๋‹ค (0)", "์•„๋‹ˆ๋‹ค (-1)", "์ „ํ˜€ ์•„๋‹ˆ๋‹ค (-2)"],
226
+ )
227
+ score += {"๋งค์šฐ ๊ทธ๋ ‡๋‹ค (+2)": 2, "๊ทธ๋ ‡๋‹ค (+1)": 1, "๋ชจ๋ฅด๊ฒ ๋‹ค (0)": 0,
228
+ "์•„๋‹ˆ๋‹ค (-1)": -1, "์ „ํ˜€ ์•„๋‹ˆ๋‹ค (-2)": -2}[q1]
229
+
230
+ q2 = st.radio(
231
+ "2. ์‹ค์ œ ์„œ๋น„์Šค์— AI๋ฅผ ์˜ฌ๋ ค ์‚ฌ๋žŒ๋“ค์ด ์“ฐ๋Š” ๊ฒƒ์„ ๋ณด๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.",
232
+ ["๋งค์šฐ ๊ทธ๋ ‡๋‹ค (-2)", "๊ทธ๋ ‡๋‹ค (-1)", "๋ชจ๋ฅด๊ฒ ๋‹ค (0)", "์•„๋‹ˆ๋‹ค (+1)", "์ „ํ˜€ ์•„๋‹ˆ๋‹ค (+2)"],
233
+ )
234
+ score += {"๋งค์šฐ ๊ทธ๋ ‡๋‹ค (-2)": -2, "๊ทธ๋ ‡๋‹ค (-1)": -1, "๋ชจ๋ฅด๊ฒ ๋‹ค (0)": 0,
235
+ "์•„๋‹ˆ๋‹ค (+1)": 1, "์ „ํ˜€ ์•„๋‹ˆ๋‹ค (+2)": 2}[q2]
236
+
237
+ q3 = st.radio(
238
+ "3. ๋ฐ•์‚ฌ ๊ณผ์ •(4~6๋…„)์„ ๊ฐ์ˆ˜ํ•  ์˜ํ–ฅ์ด ์žˆ๋‹ค.",
239
+ ["๊ทธ๋ ‡๋‹ค (+3)", "๊ณ ๋ ค ์ค‘ (+1)", "์•„๋‹ˆ๋‹ค (-2)"],
240
+ )
241
+ score += {"๊ทธ๋ ‡๋‹ค (+3)": 3, "๊ณ ๋ ค ์ค‘ (+1)": 1, "์•„๋‹ˆ๋‹ค (-2)": -2}[q3]
242
+
243
+ q4 = st.radio(
244
+ "4. ๋น ๋ฅธ ์„ฑ๊ณผ(1~2๋…„ ๋‚ด ์ทจ์—…)๋ฅผ ์›ํ•œ๋‹ค.",
245
+ ["๊ทธ๋ ‡๋‹ค (-2)", "๋ณดํ†ต (0)", "์•„๋‹ˆ๋‹ค (+1)"],
246
+ )
247
+ score += {"๊ทธ๋ ‡๋‹ค (-2)": -2, "๋ณดํ†ต (0)": 0, "์•„๋‹ˆ๋‹ค (+1)": 1}[q4]
248
+
249
+ q5 = st.radio(
250
+ "5. ์ˆ˜ํ•™(๋ฏธ์ ๋ถ„, ์„ ํ˜•๋Œ€์ˆ˜, ํ†ต๊ณ„)์ด ์žฌ๋ฏธ์žˆ๏ฟฝ๏ฟฝ.",
251
+ ["๋งค์šฐ ์žฌ๋ฐŒ๋‹ค (+2)", "๊ทธ๋Ÿฐ ํŽธ (+1)", "๋ณดํ†ต (0)", "์–ด๋ ต๊ณ  ์‹ซ๋‹ค (-2)"],
252
+ )
253
+ score += {"๋งค์šฐ ์žฌ๋ฐŒ๋‹ค (+2)": 2, "๊ทธ๋Ÿฐ ํŽธ (+1)": 1, "๋ณดํ†ต (0)": 0, "์–ด๋ ต๊ณ  ์‹ซ๋‹ค (-2)": -2}[q5]
254
+
255
+ st.markdown("---")
256
+ if st.button("๊ฒฐ๊ณผ ๋ณด๊ธฐ", use_container_width=True):
257
+ if score >= 4:
258
+ st.success(f"""
259
+ **์ ์ˆ˜: {score}์  โ†’ AI Researcher ์ง€ํ–ฅ**
260
+
261
+ ์ˆ˜ํ•™๊ณผ ์ด๋ก ์— ๋Œ€ํ•œ ๊นŠ์€ ๊ด€์‹ฌ, ์žฅ๊ธฐ ์—ฐ๊ตฌ์— ๋Œ€ํ•œ ๊ฐ์˜ค๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
262
+ ๋Œ€ํ•™์› ์ง„ํ•™์„ ๋ชฉํ‘œ๋กœ ๊ธฐ์ดˆ ์ˆ˜ํ•™๊ณผ ๋…ผ๋ฌธ ์ฝ๊ธฐ๋ฅผ ์ง€๊ธˆ ์‹œ์ž‘ํ•˜์„ธ์š”.
263
+ """)
264
+ elif score <= -2:
265
+ st.info(f"""
266
+ **์ ์ˆ˜: {score}์  โ†’ AI Engineer ์ง€ํ–ฅ**
267
+
268
+ ๋น ๋ฅธ ์„ฑ๊ณผ์™€ ์‹ค์šฉ์ ์ธ ์ œํ’ˆ ๊ฐœ๋ฐœ์— ๋” ๋งž๋Š” ์„ฑํ–ฅ์ž…๋‹ˆ๋‹ค.
269
+ ํฌํŠธํด๋ฆฌ์˜ค ํ”„๋กœ์ ํŠธ๋ฅผ ์Œ“์œผ๋ฉฐ MLOps ์Šคํ‚ฌ์„ ์ตํžˆ์„ธ์š”.
270
+ """)
271
+ else:
272
+ st.warning(f"""
273
+ **์ ์ˆ˜: {score}์  โ†’ ์•„์ง ํƒ์ƒ‰ ์ค‘**
274
+
275
+ Engineer ํŠธ๋ž™์œผ๋กœ ๋จผ์ € ์‹œ์ž‘ํ•˜๋Š” ๊ฒƒ์„ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค.
276
+ ์‹ค์ œ ํ”„๋กœ์ ํŠธ๋ฅผ ํ†ตํ•ด ํฅ๋ฏธ๋ฅผ ํ™•์ธํ•œ ๋’ค ๋ฐฉํ–ฅ์„ ๊ฒฐ์ •ํ•˜์„ธ์š”.
277
+ """)
278
+
279
+ st.markdown("> **์ž…๋ฌธ์ž ์กฐ์–ธ**: ์ฒ˜์Œ์—๋Š” **Engineer ํŠธ๋ž™**์œผ๋กœ ์‹œ์ž‘ํ•˜์„ธ์š”. "
280
+ "์ทจ์—…๊นŒ์ง€ ๊ธฐ๊ฐ„์ด ์งง๊ณ , ํ•™์œ„ ์žฅ๋ฒฝ์ด ๋‚ฎ์Šต๋‹ˆ๋‹ค. "
281
+ "Researcher๋กœ์˜ ์ „ํ™˜์€ ํ˜„์žฅ ๊ฒฝํ—˜ ํ›„์—๋„ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.")