diff --git a/parser/parser.go b/parser/parser.go index d5df479a5..6832351fb 100644 --- a/parser/parser.go +++ b/parser/parser.go @@ -62,7 +62,13 @@ func (f Modelfile) CreateRequest(relativeDir string) (*api.CreateRequest, error) return nil, err } - req.Files = digestMap + if req.Files == nil { + req.Files = digestMap + } else { + for k, v := range digestMap { + req.Files[k] = v + } + } case "adapter": path, err := expandPath(c.Args, relativeDir) if err != nil { diff --git a/parser/parser_test.go b/parser/parser_test.go index 429bdc64b..eb52ee679 100644 --- a/parser/parser_test.go +++ b/parser/parser_test.go @@ -793,15 +793,20 @@ func createBinFile(t *testing.T, kv map[string]any, ti []llm.Tensor) (string, st } func TestCreateRequestFiles(t *testing.T) { - name, digest := createBinFile(t, nil, nil) + n1, d1 := createBinFile(t, nil, nil) + n2, d2 := createBinFile(t, map[string]any{"foo": "bar"}, nil) cases := []struct { input string expected *api.CreateRequest }{ { - fmt.Sprintf("FROM %s", name), - &api.CreateRequest{Files: map[string]string{name: digest}}, + fmt.Sprintf("FROM %s", n1), + &api.CreateRequest{Files: map[string]string{n1: d1}}, + }, + { + fmt.Sprintf("FROM %s\nFROM %s", n1, n2), + &api.CreateRequest{Files: map[string]string{n1: d1, n2: d2}}, }, }