160 lines
5.0 KiB
Python
160 lines
5.0 KiB
Python
from typing import Any
|
|
|
|
from fastapi import APIRouter, Depends, Query
|
|
from pydantic import BaseModel
|
|
|
|
from app.core.auth import get_current_admin_user
|
|
import app.services.admin_settings_service as admin_settings_service
|
|
|
|
|
|
router = APIRouter()
|
|
|
|
|
|
class ParameterUpsertRequest(BaseModel):
|
|
param_key: str
|
|
param_name: str
|
|
param_value: str
|
|
value_type: str = "string"
|
|
category: str = "system"
|
|
description: str | None = None
|
|
is_active: bool = True
|
|
|
|
|
|
class LLMModelUpsertRequest(BaseModel):
|
|
model_code: str
|
|
model_name: str
|
|
provider: str | None = None
|
|
endpoint_url: str | None = None
|
|
api_key: str | None = None
|
|
llm_model_name: str
|
|
llm_timeout: int = 120
|
|
llm_temperature: float = 0.7
|
|
llm_top_p: float = 0.9
|
|
llm_max_tokens: int = 2048
|
|
llm_system_prompt: str | None = None
|
|
description: str | None = None
|
|
is_active: bool = True
|
|
is_default: bool = False
|
|
|
|
|
|
class AudioModelUpsertRequest(BaseModel):
|
|
model_code: str
|
|
model_name: str
|
|
audio_scene: str
|
|
provider: str | None = None
|
|
endpoint_url: str | None = None
|
|
api_key: str | None = None
|
|
request_timeout_seconds: int = 300
|
|
extra_config: dict[str, Any] | None = None
|
|
hot_word_group_id: int | None = None
|
|
description: str | None = None
|
|
is_active: bool = True
|
|
is_default: bool = False
|
|
|
|
|
|
class LLMModelTestRequest(LLMModelUpsertRequest):
|
|
test_prompt: str | None = None
|
|
|
|
|
|
class AudioModelTestRequest(AudioModelUpsertRequest):
|
|
test_file_url: str | None = None
|
|
|
|
|
|
@router.get("/admin/parameters")
|
|
async def list_parameters(
|
|
category: str | None = Query(None),
|
|
keyword: str | None = Query(None),
|
|
current_user=Depends(get_current_admin_user),
|
|
):
|
|
return admin_settings_service.list_parameters(category, keyword)
|
|
|
|
|
|
@router.get("/admin/parameters/{param_key}")
|
|
async def get_parameter(param_key: str, current_user=Depends(get_current_admin_user)):
|
|
return admin_settings_service.get_parameter(param_key)
|
|
|
|
|
|
@router.post("/admin/parameters")
|
|
async def create_parameter(request: ParameterUpsertRequest, current_user=Depends(get_current_admin_user)):
|
|
return admin_settings_service.create_parameter(request)
|
|
|
|
|
|
@router.put("/admin/parameters/{param_key}")
|
|
async def update_parameter(
|
|
param_key: str,
|
|
request: ParameterUpsertRequest,
|
|
current_user=Depends(get_current_admin_user),
|
|
):
|
|
return admin_settings_service.update_parameter(param_key, request)
|
|
|
|
|
|
@router.delete("/admin/parameters/{param_key}")
|
|
async def delete_parameter(param_key: str, current_user=Depends(get_current_admin_user)):
|
|
return admin_settings_service.delete_parameter(param_key)
|
|
|
|
|
|
@router.get("/admin/model-configs/llm")
|
|
async def list_llm_model_configs(current_user=Depends(get_current_admin_user)):
|
|
return admin_settings_service.list_llm_model_configs()
|
|
|
|
|
|
@router.post("/admin/model-configs/llm")
|
|
async def create_llm_model_config(request: LLMModelUpsertRequest, current_user=Depends(get_current_admin_user)):
|
|
return admin_settings_service.create_llm_model_config(request)
|
|
|
|
|
|
@router.put("/admin/model-configs/llm/{model_code}")
|
|
async def update_llm_model_config(
|
|
model_code: str,
|
|
request: LLMModelUpsertRequest,
|
|
current_user=Depends(get_current_admin_user),
|
|
):
|
|
return admin_settings_service.update_llm_model_config(model_code, request)
|
|
|
|
|
|
@router.get("/admin/model-configs/audio")
|
|
async def list_audio_model_configs(
|
|
scene: str = Query("all"),
|
|
current_user=Depends(get_current_admin_user),
|
|
):
|
|
return admin_settings_service.list_audio_model_configs(scene)
|
|
|
|
|
|
@router.post("/admin/model-configs/audio")
|
|
async def create_audio_model_config(request: AudioModelUpsertRequest, current_user=Depends(get_current_admin_user)):
|
|
return admin_settings_service.create_audio_model_config(request)
|
|
|
|
|
|
@router.put("/admin/model-configs/audio/{model_code}")
|
|
async def update_audio_model_config(
|
|
model_code: str,
|
|
request: AudioModelUpsertRequest,
|
|
current_user=Depends(get_current_admin_user),
|
|
):
|
|
return admin_settings_service.update_audio_model_config(model_code, request)
|
|
|
|
|
|
@router.delete("/admin/model-configs/llm/{model_code}")
|
|
async def delete_llm_model_config(model_code: str, current_user=Depends(get_current_admin_user)):
|
|
return admin_settings_service.delete_llm_model_config(model_code)
|
|
|
|
|
|
@router.delete("/admin/model-configs/audio/{model_code}")
|
|
async def delete_audio_model_config(model_code: str, current_user=Depends(get_current_admin_user)):
|
|
return admin_settings_service.delete_audio_model_config(model_code)
|
|
|
|
|
|
@router.post("/admin/model-configs/llm/test")
|
|
async def test_llm_model_config(request: LLMModelTestRequest, current_user=Depends(get_current_admin_user)):
|
|
return admin_settings_service.test_llm_model_config(request)
|
|
|
|
|
|
@router.post("/admin/model-configs/audio/test")
|
|
async def test_audio_model_config(request: AudioModelTestRequest, current_user=Depends(get_current_admin_user)):
|
|
return admin_settings_service.test_audio_model_config(request)
|
|
|
|
|
|
@router.get("/system-config/public")
|
|
async def get_public_system_config():
|
|
return admin_settings_service.get_public_system_config()
|