Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
|
@@ -36,102 +36,7 @@ MBTI_QUESTIONS = [
|
|
| 36 |
|
| 37 |
# Định nghĩa đầy đủ các kiểu MBTI và đặc điểm nghề nghiệp
|
| 38 |
MBTI_CAREER_TRAITS = {
|
| 39 |
-
|
| 40 |
-
"traits": "Tỉ mỉ, có tổ chức, thực tế, đáng tin cậy, trách nhiệm",
|
| 41 |
-
"careers": "Kế toán, Quản trị, Công nghệ thông tin, Kỹ sư, Quân đội",
|
| 42 |
-
"strengths": "Làm việc có tổ chức, chi tiết, đáng tin cậy, thực tế",
|
| 43 |
-
"weaknesses": "Đôi khi cứng nhắc, khó thích nghi với thay đổi"
|
| 44 |
-
},
|
| 45 |
-
"ISFJ": {
|
| 46 |
-
"traits": "Chu đáo, trách nhiệm, kiên nhẫn, thực tế, tận tụy",
|
| 47 |
-
"careers": "Y tá, Giáo viên, Quản trị văn phòng, Nhân viên xã hội, Kế toán",
|
| 48 |
-
"strengths": "Quan tâm đến người khác, đáng tin cậy, chi tiết",
|
| 49 |
-
"weaknesses": "Khó nói 'không', có thể quá lo lắng"
|
| 50 |
-
},
|
| 51 |
-
"INFJ": {
|
| 52 |
-
"traits": "Sáng tạo, có tầm nhìn, đồng cảm, kiên định",
|
| 53 |
-
"careers": "Tư vấn tâm lý, Giáo viên, Nhà văn, Nghệ sĩ, Nhà thiết kế",
|
| 54 |
-
"strengths": "Sáng tạo, hiểu người khác sâu sắc, có tầm nhìn",
|
| 55 |
-
"weaknesses": "Dễ kiệt sức, đôi khi quá lý tưởng"
|
| 56 |
-
},
|
| 57 |
-
"INTJ": {
|
| 58 |
-
"traits": "Chiến lược, độc lập, phân tích, sáng tạo",
|
| 59 |
-
"careers": "Kiến trúc sư, Nhà khoa học, Kỹ sư, Quản lý cấp cao, Tư vấn chiến lược",
|
| 60 |
-
"strengths": "Tư duy chiến lược, độc lập, sáng tạo",
|
| 61 |
-
"weaknesses": "Có thể quá hoàn hảo, đôi khi khó giao tiếp"
|
| 62 |
-
},
|
| 63 |
-
"ISTP": {
|
| 64 |
-
"traits": "Linh hoạt, thực tế, logic, phiêu lưu",
|
| 65 |
-
"careers": "Kỹ sư cơ khí, Thợ thủ công, Lập trình viên, Phi công, Vận động viên",
|
| 66 |
-
"strengths": "Giải quyết vấn đề thực tế, linh hoạt, logic",
|
| 67 |
-
"weaknesses": "Khó cam kết lâu dài, có thể thiếu kiên nhẫn"
|
| 68 |
-
},
|
| 69 |
-
"ISFP": {
|
| 70 |
-
"traits": "Nghệ sĩ, nhạy cảm, linh hoạt, hòa đồng",
|
| 71 |
-
"careers": "Nghệ sĩ, Nhà thiết kế, Nhiếp ảnh gia, Nhà tạo mẫu, Bác sĩ thú y",
|
| 72 |
-
"strengths": "Sáng tạo, thẩm mỹ cao, linh hoạt",
|
| 73 |
-
"weaknesses": "Khó lập kế hoạch dài hạn, dễ bị tổn thương"
|
| 74 |
-
},
|
| 75 |
-
"INFP": {
|
| 76 |
-
"traits": "Lý tưởng, sáng tạo, đồng cảm, trung thực",
|
| 77 |
-
"careers": "Nhà văn, Nghệ sĩ, Tư vấn tâm lý, Giáo viên, Nhà thiết kế",
|
| 78 |
-
"strengths": "Sáng tạo, hiểu người khác, có giá trị mạnh mẽ",
|
| 79 |
-
"weaknesses": "Quá lý tưởng, khó đưa ra quyết định"
|
| 80 |
-
},
|
| 81 |
-
"INTP": {
|
| 82 |
-
"traits": "Logic, sáng tạo, phân tích, độc lập",
|
| 83 |
-
"careers": "Lập trình viên, Nhà khoa học, Kỹ sư, Nhà phân tích, Kiến trúc sư",
|
| 84 |
-
"strengths": "Tư duy logic, sáng tạo, giải quyết vấn đề phức tạp",
|
| 85 |
-
"weaknesses": "Có thể quá lý thuyết, khó hoàn thành công việc"
|
| 86 |
-
},
|
| 87 |
-
"ESTP": {
|
| 88 |
-
"traits": "Năng động, thực tế, linh hoạt, phiêu lưu",
|
| 89 |
-
"careers": "Doanh nhân, Môi giới, Quản lý dự án, Vận động viên, Nhà thầu",
|
| 90 |
-
"strengths": "Giải quyết vấn đề nhanh, thích ứng tốt, năng động",
|
| 91 |
-
"weaknesses": "Có thể thiếu kiên nhẫn, khó tập trung lâu"
|
| 92 |
-
},
|
| 93 |
-
"ESFP": {
|
| 94 |
-
"traits": "Nhiệt tình, hòa đồng, thực tế, vui vẻ",
|
| 95 |
-
"careers": "Nghệ sĩ biểu diễn, Bán hàng, Quản lý sự kiện, Nhà thiết kế, Huấn luyện viên",
|
| 96 |
-
"strengths": "Giao tiếp tốt, năng động, thích ứng nhanh",
|
| 97 |
-
"weaknesses": "Khó tập trung, không thích lý thuyết"
|
| 98 |
-
},
|
| 99 |
-
"ENFP": {
|
| 100 |
-
"traits": "Nhiệt tình, sáng tạo, linh hoạt, truyền cảm hứng",
|
| 101 |
-
"careers": "Nhà báo, Marketing, Tư vấn, Nghệ sĩ, Giáo viên",
|
| 102 |
-
"strengths": "Sáng tạo, giao tiếp tốt, truyền cảm hứng",
|
| 103 |
-
"weaknesses": "Khó tập trung, dễ phân tâm"
|
| 104 |
-
},
|
| 105 |
-
"ENTP": {
|
| 106 |
-
"traits": "Sáng tạo, logic, năng động, thông minh",
|
| 107 |
-
"careers": "Doanh nhân, Luật sư, Nhà phát minh, Nhà tư vấn, Nhà marketing",
|
| 108 |
-
"strengths": "Sáng tạo, logic, giải quyết vấn đề tốt",
|
| 109 |
-
"weaknesses": "Có thể tranh luận quá nhiều, khó hoàn thành"
|
| 110 |
-
},
|
| 111 |
-
"ESTJ": {
|
| 112 |
-
"traits": "Tổ chức, thực tế, logic, quyết đoán",
|
| 113 |
-
"careers": "Quản lý, Quân đội, Luật sư, Tài chính, Kinh doanh",
|
| 114 |
-
"strengths": "Tổ chức tốt, quyết đoán, thực tế",
|
| 115 |
-
"weaknesses": "Có thể quá cứng nhắc, thiếu nhạy cảm"
|
| 116 |
-
},
|
| 117 |
-
"ESFJ": {
|
| 118 |
-
"traits": "Quan tâm, có tổ chức, hòa đồng, trách nhiệm",
|
| 119 |
-
"careers": "Giáo viên, Y tá, Quản lý nhân sự, Bán hàng, Chăm sóc khách hàng",
|
| 120 |
-
"strengths": "Giao tiếp tốt, có tổ chức, quan tâm người khác",
|
| 121 |
-
"weaknesses": "Quá phụ thuộc vào ý kiến người khác"
|
| 122 |
-
},
|
| 123 |
-
"ENFJ": {
|
| 124 |
-
"traits": "Lãnh đạo, đồng cảm, có tổ chức, truyền cảm hứng",
|
| 125 |
-
"careers": "Giáo viên, Tư vấn, Nhà lãnh đạo, Marketing, Nhà báo",
|
| 126 |
-
"strengths": "Lãnh đạo tốt, hiểu người khác, truyền cảm hứng",
|
| 127 |
-
"weaknesses": "Quá lo lắng về người khác, dễ kiệt sức"
|
| 128 |
-
},
|
| 129 |
-
"ENTJ": {
|
| 130 |
-
"traits": "Lãnh đạo, quyết đoán, chiến lược, tự tin",
|
| 131 |
-
"careers": "Lãnh đạo doanh nghiệp, Tư vấn quản lý, Luật sư, Quản lý dự án, Chính trị gia",
|
| 132 |
-
"strengths": "Lãnh đạo tốt, tư duy chiến lược, quyết đoán",
|
| 133 |
-
"weaknesses": "Có thể quá áp đặt, thiếu kiên nhẫn"
|
| 134 |
-
}
|
| 135 |
}
|
| 136 |
|
| 137 |
class CareerAdvisor:
|
|
@@ -185,7 +90,7 @@ class CareerAdvisor:
|
|
| 185 |
except Exception as e:
|
| 186 |
return f"Đã xảy ra lỗi khi tạo tư vấn: {str(e)}"
|
| 187 |
|
| 188 |
-
def chat_with_advisor(self, message: str, history: List[
|
| 189 |
try:
|
| 190 |
context = f"""
|
| 191 |
{self.system_prompt}
|
|
@@ -198,11 +103,11 @@ class CareerAdvisor:
|
|
| 198 |
"""
|
| 199 |
|
| 200 |
response = model.generate_content(context)
|
| 201 |
-
history.append(
|
| 202 |
-
history.append(
|
| 203 |
return history
|
| 204 |
except Exception as e:
|
| 205 |
-
history.append(
|
| 206 |
return history
|
| 207 |
|
| 208 |
def create_interface():
|
|
@@ -241,7 +146,9 @@ def create_interface():
|
|
| 241 |
mbti_result = gr.Textbox(label="Kết quả tính cách MBTI của bạn", interactive=False)
|
| 242 |
|
| 243 |
def calculate_mbti_result(*answers):
|
| 244 |
-
|
|
|
|
|
|
|
| 245 |
|
| 246 |
test_submit.click(
|
| 247 |
fn=calculate_mbti_result,
|
|
@@ -334,6 +241,7 @@ def create_interface():
|
|
| 334 |
lines=3
|
| 335 |
)
|
| 336 |
|
|
|
|
| 337 |
clear = gr.Button("🗑️ Xóa lịch sử")
|
| 338 |
|
| 339 |
def respond(message, chat_history):
|
|
@@ -343,7 +251,7 @@ def create_interface():
|
|
| 343 |
def clear_history():
|
| 344 |
return []
|
| 345 |
|
| 346 |
-
|
| 347 |
clear.click(clear_history, None, chatbot)
|
| 348 |
|
| 349 |
# Show/hide tabs based on MBTI knowledge
|
|
|
|
| 36 |
|
| 37 |
# Định nghĩa đầy đủ các kiểu MBTI và đặc điểm nghề nghiệp
|
| 38 |
MBTI_CAREER_TRAITS = {
|
| 39 |
+
# ... (định nghĩa giữ nguyên)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 40 |
}
|
| 41 |
|
| 42 |
class CareerAdvisor:
|
|
|
|
| 90 |
except Exception as e:
|
| 91 |
return f"Đã xảy ra lỗi khi tạo tư vấn: {str(e)}"
|
| 92 |
|
| 93 |
+
def chat_with_advisor(self, message: str, history: List[List[str]]) -> List[List[str]]:
|
| 94 |
try:
|
| 95 |
context = f"""
|
| 96 |
{self.system_prompt}
|
|
|
|
| 103 |
"""
|
| 104 |
|
| 105 |
response = model.generate_content(context)
|
| 106 |
+
history.append(["user", message])
|
| 107 |
+
history.append(["assistant", response.result.text])
|
| 108 |
return history
|
| 109 |
except Exception as e:
|
| 110 |
+
history.append(["assistant", f"Đã xảy ra lỗi: {str(e)}"])
|
| 111 |
return history
|
| 112 |
|
| 113 |
def create_interface():
|
|
|
|
| 146 |
mbti_result = gr.Textbox(label="Kết quả tính cách MBTI của bạn", interactive=False)
|
| 147 |
|
| 148 |
def calculate_mbti_result(*answers):
|
| 149 |
+
mbti_type = advisor.calculate_mbti(answers)
|
| 150 |
+
mbti_info = MBTI_CAREER_TRAITS[mbti_type]
|
| 151 |
+
return f"{mbti_type}\n\nĐặc điểm: {mbti_info['traits']}\nNgành nghề phù hợp: {mbti_info['careers']}"
|
| 152 |
|
| 153 |
test_submit.click(
|
| 154 |
fn=calculate_mbti_result,
|
|
|
|
| 241 |
lines=3
|
| 242 |
)
|
| 243 |
|
| 244 |
+
send_button = gr.Button("Gửi", variant="primary")
|
| 245 |
clear = gr.Button("🗑️ Xóa lịch sử")
|
| 246 |
|
| 247 |
def respond(message, chat_history):
|
|
|
|
| 251 |
def clear_history():
|
| 252 |
return []
|
| 253 |
|
| 254 |
+
send_button.click(respond, [msg, chatbot], [msg, chatbot])
|
| 255 |
clear.click(clear_history, None, chatbot)
|
| 256 |
|
| 257 |
# Show/hide tabs based on MBTI knowledge
|