VietCat commited on
Commit
4c4c55e
·
1 Parent(s): 014529e

update message

Browse files
Files changed (4) hide show
  1. app/constants.py +29 -1
  2. app/message_processor.py +6 -6
  3. app/reranker.py +7 -7
  4. app/utils.py +23 -2
app/constants.py CHANGED
@@ -118,7 +118,7 @@ VIETNAMESE_STOP_WORDS = {
118
  "mà", "mỗi", "một", "nên", "nếu", "ngay", "như", "nhưng", "những",
119
  "nơi", "nữa", "phải", "qua", "ra", "rằng", "rất", "rồi", "sau", "sẽ",
120
  "thì", "trên", "trước", "từ", "từng", "và", "vẫn", "vào", "vậy", "về",
121
- "vì", "việc", "với", "xong", "phạt", "xử", "xe", "vi phạm"
122
  # ... thêm các từ khác bạn muốn loại bỏ
123
  }
124
 
@@ -156,4 +156,32 @@ SUMMARY_STATUS_MESSAGES = [
156
  "Mình đang chốt lại các điểm chính để trả lời một cách trọn vẹn"
157
  ]
158
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
159
  SHEET_RANGE = 'chat!A2:L'
 
118
  "mà", "mỗi", "một", "nên", "nếu", "ngay", "như", "nhưng", "những",
119
  "nơi", "nữa", "phải", "qua", "ra", "rằng", "rất", "rồi", "sau", "sẽ",
120
  "thì", "trên", "trước", "từ", "từng", "và", "vẫn", "vào", "vậy", "về",
121
+ "vì", "việc", "với", "xong", "phạt", "xử", "xe"
122
  # ... thêm các từ khác bạn muốn loại bỏ
123
  }
124
 
 
156
  "Mình đang chốt lại các điểm chính để trả lời một cách trọn vẹn"
157
  ]
158
 
159
+ # Processing status messages for Facebook notifications when processing/searching
160
+ PROCESSING_STATUS_MESSAGES = [
161
+ "Okie, mình kiểm tra lại thông tin liền nha!",
162
+ "Để mình rà lại chút, xong mình phản hồi ngay.",
163
+ "Mình đang xem lại phần này, xử lý xong báo bạn liền.",
164
+ "Mình check lại một chút cho chắc nhé!",
165
+ "Ok, mình đang xem lại để đảm bảo chính xác.",
166
+ "Mình xem lại thông tin rồi cập nhật bạn ngay.",
167
+ "Để mình xử lý phần này trước đã nhé!",
168
+ "Mình đang kiểm tra lại, sẽ báo liền khi xong.",
169
+ "Ok bạn, để mình coi lại rồi chốt luôn.",
170
+ "Mình đang coi lại nội dung này, có gì mình nói liền."
171
+ ]
172
+
173
+ # Found regulations status messages for Facebook notifications when regulations are found
174
+ FOUND_REGULATIONS_MESSAGES = [
175
+ "Mình có thấy một vài quy định liên quan, đang xác minh lại và sẽ phản hồi sớm.",
176
+ "Tạm thời đã tra được một số quy định, mình đang kiểm tra thêm rồi cập nhật liền nhé.",
177
+ "Mình đang đối chiếu lại thông tin vừa tìm được, sẽ báo bạn ngay khi rõ.",
178
+ "Có một vài chỗ trong quy định mình đang xem lại cho chắc, sẽ phản hồi sớm thôi.",
179
+ "Mình đã tìm thấy một số điểm có liên quan, đang xác thực thêm để phản hồi cụ thể.",
180
+ "Thông tin bước đầu đã có, mình đang kiểm tra thêm rồi gửi lại ngay khi hoàn tất.",
181
+ "Mình đang kiểm tra kỹ hơn những gì vừa tìm được, sẽ gửi bạn sớm nhất có thể.",
182
+ "Một số quy định đang được mình rà lại lần nữa, sẽ phản hồi lại ngay khi rõ ràng.",
183
+ "Mình có dữ liệu sơ bộ rồi, đang xác minh thêm để đảm bảo chính xác trước khi trả lời.",
184
+ "Thông tin đang được mình kiểm tra lại lần cuối, mình sẽ cập nhật sớm nhất nhé."
185
+ ]
186
+
187
  SHEET_RANGE = 'chat!A2:L'
