fix: thêm và sửa các tools của AI

This commit is contained in:
2026-07-22 09:51:27 +07:00
parent 4791bb22d9
commit 108943ae81
7 changed files with 285 additions and 13 deletions
+36 -10
View File
@@ -1,12 +1,24 @@
from fastapi import APIRouter, HTTPException, Depends
import json
from fastapi import APIRouter, HTTPException, Header, Depends
from pydantic import BaseModel
from typing import Optional, List
from typing import Optional, List, Dict, Any
import time
from app.core.auth import decode_token
router = APIRouter()
def _get_user_id(authorization):
if not authorization or not authorization.startswith("Bearer "):
return "anonymous"
token = authorization.split(" ")[1]
payload = decode_token(token)
if not payload:
return "anonymous"
return payload.get("user_id", "anonymous")
# In-memory / per-user AI provider configurations storage dictionary
USER_AI_CONFIGS = {}
USER_PREFERENCES = {}
class AIProviderSetting(BaseModel):
id: str
@@ -21,11 +33,25 @@ class AIProviderSetting(BaseModel):
class SaveAIConfigRequest(BaseModel):
providers: List[AIProviderSetting]
class SavePreferencesRequest(BaseModel):
preferences: Dict[str, Any]
@router.get("/preferences")
async def get_user_preferences(authorization: Optional[str] = Header(None)):
uid = _get_user_id(authorization)
return {"success": True, "preferences": USER_PREFERENCES.get(uid, {})}
@router.post("/preferences")
async def save_user_preferences(req: SavePreferencesRequest, authorization: Optional[str] = Header(None)):
uid = _get_user_id(authorization)
USER_PREFERENCES[uid] = req.preferences
return {"success": True, "message": "Đã lưu cấu hình người dùng."}
@router.get("/config/ai")
async def get_user_ai_config():
"""Fetch user's AI provider configurations."""
if "default_user" not in USER_AI_CONFIGS:
USER_AI_CONFIGS["default_user"] = [
async def get_user_ai_config(authorization: Optional[str] = Header(None)):
uid = _get_user_id(authorization)
if uid not in USER_AI_CONFIGS:
USER_AI_CONFIGS[uid] = [
{
"id": "openai_default",
"name": "OpenAI Official",
@@ -69,13 +95,13 @@ async def get_user_ai_config():
]
return {
"success": True,
"providers": USER_AI_CONFIGS["default_user"]
"providers": USER_AI_CONFIGS[uid]
}
@router.post("/config/ai")
async def save_user_ai_config(req: SaveAIConfigRequest):
"""Save user's AI provider configurations."""
USER_AI_CONFIGS["default_user"] = [p.dict() for p in req.providers]
async def save_user_ai_config(req: SaveAIConfigRequest, authorization: Optional[str] = Header(None)):
uid = _get_user_id(authorization)
USER_AI_CONFIGS[uid] = [p.dict() for p in req.providers]
return {
"success": True,
"message": "Đã lưu cấu hình AI Providers thành công!"