Spaces:
Sleeping
Sleeping
| from fastapi import FastAPI | |
| from fastapi.responses import JSONResponse | |
| import firebase_admin | |
| from firebase_admin import credentials, firestore | |
| from transformers import pipeline | |
| from pydantic import BaseModel | |
| import os | |
| from huggingface_hub import login | |
| # Load Firebase | |
| cred = credentials.Certificate("firebase_config.json") | |
| firebase_admin.initialize_app(cred) | |
| db = firestore.client() | |
| # Đăng nhập vào Hugging Face (nếu cần) | |
| HF_TOKEN = os.getenv("HF_TOKEN") | |
| if HF_TOKEN: | |
| login(HF_TOKEN) | |
| # Load AI Model | |
| ai_model = pipeline("text-generation", model="google/flan-t5-base") | |
| app = FastAPI() | |
| # Request Models | |
| class UpdateBiosRequest(BaseModel): | |
| user_id: str | |
| bios: str | |
| class FocusHistoryRequest(BaseModel): | |
| user_id: str | |
| time_start: str | |
| total_time: int | |
| class AIRequest(BaseModel): | |
| user_id: str | |
| # API cập nhật bios | |
| async def update_bios(request: UpdateBiosRequest): | |
| user_ref = db.collection("user_profiles").document(request.user_id) | |
| user_ref.set({"bios": request.bios}, merge=True) | |
| return {"message": "Cập nhật bios thành công"} | |
| # API thêm lịch sử focus | |
| async def add_focus_history(request: FocusHistoryRequest): | |
| user_ref = db.collection("user_profiles").document(request.user_id) | |
| user_doc = user_ref.get() | |
| data = user_doc.to_dict() or {} | |
| focus_history = data.get("focus_history", []) | |
| focus_history.append({"time_start": request.time_start, "total_time": request.total_time}) | |
| user_ref.set({"focus_history": focus_history}, merge=True) | |
| return {"message": "Thêm lịch sử focus thành công"} | |
| # API lấy dữ liệu người dùng | |
| async def get_user_data(user_id: str): | |
| user_doc = db.collection("user_profiles").document(user_id).get() | |
| data = user_doc.to_dict() or {} | |
| return { | |
| "bios": data.get("bios", "Chưa có bios."), | |
| "focus_history": data.get("focus_history", []) | |
| } | |
| # API AI tư vấn | |
| async def ai_personal_advice(request: AIRequest): | |
| user_doc = db.collection("user_profiles").document(request.user_id).get() | |
| data = user_doc.to_dict() or {} | |
| bios = data.get("bios", "Chưa có bios.") | |
| focus_history = data.get("focus_history", []) | |
| focus_text = "\n".join([f"- {f['time_start']}: {f['total_time']} phút" for f in focus_history]) | |
| prompt = f""" | |
| Thông tin người dùng: | |
| - Bios: {bios} | |
| - Lịch sử focus: | |
| {focus_text} | |
| Hãy tư vấn cách cải thiện hiệu suất làm việc dựa trên thông tin trên. | |
| """ | |
| response = ai_model(prompt, max_length=200) | |
| return {"advice": response[0]["generated_text"]} | |
| # Trang chủ | |
| async def home(): | |
| return JSONResponse(content={"message": "Welcome to the Recommendation API!"}) | |