app/message_processor.py CHANGED
@@ -2,8 +2,8 @@ from typing import Dict, Any, List
2
  import asyncio
3
  import traceback
4
  from loguru import logger
5
- import random
6
- from .constants import SUMMARY_STATUS_MESSAGES
7
 
8
  class MessageProcessor:
9
  def __init__(self, channel):
@@ -120,14 +120,14 @@ class MessageProcessor:
120
  return
121
  # Gửi message Facebook, nếu lỗi token expired thì invalidate và thử lại một lần
122
  try:
123
- await self.channel.facebook.send_message(message="Ok, để mình check. Bạn chờ mình chút xíu nhé!")
124
  except Exception as e:
125
  if "expired" in str(e).lower():
126
  logger.warning("[FACEBOOK] Token expired, invalidate and refresh")
127
  self.channel.invalidate_page_token()
128
  page_token = self.channel.get_page_token(force_refresh=True)
129
  self.channel.facebook.update_context(page_id=page_id, page_token=page_token, sender_id=sender_id)
130
- await self.channel.facebook.send_message(message="Ok, để mình check. Bạn chờ mình chút xíu nhé!")
131
  else:
132
  raise
133
 
@@ -256,7 +256,7 @@ class MessageProcessor:
256
  async def format_search_results(self, question: str, matches: List[Dict[str, Any]], page_token: str, sender_id: str) -> str:
257
  if not matches:
258
  return "Không tìm thấy kết quả phù hợp."
259
- await self.channel.facebook.send_message(message=f"... đã tìm thấy một số quy định .....")
260
  try:
261
  reranked = await self.channel.reranker.rerank(question, matches, top_k=5)
262
  if reranked:
@@ -328,7 +328,7 @@ class MessageProcessor:
328
  "\n\nHãy trả lời ngắn gọn, dễ hiểu, trích dẫn rõ ràng thông tin từ các đoạn luật nếu cần."
329
  f"\n\nCâu hỏi của người dùng: {question}\n"
330
  )
331
- await self.channel.facebook.send_message(message=f"... {random.choice(SUMMARY_STATUS_MESSAGES)} ...")
332
  try:
333
  answer = await self.channel.llm.generate_text(prompt)
334
  if answer and answer.strip():
 
2
  import asyncio
3
  import traceback
4
  from loguru import logger
5
+ from .constants import SUMMARY_STATUS_MESSAGES, PROCESSING_STATUS_MESSAGES, FOUND_REGULATIONS_MESSAGES
6
+ from .utils import get_random_message
7
 
8
  class MessageProcessor:
9
  def __init__(self, channel):
 
120
  return
121
  # Gửi message Facebook, nếu lỗi token expired thì invalidate và thử lại một lần
122
  try:
123
+ await self.channel.facebook.send_message(message=get_random_message(PROCESSING_STATUS_MESSAGES))
124
  except Exception as e:
125
  if "expired" in str(e).lower():
126
  logger.warning("[FACEBOOK] Token expired, invalidate and refresh")
127
  self.channel.invalidate_page_token()
128
  page_token = self.channel.get_page_token(force_refresh=True)
129
  self.channel.facebook.update_context(page_id=page_id, page_token=page_token, sender_id=sender_id)
130
+ # await self.channel.facebook.send_message(message="Ok, để mình check. Bạn chờ mình chút xíu nhé!")
131
  else:
132
  raise
133
 
 
256
  async def format_search_results(self, question: str, matches: List[Dict[str, Any]], page_token: str, sender_id: str) -> str:
257
  if not matches:
258
  return "Không tìm thấy kết quả phù hợp."
259
+ await self.channel.facebook.send_message(message=get_random_message(FOUND_REGULATIONS_MESSAGES))
260
  try:
