godsastray commited on
Commit
43f4eb8
·
verified ·
1 Parent(s): e29e7eb

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +10 -102
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
- "ISTJ": {
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[Dict[str, str]]) -> List[Dict[str, str]]:
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({"role": "user", "content": message})
202
- history.append({"role": "assistant", "content": response.result.text})
203
  return history
204
  except Exception as e:
205
- history.append({"role": "assistant", "content": f"Đã xảy ra lỗi: {str(e)}"})
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
- return advisor.calculate_mbti(answers)
 
 
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
- msg.submit(respond, [msg, chatbot], [msg, chatbot])
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