rebuild(llm): add audited model connectivity tests

This commit is contained in:
leefer
2026-07-30 10:25:07 +08:00
parent d8f0dd930c
commit 08f69b0641
9 changed files with 197 additions and 8 deletions
@@ -290,6 +290,13 @@ class ModelPoolService:
raise BusinessError("model_not_configured", "智能解读服务尚未配置。")
return ModelRuntimeConfig(primary=primary, fallback=fallback)
def runtime_model(self, model_id: int) -> ModelPoolRecord:
with self._database.read() as connection:
record = self._repository.get(connection, model_id)
if record is None:
raise BusinessError("model_not_found", "模型不存在。")
return record
def decrypt_api_key(self, record: ModelPoolRecord) -> str:
return self._cipher.decrypt(record.encrypted_api_key)
+16
View File
@@ -35,9 +35,12 @@ from backend.features.accounts.schemas import (
ModelInput,
ModelPoolItemResponse,
ModelSelectionInput,
ModelTestResponse,
ModelUpdateInput,
PasswordChangeInput,
)
from backend.http.errors import AppError
from backend.llm.gateway import LLMGatewayError
router = APIRouter()
@@ -312,3 +315,16 @@ def delete_model(
) -> MessageResponse:
request.app.state.container.model_pool.delete(model_id)
return MessageResponse(message="模型已删除。")
@router.post("/admin/models/{model_id}/test", response_model=ModelTestResponse)
def test_model(
request: Request,
model_id: Annotated[int, Path(ge=1)],
principal: AdminWritePrincipal,
) -> dict[str, object]:
try:
return request.app.state.container.llm.test_model(principal, model_id)
except LLMGatewayError as exc:
status = 404 if exc.code == "model_not_found" else 503
raise AppError(exc.code, str(exc), status) from exc
@@ -119,3 +119,10 @@ class ModelPoolItemResponse(BaseModel):
class ModelSelectionInput(BaseModel):
primary_model_id: int = Field(ge=1)
fallback_model_id: int | None = Field(default=None, ge=1)
class ModelTestResponse(BaseModel):
connected: bool
message: str
duration_ms: int = Field(ge=0)
request_id: str