File size: 2,871 Bytes
795bd1e
2e6b95a
795bd1e
 
 
 
4793084
2e6b95a
4793084
795bd1e
 
 
 
 
2e6b95a
 
 
 
d8cf7a3
2e6b95a
795bd1e
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2e6b95a
795bd1e
 
 
 
 
f92b9c9
795bd1e
f7f2c28
2e6b95a
795bd1e
 
2e6b95a
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
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="mistralai/Mistral-7B-Instruct-v0.1")

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
@app.post("/update_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
@app.post("/add_focus_history")
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
@app.get("/get_user_data")
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
@app.post("/ai_personal_advice")
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=300)
    return {"advice": response[0]["generated_text"]}

# Trang chủ
@app.get("/")
async def home():
    return JSONResponse(content={"message": "Welcome to the Recommendation API!"})