From 12209bd02158ee570d9113aaef75182243293220 Mon Sep 17 00:00:00 2001 From: Roy Han Date: Wed, 12 Jun 2024 14:43:17 -0700 Subject: [PATCH] Remove Latest at API Level --- api/types.go | 2 -- cmd/cmd.go | 6 +++--- server/routes.go | 13 +++++++++---- server/routes_list_test.go | 4 ++-- server/routes_test.go | 2 +- 5 files changed, 15 insertions(+), 12 deletions(-) diff --git a/api/types.go b/api/types.go index caf2ad702..bc0296183 100644 --- a/api/types.go +++ b/api/types.go @@ -293,7 +293,6 @@ type ProcessResponse struct { // ListModelResponse is a single model description in [ListResponse]. type ListModelResponse struct { Name string `json:"name"` - Model string `json:"model"` ModifiedAt time.Time `json:"modified_at"` Size int64 `json:"size"` Digest string `json:"digest"` @@ -302,7 +301,6 @@ type ListModelResponse struct { // ProcessModelResponse is a single model description in [ProcessResponse]. type ProcessModelResponse struct { - Name string `json:"name"` Model string `json:"model"` Size int64 `json:"size"` Digest string `json:"digest"` diff --git a/cmd/cmd.go b/cmd/cmd.go index 862797f8c..18db6eeec 100644 --- a/cmd/cmd.go +++ b/cmd/cmd.go @@ -493,7 +493,7 @@ func ListHandler(cmd *cobra.Command, args []string) error { for _, m := range models.Models { if len(args) == 0 || strings.HasPrefix(m.Name, args[0]) { - data = append(data, []string{m.Name[:len(m.Name)-7], m.Digest[:12], format.HumanBytes(m.Size), format.HumanTime(m.ModifiedAt, "Never")}) + data = append(data, []string{m.Name[:len(m.Name)], m.Digest[:12], format.HumanBytes(m.Size), format.HumanTime(m.ModifiedAt, "Never")}) } } @@ -525,7 +525,7 @@ func ListRunningHandler(cmd *cobra.Command, args []string) error { var data [][]string for _, m := range models.Models { - if len(args) == 0 || strings.HasPrefix(m.Name, args[0]) { + if len(args) == 0 || strings.HasPrefix(m.Model, args[0]) { var procStr string switch { case m.SizeVRAM == 0: @@ -539,7 +539,7 @@ func ListRunningHandler(cmd *cobra.Command, args []string) error { cpuPercent := math.Round(float64(sizeCPU) / float64(m.Size) * 100) procStr = fmt.Sprintf("%d%%/%d%% CPU/GPU", int(cpuPercent), int(100-cpuPercent)) } - data = append(data, []string{m.Name, m.Digest[:12], format.HumanBytes(m.Size), procStr, format.HumanTime(m.ExpiresAt, "Never")}) + data = append(data, []string{m.Model, m.Digest[:12], format.HumanBytes(m.Size), procStr, format.HumanTime(m.ExpiresAt, "Never")}) } } diff --git a/server/routes.go b/server/routes.go index 188fe9748..f947368b4 100644 --- a/server/routes.go +++ b/server/routes.go @@ -747,8 +747,7 @@ func (s *Server) ListModelsHandler(c *gin.Context) { // tag should never be masked models = append(models, api.ListModelResponse{ - Model: n.DisplayShortest(), - Name: n.DisplayShortest(), + Name: trimLatest(n.DisplayShortest()), Size: m.Size(), Digest: m.digest, ModifiedAt: m.fi.ModTime(), @@ -1156,8 +1155,7 @@ func (s *Server) ProcessHandler(c *gin.Context) { } mr := api.ProcessModelResponse{ - Model: model.ShortName, - Name: model.ShortName, + Model: trimLatest(model.ShortName), Size: int64(v.estimatedTotal), SizeVRAM: int64(v.estimatedVRAM), Digest: model.Digest, @@ -1178,6 +1176,13 @@ func (s *Server) ProcessHandler(c *gin.Context) { c.JSON(http.StatusOK, api.ProcessResponse{Models: models}) } +func trimLatest(s string) string { + if strings.HasSuffix(s, ":latest") { + return s[:len(s)-7] + } + return s +} + // ChatPrompt builds up a prompt from a series of messages for the currently `loaded` model func chatPrompt(ctx context.Context, runner *runnerRef, template string, messages []api.Message, numCtx int) (string, error) { encode := func(s string) ([]int, error) { diff --git a/server/routes_list_test.go b/server/routes_list_test.go index 97bf8b8f5..ce3bf99c8 100644 --- a/server/routes_list_test.go +++ b/server/routes_list_test.go @@ -16,12 +16,12 @@ func TestList(t *testing.T) { expectNames := []string{ "mistral:7b-instruct-q4_0", "zephyr:7b-beta-q5_K_M", - "apple/OpenELM:latest", + "apple/OpenELM", "boreas:2b-code-v1.5-q6_K", "notus:7b-v1-IQ2_S", // TODO: host:port currently fails on windows (#4107) // "localhost:5000/library/eurus:700b-v0.5-iq3_XXS", - "mynamespace/apeliotes:latest", + "mynamespace/apeliotes", "myhost/mynamespace/lips:code", } diff --git a/server/routes_test.go b/server/routes_test.go index 4e9cfc2ab..aeab1caa3 100644 --- a/server/routes_test.go +++ b/server/routes_test.go @@ -123,7 +123,7 @@ func Test_Routes(t *testing.T) { require.NoError(t, err) assert.Len(t, modelList.Models, 1) - assert.Equal(t, "test-model:latest", modelList.Models[0].Name) + assert.Equal(t, "test-model", modelList.Models[0].Name) }, }, {