Skip to content

Commit

Permalink
add model details to tags endpoint
Browse files Browse the repository at this point in the history
  • Loading branch information
pdevine committed Dec 11, 2023
1 parent 6dedc26 commit 3cbc2e0
Show file tree
Hide file tree
Showing 3 changed files with 34 additions and 14 deletions.
11 changes: 6 additions & 5 deletions api/types.go
Expand Up @@ -192,10 +192,11 @@ type ListResponse struct {
}

type ModelResponse struct {
Name string `json:"name"`
ModifiedAt time.Time `json:"modified_at"`
Size int64 `json:"size"`
Digest string `json:"digest"`
Name string `json:"name"`
ModifiedAt time.Time `json:"modified_at"`
Size int64 `json:"size"`
Digest string `json:"digest"`
Details ModelDetails `json:"details,omitempty"`
}

type TokenResponse struct {
Expand All @@ -217,7 +218,7 @@ type ModelDetails struct {
Format string `json:"format"`
Family string `json:"family"`
Families []string `json:"families"`
Type string `json:"type"`
ParameterSize string `json:"parameter_size"`
QuantizationLevel string `json:"quantization_level"`
}

Expand Down
2 changes: 2 additions & 0 deletions server/images.go
Expand Up @@ -46,6 +46,7 @@ type Model struct {
System string
License []string
Digest string
Size int64
Options map[string]interface{}
}

Expand Down Expand Up @@ -242,6 +243,7 @@ func GetModel(name string) (*Model, error) {
Digest: digest,
Template: "{{ .Prompt }}",
License: []string{},
Size: manifest.GetTotalSize(),
}

filename, err := GetBlobsPath(manifest.Config.Digest)
Expand Down
35 changes: 26 additions & 9 deletions server/routes.go
Expand Up @@ -619,7 +619,7 @@ func GetModelInfo(name string) (*api.ShowResponse, error) {
Format: model.Config.ModelFormat,
Family: model.Config.ModelFamily,
Families: model.Config.ModelFamilies,
Type: model.Config.ModelType,
ParameterSize: model.Config.ModelType,
QuantizationLevel: model.Config.FileType,
}

Expand Down Expand Up @@ -677,25 +677,42 @@ func ListModelsHandler(c *gin.Context) {
return
}

modelResponse := func(modelName string) (api.ModelResponse, error) {
model, err := GetModel(modelName)
if err != nil {
return api.ModelResponse{}, err
}

modelDetails := api.ModelDetails{
Format: model.Config.ModelFormat,
Family: model.Config.ModelFamily,
Families: model.Config.ModelFamilies,
ParameterSize: model.Config.ModelType,
QuantizationLevel: model.Config.FileType,
}

return api.ModelResponse{
Name: model.ShortName,
Size: model.Size,
Digest: model.Digest,
Details: modelDetails,
}, nil
}

walkFunc := func(path string, info os.FileInfo, _ error) error {
if !info.IsDir() {
dir, file := filepath.Split(path)
dir = strings.Trim(strings.TrimPrefix(dir, fp), string(os.PathSeparator))
tag := strings.Join([]string{dir, file}, ":")

mp := ParseModelPath(tag)
manifest, digest, err := GetManifest(mp)
resp, err := modelResponse(tag)
if err != nil {
log.Printf("skipping file: %s", fp)
return nil
}

models = append(models, api.ModelResponse{
Name: mp.GetShortTagname(),
Size: manifest.GetTotalSize(),
Digest: digest,
ModifiedAt: info.ModTime(),
})
resp.ModifiedAt = info.ModTime()
models = append(models, resp)
}

return nil
Expand Down

0 comments on commit 3cbc2e0

Please sign in to comment.