from functools import lru_cache from fastapi import Depends, Request from typing_extensions import Annotated from app.dto.user import UserDTO from app.ner.services.ner import NER, get_ner_model class UserService: def __init__(self, model: NER): self.model = model async def get_user(self, user_id: str = None) -> UserDTO: """ Lấy thông tin người dùng từ cơ sở dữ liệu dựa trên user_id. Args: user_id (str): ID của người dùng. Returns: dict: Thông tin người dùng nếu tìm thấy, ngược lại trả về None. """ # if not user_id: # return None # user = await FutaClinet.find_user_by_id(user_id) # if user: # return user # return None user = UserDTO( user_name="Đại", phone_number="0987654321", email="vdai234@gmail.com" ) return user async def extract_user_name(self, text: str) -> str: """ Trích xuất tên người dùng từ văn bản sử dụng mô hình NER. Args: text (str): Văn bản đầu vào. Returns: str: Tên người dùng được trích xuất. """ if not self.model: raise ValueError("Model not loaded. Please call load_model() first.") pred = await self.model.predict(text, entity_tag="PERSON") if pred: return pred[0] return None