261
  reranked = await self.channel.reranker.rerank(question, matches, top_k=5)
262
  if reranked:
 
328
  "\n\nHãy trả lời ngắn gọn, dễ hiểu, trích dẫn rõ ràng thông tin từ các đoạn luật nếu cần."
329
  f"\n\nCâu hỏi của người dùng: {question}\n"
330
  )
331
+ await self.channel.facebook.send_message(message=f"... {get_random_message(SUMMARY_STATUS_MESSAGES)} ...")
332
  try:
333
  answer = await self.channel.llm.generate_text(prompt)
334
  if answer and answer.strip():
app/reranker.py CHANGED
@@ -3,10 +3,10 @@ from .config import get_settings
3
  from .gemini_client import GeminiClient
4
  from loguru import logger
5
  import asyncio
6
- import random
7
  import hashlib
8
  import time
9
  from .constants import BATCH_STATUS_MESSAGES
 
10
 
11
  class Reranker:
12
  def __init__(self, facebook_client=None):
@@ -245,12 +245,12 @@ class Reranker:
245
  scored.append(doc)
246
 
247
  # Gửi Facebook message sau khi hoàn thành
248
- # if self.facebook_client:
249
- # try:
250
- # message = random.choice(BATCH_STATUS_MESSAGES)
251
- # await self.facebook_client.send_message(message=f"... {message} ...")
252
- # except Exception as e:
253
- # logger.error(f"[RERANK][FACEBOOK] Error sending batch message: {e}")
254
 
255
  # Sort theo score và trả về top_k
256
  scored = sorted(scored, key=lambda x: x['rerank_score'], reverse=True)
 
3
  from .gemini_client import GeminiClient
4
  from loguru import logger
5
  import asyncio
 
6
  import hashlib
7
  import time
8
  from .constants import BATCH_STATUS_MESSAGES
9
+ from .utils import get_random_message
10
 
11
  class Reranker:
12
  def __init__(self, facebook_client=None):
 
245
  scored.append(doc)
246
 
247
  # Gửi Facebook message sau khi hoàn thành
248
+ if self.facebook_client:
249
+ try:
250
+ message = get_random_message(BATCH_STATUS_MESSAGES)
251
+ await self.facebook_client.send_message(message=f"... {message} ...")
252
+ except Exception as e:
253
+ logger.error(f"[RERANK][FACEBOOK] Error sending batch message: {e}")
254
 
255
  # Sort theo score và trả về top_k
256
  scored = sorted(scored, key=lambda x: x['rerank_score'], reverse=True)
app/utils.py CHANGED
@@ -1,7 +1,8 @@
1
  import time
 
2
  from functools import wraps
3
  from loguru import logger
4
- from typing import Any, Callable
5
  import os
6
  import asyncio
7
  import httpx
@@ -136,4 +137,24 @@ async def call_endpoint_with_retry(client, url, payload, max_retries=3, base_tim
136
  raise
137
  except Exception as e:
138
  logger.error(f"Other error: {e}")
139
- raise
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  import time
2
+ import random
3
  from functools import wraps
4
  from loguru import logger
5
+ from typing import Any, Callable, List
6
  import os
7
  import asyncio
8
  import httpx
 
137
  raise
138
  except Exception as e:
139
  logger.error(f"Other error: {e}")
140
+ raise
141
+
142
+ def get_random_message(message_list: List[str]) -> str:
143
+ """
144
+ Lấy ngẫu nhiên một message từ danh sách messages.
145
+
146
+ Args:
147
+ message_list (List[str]): Danh sách các messages có sẵn
148
+
149
+ Returns:
150
+ str: Message được chọn ngẫu nhiên, hoặc message mặc định nếu danh sách rỗng
151
+
152
+ Example:
153
+ >>> messages = ["Message 1", "Message 2", "Message 3"]
154
+ >>> get_random_message(messages)
155
+ "Message 2" # hoặc message khác ngẫu nhiên
156
+ """
157
+ if not message_list:
158
+ return "Đang xử lý..."
159
+
160
+ return random.choice(message_list)