From 4f02ba4cf4d0c10b1d8d8364db0c535d4859a388 Mon Sep 17 00:00:00 2001 From: Jin Hai Date: Tue, 23 Jun 2026 19:29:06 +0800 Subject: [PATCH] Go: show model and list all models (#16272) ### What problem does this PR solve? ``` RAGFlow(admin)> show model 'abc'; +------------+----------------------------------------------------------------+ | field | value | +------------+----------------------------------------------------------------+ | command | get_model_by_model_name | | error | 'get model by model name' is implemented in enterprise edition | | model_name | abc | +------------+----------------------------------------------------------------+ RAGFlow(admin)> list models; +-----------------+--------------------------------------------------------+ | command | error | +-----------------+--------------------------------------------------------+ | list_all_models | 'list all models' is implemented in enterprise edition | +-----------------+--------------------------------------------------------+ ``` ### Type of change - [x] Refactoring Signed-off-by: Jin Hai --- internal/admin/enterprise_handler.go | 99 +++++++++++++++------------- internal/admin/handler.go | 18 ++--- internal/admin/router.go | 9 ++- internal/cli/admin_command.go | 58 ++++++++-------- internal/cli/common_command.go | 10 +-- internal/common/format.go | 4 +- 6 files changed, 104 insertions(+), 94 deletions(-) diff --git a/internal/admin/enterprise_handler.go b/internal/admin/enterprise_handler.go index 3e9572cc07..5e9b8b7b74 100644 --- a/internal/admin/enterprise_handler.go +++ b/internal/admin/enterprise_handler.go @@ -410,7 +410,7 @@ func (h *Handler) ListModels(c *gin.Context) { }) } -func (h *Handler) ShowModel(c *gin.Context) { +func (h *Handler) ShowProviderModel(c *gin.Context) { providerName := c.Param("provider_name") if providerName == "" { c.JSON(http.StatusBadRequest, gin.H{ @@ -876,39 +876,46 @@ func (h *Handler) DeleteModels(c *gin.Context) { success(c, result, "Model deleted successfully") } -type ListModelsOrShowModelRequest struct { - ModelName string `json:"model_name"` +func (h *Handler) ListAllModels(c *gin.Context) { + // List models + models, err := h.service.ListAllModels() + if err != nil { + errorResponse(c, err.Error(), 500) + return + } + + success(c, models, "") } -func (h *Handler) ListModelsOrShowModel(c *gin.Context) { - var req ListModelsOrShowModelRequest - if err := c.ShouldBindJSON(&req); err != nil { +func (h *Handler) ShowModel(c *gin.Context) { + encodedModelName := c.Param("model_name") + if encodedModelName == "" { c.JSON(http.StatusBadRequest, gin.H{ "code": 400, - "message": "Invalid request body", + "message": "Encoded model name is empty", }) return } - if req.ModelName == "" { - // List models - models, err := h.service.ListAllModels() - if err != nil { - errorResponse(c, err.Error(), 500) - return - } - - success(c, models, "") - } else { - // Get model - model, err := h.service.GetModelByModelName(req.ModelName) - if err != nil { - errorResponse(c, err.Error(), 500) - return - } - - success(c, model, "") + decodedModelName, err := common.DecodeFromBase64(encodedModelName) + if err != nil { + errorResponse(c, err.Error(), 400) + return } + if decodedModelName == "" { + errorResponse(c, "Decoded model name is empty", 400) + return + } + + // Get model + model, err := h.service.GetModelByModelName(decodedModelName) + if err != nil { + errorResponse(c, err.Error(), 500) + return + } + + success(c, model, "") + } // GetSystemFingerprint handle get system fingerprint @@ -1035,7 +1042,7 @@ func (h *Handler) ShowUserDatasetSummary(c *gin.Context) { } encodedUsername := c.Param("username") - username, err := common.DecodeEmail(encodedUsername) + username, err := common.DecodeFromBase64(encodedUsername) if err != nil { errorResponse(c, err.Error(), 400) return @@ -1061,7 +1068,7 @@ func (h *Handler) ShowUserDatasetSummary(c *gin.Context) { // ShowUserSummary handle show user summary func (h *Handler) ShowUserSummary(c *gin.Context) { encodedUsername := c.Param("username") - username, err := common.DecodeEmail(encodedUsername) + username, err := common.DecodeFromBase64(encodedUsername) if err != nil { errorResponse(c, err.Error(), 400) return @@ -1087,7 +1094,7 @@ func (h *Handler) ShowUserSummary(c *gin.Context) { // ShowUserStorage handle show user storage func (h *Handler) ShowUserStorage(c *gin.Context) { encodedUsername := c.Param("username") - username, err := common.DecodeEmail(encodedUsername) + username, err := common.DecodeFromBase64(encodedUsername) if err != nil { errorResponse(c, err.Error(), 400) return @@ -1113,7 +1120,7 @@ func (h *Handler) ShowUserStorage(c *gin.Context) { // ShowUserQuota handle show user quota func (h *Handler) ShowUserQuota(c *gin.Context) { encodedUsername := c.Param("username") - username, err := common.DecodeEmail(encodedUsername) + username, err := common.DecodeFromBase64(encodedUsername) if err != nil { errorResponse(c, err.Error(), 400) return @@ -1139,7 +1146,7 @@ func (h *Handler) ShowUserQuota(c *gin.Context) { // ShowUserIndex handle show user index func (h *Handler) ShowUserIndex(c *gin.Context) { encodedUsername := c.Param("username") - username, err := common.DecodeEmail(encodedUsername) + username, err := common.DecodeFromBase64(encodedUsername) if err != nil { errorResponse(c, err.Error(), 400) return @@ -1170,7 +1177,7 @@ type UpdateUserRoleHTTPRequest struct { // UpdateUserRole handle update user role func (h *Handler) UpdateUserRole(c *gin.Context) { encodedUsername := c.Param("username") - username, err := common.DecodeEmail(encodedUsername) + username, err := common.DecodeFromBase64(encodedUsername) if err != nil { errorResponse(c, err.Error(), 400) return @@ -1198,7 +1205,7 @@ func (h *Handler) UpdateUserRole(c *gin.Context) { // ShowUserPermission handle show user permission func (h *Handler) ShowUserPermission(c *gin.Context) { encodedUsername := c.Param("username") - username, err := common.DecodeEmail(encodedUsername) + username, err := common.DecodeFromBase64(encodedUsername) if err != nil { errorResponse(c, err.Error(), 400) return @@ -1220,7 +1227,7 @@ func (h *Handler) ShowUserPermission(c *gin.Context) { // ListUserDatasets handle show user datasets func (h *Handler) ListUserDatasets(c *gin.Context) { encodedUsername := c.Param("username") - username, err := common.DecodeEmail(encodedUsername) + username, err := common.DecodeFromBase64(encodedUsername) if err != nil { errorResponse(c, err.Error(), 400) return @@ -1242,7 +1249,7 @@ func (h *Handler) ListUserDatasets(c *gin.Context) { // ListUserAgents handle show user agents func (h *Handler) ListUserAgents(c *gin.Context) { encodedUsername := c.Param("username") - username, err := common.DecodeEmail(encodedUsername) + username, err := common.DecodeFromBase64(encodedUsername) if err != nil { errorResponse(c, err.Error(), 400) return @@ -1264,7 +1271,7 @@ func (h *Handler) ListUserAgents(c *gin.Context) { // ListUserChats handle show user chats func (h *Handler) ListUserChats(c *gin.Context) { encodedUsername := c.Param("username") - username, err := common.DecodeEmail(encodedUsername) + username, err := common.DecodeFromBase64(encodedUsername) if err != nil { errorResponse(c, err.Error(), 400) return @@ -1286,7 +1293,7 @@ func (h *Handler) ListUserChats(c *gin.Context) { // ListUserSearches handle show user searches func (h *Handler) ListUserSearches(c *gin.Context) { encodedUsername := c.Param("username") - username, err := common.DecodeEmail(encodedUsername) + username, err := common.DecodeFromBase64(encodedUsername) if err != nil { errorResponse(c, err.Error(), 400) return @@ -1308,7 +1315,7 @@ func (h *Handler) ListUserSearches(c *gin.Context) { // ListUserModels handle show user models func (h *Handler) ListUserModels(c *gin.Context) { encodedUsername := c.Param("username") - username, err := common.DecodeEmail(encodedUsername) + username, err := common.DecodeFromBase64(encodedUsername) if err != nil { errorResponse(c, err.Error(), 400) return @@ -1330,7 +1337,7 @@ func (h *Handler) ListUserModels(c *gin.Context) { // ListUserFiles handle show user files func (h *Handler) ListUserFiles(c *gin.Context) { encodedUsername := c.Param("username") - username, err := common.DecodeEmail(encodedUsername) + username, err := common.DecodeFromBase64(encodedUsername) if err != nil { errorResponse(c, err.Error(), 400) return @@ -1352,7 +1359,7 @@ func (h *Handler) ListUserFiles(c *gin.Context) { // ListUserProviders handle show user providers func (h *Handler) ListUserProviders(c *gin.Context) { encodedUsername := c.Param("username") - username, err := common.DecodeEmail(encodedUsername) + username, err := common.DecodeFromBase64(encodedUsername) if err != nil { errorResponse(c, err.Error(), 400) return @@ -1374,7 +1381,7 @@ func (h *Handler) ListUserProviders(c *gin.Context) { // ListUserProviderInstances handle show user provider instances func (h *Handler) ListUserProviderInstances(c *gin.Context) { encodedUsername := c.Param("username") - userName, err := common.DecodeEmail(encodedUsername) + userName, err := common.DecodeFromBase64(encodedUsername) if err != nil { errorResponse(c, err.Error(), 400) return @@ -1402,7 +1409,7 @@ func (h *Handler) ListUserProviderInstances(c *gin.Context) { // ListUserProviderInstanceModels handle show user provider instance models func (h *Handler) ListUserProviderInstanceModels(c *gin.Context) { encodedUsername := c.Param("username") - userName, err := common.DecodeEmail(encodedUsername) + userName, err := common.DecodeFromBase64(encodedUsername) if err != nil { errorResponse(c, err.Error(), 400) return @@ -1436,7 +1443,7 @@ func (h *Handler) ListUserProviderInstanceModels(c *gin.Context) { // ListUserDefaultModels handle show user default models func (h *Handler) ListUserDefaultModels(c *gin.Context) { encodedUsername := c.Param("username") - userName, err := common.DecodeEmail(encodedUsername) + userName, err := common.DecodeFromBase64(encodedUsername) if err != nil { errorResponse(c, err.Error(), 400) return @@ -1875,7 +1882,7 @@ func (h *Handler) PurgeUserData(c *gin.Context) { return } encodedUsername := c.Param("username") - username, err := common.DecodeEmail(encodedUsername) + username, err := common.DecodeFromBase64(encodedUsername) if err != nil { errorResponse(c, err.Error(), 400) return @@ -1933,7 +1940,7 @@ func (h *Handler) PurgeUsersData(c *gin.Context) { // GenerateUserAPIKey handle create tenant API key func (h *Handler) GenerateUserAPIKey(c *gin.Context) { encodedUsername := c.Param("username") - username, err := common.DecodeEmail(encodedUsername) + username, err := common.DecodeFromBase64(encodedUsername) if err != nil { errorResponse(c, err.Error(), 400) return @@ -1951,7 +1958,7 @@ func (h *Handler) GenerateUserAPIKey(c *gin.Context) { // DeleteUserAPIKey handle delete user API key func (h *Handler) DeleteUserAPIKey(c *gin.Context) { encodedUsername := c.Param("username") - username, err := common.DecodeEmail(encodedUsername) + username, err := common.DecodeFromBase64(encodedUsername) if err != nil { errorResponse(c, err.Error(), 400) return @@ -1974,7 +1981,7 @@ func (h *Handler) DeleteUserAPIKey(c *gin.Context) { // ListUserAPIKeys handle list user API keys func (h *Handler) ListUserAPIKeys(c *gin.Context) { encodedUsername := c.Param("username") - username, err := common.DecodeEmail(encodedUsername) + username, err := common.DecodeFromBase64(encodedUsername) if err != nil { errorResponse(c, err.Error(), 400) return diff --git a/internal/admin/handler.go b/internal/admin/handler.go index 6e9ceaedf2..c311310da6 100644 --- a/internal/admin/handler.go +++ b/internal/admin/handler.go @@ -295,7 +295,7 @@ func (h *Handler) CreateUser(c *gin.Context) { // GetUser handle get user func (h *Handler) GetUser(c *gin.Context) { encodedUsername := c.Param("username") - username, err := common.DecodeEmail(encodedUsername) + username, err := common.DecodeFromBase64(encodedUsername) if err != nil { errorResponse(c, err.Error(), 400) return @@ -321,7 +321,7 @@ func (h *Handler) GetUser(c *gin.Context) { // DeleteUser handle delete user func (h *Handler) DeleteUser(c *gin.Context) { encodedUsername := c.Param("username") - username, err := common.DecodeEmail(encodedUsername) + username, err := common.DecodeFromBase64(encodedUsername) if err != nil { errorResponse(c, err.Error(), 400) return @@ -353,7 +353,7 @@ type ChangePasswordHTTPRequest struct { // ChangePassword handle change password func (h *Handler) ChangePassword(c *gin.Context) { encodedUsername := c.Param("username") - username, err := common.DecodeEmail(encodedUsername) + username, err := common.DecodeFromBase64(encodedUsername) if err != nil { errorResponse(c, err.Error(), 400) return @@ -385,7 +385,7 @@ type UpdateActivateStatusHTTPRequest struct { // UpdateUserActivateStatus handle update user activate status func (h *Handler) UpdateUserActivateStatus(c *gin.Context) { encodedUsername := c.Param("username") - username, err := common.DecodeEmail(encodedUsername) + username, err := common.DecodeFromBase64(encodedUsername) if err != nil { errorResponse(c, err.Error(), 400) return @@ -418,7 +418,7 @@ func (h *Handler) UpdateUserActivateStatus(c *gin.Context) { // GrantAdmin handle grant admin role func (h *Handler) GrantAdmin(c *gin.Context) { encodedUsername := c.Param("username") - username, err := common.DecodeEmail(encodedUsername) + username, err := common.DecodeFromBase64(encodedUsername) if err != nil { errorResponse(c, err.Error(), 400) return @@ -446,7 +446,7 @@ func (h *Handler) GrantAdmin(c *gin.Context) { // RevokeAdmin handle revoke admin role func (h *Handler) RevokeAdmin(c *gin.Context) { encodedUsername := c.Param("username") - username, err := common.DecodeEmail(encodedUsername) + username, err := common.DecodeFromBase64(encodedUsername) if err != nil { errorResponse(c, err.Error(), 400) return @@ -474,7 +474,7 @@ func (h *Handler) RevokeAdmin(c *gin.Context) { // ListUserAPITokens handle get user API keys func (h *Handler) ListUserAPITokens(c *gin.Context) { encodedUsername := c.Param("username") - username, err := common.DecodeEmail(encodedUsername) + username, err := common.DecodeFromBase64(encodedUsername) if err != nil { errorResponse(c, err.Error(), 400) return @@ -496,7 +496,7 @@ func (h *Handler) ListUserAPITokens(c *gin.Context) { // GenerateUserAPIToken handle generate user API key func (h *Handler) GenerateUserAPIToken(c *gin.Context) { encodedUsername := c.Param("username") - username, err := common.DecodeEmail(encodedUsername) + username, err := common.DecodeFromBase64(encodedUsername) if err != nil { errorResponse(c, err.Error(), 400) return @@ -518,7 +518,7 @@ func (h *Handler) GenerateUserAPIToken(c *gin.Context) { // DeleteUserAPIToken handle delete user API key func (h *Handler) DeleteUserAPIToken(c *gin.Context) { encodedUsername := c.Param("username") - username, err := common.DecodeEmail(encodedUsername) + username, err := common.DecodeFromBase64(encodedUsername) if err != nil { errorResponse(c, err.Error(), 400) return diff --git a/internal/admin/router.go b/internal/admin/router.go index e7de27eaee..d803d505cc 100644 --- a/internal/admin/router.go +++ b/internal/admin/router.go @@ -180,22 +180,25 @@ func (r *Router) Setup(engine *gin.Engine) { provider.GET("/:provider_name", r.handler.ShowProvider) provider.DELETE("/", r.handler.DeleteModelProvider) provider.GET("/:provider_name/models", r.handler.ListModels) - provider.GET("/:provider_name/models/:model_name", r.handler.ShowModel) + provider.GET("/:provider_name/models/:model_name", r.handler.ShowProviderModel) + provider.POST("/:provider_name/instances", r.handler.AddModelInstance) provider.GET("/:provider_name/instances", r.handler.ListModelInstances) + provider.DELETE("/:provider_name/instances", r.handler.DeleteModelInstance) provider.GET("/:provider_name/instances/:instance_name", r.handler.ShowProviderInstance) provider.GET("/:provider_name/instances/:instance_name/balance", r.handler.ShowProviderInstanceBalance) provider.GET("/:provider_name/instances/:instance_name/connection", r.handler.CheckInstanceConnection) provider.POST("/:provider_name/connection", r.handler.CheckProviderConnection) provider.PUT("/:provider_name/instances/:instance_name", r.handler.AlterProviderInstance) - provider.DELETE("/:provider_name/instances", r.handler.DeleteModelInstance) + provider.GET("/:provider_name/instances/:instance_name/models", r.handler.ListInstanceModels) provider.PATCH("/:provider_name/instances/:instance_name/models/*model_name", r.handler.EnableOrDisableModel) provider.POST("/:provider_name/instances/:instance_name/models", r.handler.AddModels) provider.DELETE("/:provider_name/instances/:instance_name/models", r.handler.DeleteModels) } - protected.GET("/all-models", r.handler.ListModelsOrShowModel) + protected.GET("/all-models", r.handler.ListAllModels) + protected.GET("/all-models/:model_name", r.handler.ShowModel) // License protected.GET("/system/fingerprint", r.handler.GetSystemFingerprint) diff --git a/internal/cli/admin_command.go b/internal/cli/admin_command.go index 2d763d52f8..90307c5be1 100644 --- a/internal/cli/admin_command.go +++ b/internal/cli/admin_command.go @@ -306,7 +306,7 @@ func (c *CLI) AdminGrantUserAdminCommand(cmd *Command) (ResponseIf, error) { return nil, fmt.Errorf("user_name not provided") } - encodedUserName := common.EncodeEmail(userName) + encodedUserName := common.EncodeToBase64(userName) apiURL := fmt.Sprintf("/admin/users/%s/admin", encodedUserName) resp, err := c.AdminServerClient.Request("PUT", apiURL, "admin", nil, nil) @@ -342,7 +342,7 @@ func (c *CLI) AdminRevokeUserAdminCommand(cmd *Command) (ResponseIf, error) { return nil, fmt.Errorf("user_name not provided") } - encodedUserName := common.EncodeEmail(userName) + encodedUserName := common.EncodeToBase64(userName) apiURL := fmt.Sprintf("/admin/users/%s/admin", encodedUserName) resp, err := c.AdminServerClient.Request("DELETE", apiURL, "admin", nil, nil) @@ -567,7 +567,7 @@ func (c *CLI) AdminCreateUserAPIKeyCommand(cmd *Command) (ResponseIf, error) { return nil, fmt.Errorf("user_name not provided") } - encodedUserName := common.EncodeEmail(userName) + encodedUserName := common.EncodeToBase64(userName) apiURL := fmt.Sprintf("/admin/users/%s/keys", encodedUserName) @@ -622,7 +622,7 @@ func (c *CLI) AdminActivateUser(cmd *Command) (ResponseIf, error) { "activate_status": activateStatus, } - encodedUserName := common.EncodeEmail(userName) + encodedUserName := common.EncodeToBase64(userName) apiURL := fmt.Sprintf("/admin/users/%s/activate", encodedUserName) resp, err := c.AdminServerClient.Request("PUT", apiURL, "admin", nil, payload) @@ -678,7 +678,7 @@ func (c *CLI) AdminAlterUserPassword(cmd *Command) (ResponseIf, error) { "new_password": encryptedPassword, } - encodedUserName := common.EncodeEmail(userName) + encodedUserName := common.EncodeToBase64(userName) apiURL := fmt.Sprintf("/admin/users/%s/password", encodedUserName) resp, err := c.AdminServerClient.Request("PUT", apiURL, "admin", nil, payload) @@ -1226,7 +1226,7 @@ func (c *CLI) AdminDropUserCommand(cmd *Command) (ResponseIf, error) { return nil, fmt.Errorf("user_name not provided") } - encodedUserName := common.EncodeEmail(userName) + encodedUserName := common.EncodeToBase64(userName) apiURL := fmt.Sprintf("/admin/users/%s", encodedUserName) resp, err := c.AdminServerClient.Request("DELETE", apiURL, "admin", nil, nil) @@ -1267,7 +1267,7 @@ func (c *CLI) AdminDropUserAPIKeyCommand(cmd *Command) (ResponseIf, error) { return nil, fmt.Errorf("api_key not provided") } - encodedUserName := common.EncodeEmail(userName) + encodedUserName := common.EncodeToBase64(userName) apiURL := fmt.Sprintf("/admin/users/%s/keys/%s", encodedUserName, apiKey) resp, err := c.AdminServerClient.Request("DELETE", apiURL, "admin", nil, nil) @@ -1310,7 +1310,7 @@ func (c *CLI) ListUserDatasets(cmd *Command) (ResponseIf, error) { iterations = val } - encodedUserName := common.EncodeEmail(userName) + encodedUserName := common.EncodeToBase64(userName) apiURL := fmt.Sprintf("/admin/users/%s/datasets", encodedUserName) if iterations > 1 { @@ -1361,7 +1361,7 @@ func (c *CLI) ShowUserPermission(cmd *Command) (ResponseIf, error) { return nil, fmt.Errorf("user_name not provided") } - encodedUserName := common.EncodeEmail(userName) + encodedUserName := common.EncodeToBase64(userName) apiURL := fmt.Sprintf("/admin/users/%s/permission", encodedUserName) resp, err := c.AdminServerClient.Request("GET", apiURL, "admin", nil, nil) @@ -1815,7 +1815,7 @@ func (c *CLI) AdminShowUserCommand(cmd *Command) (ResponseIf, error) { return nil, fmt.Errorf("user_name not provided") } - encodedUserName := common.EncodeEmail(userName) + encodedUserName := common.EncodeToBase64(userName) apiURL := fmt.Sprintf("/admin/users/%s", encodedUserName) resp, err := c.AdminServerClient.Request("GET", apiURL, "admin", nil, nil) @@ -1925,7 +1925,7 @@ func (c *CLI) AdminShowUserActivityCommand(cmd *Command) (ResponseIf, error) { "email": email, } - encodedUserName := common.EncodeEmail(email) + encodedUserName := common.EncodeToBase64(email) apiURL := fmt.Sprintf("/admin/users/%s/activity", encodedUserName) resp, err := c.AdminServerClient.Request("GET", apiURL, "admin", nil, payload) @@ -1960,7 +1960,7 @@ func (c *CLI) AdminShowUserSummaryCommand(cmd *Command) (ResponseIf, error) { return nil, fmt.Errorf("user_name not provided") } - encodedUserName := common.EncodeEmail(userName) + encodedUserName := common.EncodeToBase64(userName) apiURL := fmt.Sprintf("/admin/users/%s/summary", encodedUserName) resp, err := c.AdminServerClient.Request("GET", apiURL, "admin", nil, nil) @@ -2005,7 +2005,7 @@ func (c *CLI) AdminShowUserDatasetCommand(cmd *Command) (ResponseIf, error) { "dataset": dataset, } - encodedUserName := common.EncodeEmail(email) + encodedUserName := common.EncodeToBase64(email) apiURL := fmt.Sprintf("/admin/users/%s/dataset", encodedUserName) resp, err := c.AdminServerClient.Request("GET", apiURL, "admin", nil, payload) @@ -2041,7 +2041,7 @@ func (c *CLI) AdminShowUserStorageCommand(cmd *Command) (ResponseIf, error) { return nil, fmt.Errorf("user_name not provided") } - encodedUserName := common.EncodeEmail(email) + encodedUserName := common.EncodeToBase64(email) apiURL := fmt.Sprintf("/admin/users/%s/storage", encodedUserName) resp, err := c.AdminServerClient.Request("GET", apiURL, "admin", nil, nil) @@ -2077,7 +2077,7 @@ func (c *CLI) AdminShowUserQuotaCommand(cmd *Command) (ResponseIf, error) { return nil, fmt.Errorf("user_name not provided") } - encodedUserName := common.EncodeEmail(email) + encodedUserName := common.EncodeToBase64(email) apiURL := fmt.Sprintf("/admin/users/%s/quota", encodedUserName) resp, err := c.AdminServerClient.Request("GET", apiURL, "admin", nil, nil) @@ -2113,7 +2113,7 @@ func (c *CLI) AdminShowUserIndexCommand(cmd *Command) (ResponseIf, error) { return nil, fmt.Errorf("user_name not provided") } - encodedUserName := common.EncodeEmail(email) + encodedUserName := common.EncodeToBase64(email) apiURL := fmt.Sprintf("/admin/users/%s/index", encodedUserName) resp, err := c.AdminServerClient.Request("GET", apiURL, "admin", nil, nil) @@ -2149,7 +2149,7 @@ func (c *CLI) AdminShowUserPermissionCommand(cmd *Command) (ResponseIf, error) { return nil, fmt.Errorf("user_name not provided") } - encodedUserName := common.EncodeEmail(email) + encodedUserName := common.EncodeToBase64(email) apiURL := fmt.Sprintf("/admin/users/%s/permission", encodedUserName) resp, err := c.AdminServerClient.Request("GET", apiURL, "admin", nil, nil) @@ -2600,7 +2600,7 @@ func (c *CLI) AdminPurgeUserCommand(cmd *Command) (ResponseIf, error) { "preview": preview, } - encodedUserName := common.EncodeEmail(userName) + encodedUserName := common.EncodeToBase64(userName) apiURL := fmt.Sprintf("/admin/users/%s/data", encodedUserName) resp, err := c.AdminServerClient.Request("DELETE", apiURL, "admin", nil, payload) @@ -2745,7 +2745,7 @@ func (c *CLI) AdminListUserDatasetsCommand(cmd *Command) (ResponseIf, error) { return nil, fmt.Errorf("user_name not provided") } - encodedUserName := common.EncodeEmail(userName) + encodedUserName := common.EncodeToBase64(userName) apiURL := fmt.Sprintf("/admin/users/%s/datasets", encodedUserName) resp, err := c.AdminServerClient.Request("GET", apiURL, "admin", nil, nil) @@ -2780,7 +2780,7 @@ func (c *CLI) AdminListUserAgentsCommand(cmd *Command) (ResponseIf, error) { return nil, fmt.Errorf("user_name not provided") } - encodedUserName := common.EncodeEmail(userName) + encodedUserName := common.EncodeToBase64(userName) apiURL := fmt.Sprintf("/admin/users/%s/agents", encodedUserName) resp, err := c.AdminServerClient.Request("GET", apiURL, "admin", nil, nil) @@ -2815,7 +2815,7 @@ func (c *CLI) AdminListUserChatsCommand(cmd *Command) (ResponseIf, error) { return nil, fmt.Errorf("user_name not provided") } - encodedUserName := common.EncodeEmail(userName) + encodedUserName := common.EncodeToBase64(userName) apiURL := fmt.Sprintf("/admin/users/%s/chats", encodedUserName) resp, err := c.AdminServerClient.Request("GET", apiURL, "admin", nil, nil) @@ -2850,7 +2850,7 @@ func (c *CLI) AdminListUserSearchesCommand(cmd *Command) (ResponseIf, error) { return nil, fmt.Errorf("user_name not provided") } - encodedUserName := common.EncodeEmail(userName) + encodedUserName := common.EncodeToBase64(userName) apiURL := fmt.Sprintf("/admin/users/%s/searches", encodedUserName) resp, err := c.AdminServerClient.Request("GET", apiURL, "admin", nil, nil) @@ -2885,7 +2885,7 @@ func (c *CLI) AdminListUserModelsCommand(cmd *Command) (ResponseIf, error) { return nil, fmt.Errorf("user_name not provided") } - encodedUserName := common.EncodeEmail(userName) + encodedUserName := common.EncodeToBase64(userName) apiURL := fmt.Sprintf("/admin/users/%s/models", encodedUserName) resp, err := c.AdminServerClient.Request("GET", apiURL, "admin", nil, nil) @@ -2920,7 +2920,7 @@ func (c *CLI) AdminListUserFilesCommand(cmd *Command) (ResponseIf, error) { return nil, fmt.Errorf("user_name not provided") } - encodedUserName := common.EncodeEmail(userName) + encodedUserName := common.EncodeToBase64(userName) apiURL := fmt.Sprintf("/admin/users/%s/files", encodedUserName) resp, err := c.AdminServerClient.Request("GET", apiURL, "admin", nil, nil) @@ -2956,7 +2956,7 @@ func (c *CLI) AdminListUserKeysCommand(cmd *Command) (ResponseIf, error) { return nil, fmt.Errorf("user_name not provided") } - encodedUserName := common.EncodeEmail(userName) + encodedUserName := common.EncodeToBase64(userName) apiURL := fmt.Sprintf("/admin/users/%s/keys", encodedUserName) resp, err := c.AdminServerClient.Request("GET", apiURL, "admin", nil, nil) @@ -3001,7 +3001,7 @@ func (c *CLI) AdminListUserProvidersCommand(cmd *Command) (ResponseIf, error) { return nil, fmt.Errorf("user_name not provided") } - encodedUserName := common.EncodeEmail(userName) + encodedUserName := common.EncodeToBase64(userName) apiURL := fmt.Sprintf("/admin/users/%s/providers", encodedUserName) resp, err := c.AdminServerClient.Request("GET", apiURL, "admin", nil, nil) @@ -3042,7 +3042,7 @@ func (c *CLI) AdminListUserProviderInstancesCommand(cmd *Command) (ResponseIf, e return nil, fmt.Errorf("provider_name not provided") } - encodedUserName := common.EncodeEmail(userName) + encodedUserName := common.EncodeToBase64(userName) apiURL := fmt.Sprintf("/admin/users/%s/providers/%s/instances", encodedUserName, providerName) resp, err := c.AdminServerClient.Request("GET", apiURL, "admin", nil, nil) @@ -3086,7 +3086,7 @@ func (c *CLI) AdminListUserProviderInstanceModelsCommand(cmd *Command) (Response return nil, fmt.Errorf("instance_name not provided") } - encodedUserName := common.EncodeEmail(userName) + encodedUserName := common.EncodeToBase64(userName) apiURL := fmt.Sprintf("/admin/users/%s/providers/%s/instances/%s/models", encodedUserName, providerName, instanceName) resp, err := c.AdminServerClient.Request("GET", apiURL, "admin", nil, nil) @@ -3122,7 +3122,7 @@ func (c *CLI) AdminListUserDefaultModelsCommand(cmd *Command) (ResponseIf, error return nil, fmt.Errorf("user_name not provided") } - encodedUserName := common.EncodeEmail(userName) + encodedUserName := common.EncodeToBase64(userName) apiURL := fmt.Sprintf("/admin/users/%s/default-models", encodedUserName) resp, err := c.AdminServerClient.Request("GET", apiURL, "admin", nil, nil) diff --git a/internal/cli/common_command.go b/internal/cli/common_command.go index 879fbf9dc1..63abeab168 100644 --- a/internal/cli/common_command.go +++ b/internal/cli/common_command.go @@ -1429,20 +1429,20 @@ func (c *CLI) CommonShowModel(cmd *Command) (ResponseIf, error) { return nil, fmt.Errorf("model_name not provided") } - payload := map[string]interface{}{ - "model_name": modelName, - } + encodedModelName := common.EncodeToBase64(modelName) var resp *Response var err error var httpClient *HTTPClient switch c.Config.CLIMode { case AdminMode: + baseURL := fmt.Sprintf("/admin/all-models/%s", encodedModelName) httpClient = c.AdminServerClient - resp, err = httpClient.Request("GET", "/admin/all-models", "web", nil, payload) + resp, err = httpClient.Request("GET", baseURL, "web", nil, nil) case APIMode: + baseURL := fmt.Sprintf("/all-models/%s", encodedModelName) httpClient = c.APIServerClientMap[c.Config.APIClientConfig.CurrentAPIServer] - resp, err = httpClient.Request("GET", "/all-models", "web", nil, payload) + resp, err = httpClient.Request("GET", baseURL, "web", nil, nil) default: return nil, fmt.Errorf("invalid server type") } diff --git a/internal/common/format.go b/internal/common/format.go index 095d1747dc..8059b685e3 100644 --- a/internal/common/format.go +++ b/internal/common/format.go @@ -74,11 +74,11 @@ func ExtractCompositeName(modelName string) (string, string, string, error) { return parts[0], parts[1], parts[2], nil } -func EncodeEmail(email string) string { +func EncodeToBase64(email string) string { return base64.StdEncoding.EncodeToString([]byte(email)) } -func DecodeEmail(encoded string) (string, error) { +func DecodeFromBase64(encoded string) (string, error) { decoded, err := base64.StdEncoding.DecodeString(encoded) if err != nil { return "", err