fix: thêm và sửa các tools của AI
This commit is contained in:
+36
-10
@@ -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!"
|
||||
|
||||
Reference in New Issue
Block a user