Descriptive arg error messages and other fixes

This commit is contained in:
Roy Han 2024-06-06 17:24:14 -07:00
parent cdbda76fa9
commit ebbaa8b513
3 changed files with 40 additions and 46 deletions

View File

@ -232,14 +232,14 @@ type ShowRequest struct {
// ShowResponse is the response returned from [Client.Show].
type ShowResponse struct {
License string `json:"license,omitempty"`
Modelfile string `json:"modelfile,omitempty"`
Parameters string `json:"parameters,omitempty"`
Template string `json:"template,omitempty"`
System string `json:"system,omitempty"`
Details ModelDetails `json:"details,omitempty"`
Messages []Message `json:"messages,omitempty"`
ModelInfo json.RawMessage `json:"model_info,omitempty"`
License string `json:"license,omitempty"`
Modelfile string `json:"modelfile,omitempty"`
Parameters string `json:"parameters,omitempty"`
Template string `json:"template,omitempty"`
System string `json:"system,omitempty"`
Details ModelDetails `json:"details,omitempty"`
Messages []Message `json:"messages,omitempty"`
ModelInfo map[string]any `json:"model_info,omitempty"`
}
// CopyRequest is the request passed to [Client.Copy].

View File

@ -579,8 +579,10 @@ func ShowHandler(cmd *cobra.Command, args []string) error {
return err
}
if len(args) != 1 {
if len(args) == 0 {
return errors.New("missing model name")
} else if len(args) > 1 {
return errors.New("only one model name can be specified")
}
license, errLicense := cmd.Flags().GetBool("license")
@ -623,29 +625,30 @@ func ShowHandler(cmd *cobra.Command, args []string) error {
showType = "template"
}
if flagsSet > 1 {
return errors.New("only one of '--license', '--modelfile', '--parameters', '--system', or '--template' can be specified")
} else if flagsSet == 0 {
switch flagsSet {
case 0:
return errors.New("one of '--license', '--modelfile', '--parameters', '--system', or '--template' must be specified")
}
case 1:
req := api.ShowRequest{Name: args[0]}
resp, err := client.Show(cmd.Context(), &req)
if err != nil {
return err
}
req := api.ShowRequest{Name: args[0]}
resp, err := client.Show(cmd.Context(), &req)
if err != nil {
return err
}
switch showType {
case "license":
fmt.Println(resp.License)
case "modelfile":
fmt.Println(resp.Modelfile)
case "parameters":
fmt.Println(resp.Parameters)
case "system":
fmt.Println(resp.System)
case "template":
fmt.Println(resp.Template)
switch showType {
case "license":
fmt.Println(resp.License)
case "modelfile":
fmt.Println(resp.Modelfile)
case "parameters":
fmt.Println(resp.Parameters)
case "system":
fmt.Println(resp.System)
case "template":
fmt.Println(resp.Template)
}
default:
return errors.New("only one of '--license', '--modelfile', '--parameters', '--system', or '--template' can be specified")
}
return nil
@ -1122,7 +1125,6 @@ func NewCLI() *cobra.Command {
showCmd := &cobra.Command{
Use: "show MODEL",
Short: "Show information for a model",
Args: cobra.ExactArgs(1),
PreRunE: checkServerHeartbeat,
RunE: ShowHandler,
}

View File

@ -729,38 +729,30 @@ func GetModelInfo(req api.ShowRequest) (*api.ShowResponse, error) {
return resp, nil
}
func getGGMLData(model *Model) ([]byte, error) {
func getGGMLData(model *Model) (llm.KV, error) {
f, err := os.Open(model.ModelPath)
if err != nil {
return nil, err
}
defer f.Close()
ggml, _, err := llm.DecodeGGML(f)
if err != nil {
return nil, err
}
f.Close()
kv := ggml.KV()
for k := range kv {
switch v := kv[k].(type) {
case []interface{}:
if len(v) > 5 {
kv[k] = []string{}
}
if t, ok := kv[k].([]any); ok {
kv[k] = fmt.Sprintf("(%d items)", len(t))
}
}
kv["embedding_model"] = model.IsEmbedding()
// kv["embedding_model"] = model.IsEmbedding()
ggmlJson, err := json.Marshal(kv)
if err != nil {
return nil, err
}
return ggmlJson, nil
return kv, nil
}
func (s *Server) ListModelsHandler(c *gin.Context) {