diff --git a/convert/convert_test.go b/convert/convert_test.go index 105fbb3d33..95cccd56e3 100644 --- a/convert/convert_test.go +++ b/convert/convert_test.go @@ -11,14 +11,13 @@ import ( "io" "io/fs" "log/slog" + "maps" "os" "path/filepath" "slices" "strings" "testing" - "golang.org/x/exp/maps" - "github.com/ollama/ollama/fs/ggml" ) @@ -137,9 +136,7 @@ func TestConvertModel(t *testing.T) { t.Fatal(err) } - keys := maps.Keys(expect) - slices.Sort(keys) - for _, k := range keys { + for _, k := range slices.Sorted(maps.Keys(expect)) { if v, ok := actual[k]; !ok { t.Errorf("missing %s", k) } else if v != expect[k] { @@ -343,9 +340,7 @@ func TestConvertAdapter(t *testing.T) { actual := generateResultsJSON(t, r, m.KV(), m.Tensors()) - keys := maps.Keys(c.Expected) - slices.Sort(keys) - for _, k := range keys { + for _, k := range slices.Sorted(maps.Keys(c.Expected)) { if v, ok := actual[k]; !ok { t.Errorf("missing %s", k) } else if v != c.Expected[k] { diff --git a/convert/reader_safetensors.go b/convert/reader_safetensors.go index f58585321e..f182a656cc 100644 --- a/convert/reader_safetensors.go +++ b/convert/reader_safetensors.go @@ -8,12 +8,12 @@ import ( "fmt" "io" "io/fs" + "maps" "slices" "strings" "github.com/d4l3k/go-bfloat16" "github.com/x448/float16" - "golang.org/x/exp/maps" ) type safetensorMetadata struct { @@ -46,8 +46,7 @@ func parseSafetensors(fsys fs.FS, replacer *strings.Replacer, ps ...string) ([]T return nil, err } - keys := maps.Keys(headers) - slices.Sort(keys) + keys := slices.Sorted(maps.Keys(headers)) names := make(map[string]struct{}, len(keys)) diff --git a/convert/tokenizer.go b/convert/tokenizer.go index bedcd4f80a..41d0310a0a 100644 --- a/convert/tokenizer.go +++ b/convert/tokenizer.go @@ -8,11 +8,10 @@ import ( "fmt" "io/fs" "log/slog" + "maps" "os" "slices" "strings" - - "golang.org/x/exp/maps" ) const ( @@ -260,11 +259,8 @@ func parseVocabularyFromTokenizer(fsys fs.FS) (*Vocabulary, error) { tokens[token.ID] = token } - keys := maps.Keys(tokens) - slices.Sort(keys) - v := Vocabulary{Model: "gpt2"} - for _, k := range keys { + for _, k := range slices.Sorted(maps.Keys(tokens)) { token := tokens[k] v.Tokens = append(v.Tokens, token.Content) v.Scores = append(v.Scores, float32(token.ID)) diff --git a/go.mod b/go.mod index ec3f61bbad..46e7f433fd 100644 --- a/go.mod +++ b/go.mod @@ -71,7 +71,7 @@ require ( github.com/ugorji/go/codec v1.2.12 // indirect golang.org/x/arch v0.8.0 // indirect golang.org/x/crypto v0.36.0 - golang.org/x/exp v0.0.0-20250218142911-aa4b98e5adaa + golang.org/x/exp v0.0.0-20250218142911-aa4b98e5adaa // indirect golang.org/x/net v0.38.0 // indirect golang.org/x/sys v0.31.0 golang.org/x/term v0.30.0 diff --git a/template/template.go b/template/template.go index 242708f162..d28ace4137 100644 --- a/template/template.go +++ b/template/template.go @@ -6,6 +6,7 @@ import ( "encoding/json" "errors" "io" + "maps" "math" "slices" "strings" @@ -14,7 +15,6 @@ import ( "text/template/parse" "github.com/agnivade/levenshtein" - "golang.org/x/exp/maps" "github.com/ollama/ollama/api" ) @@ -157,9 +157,7 @@ func (t *Template) Vars() []string { set[strings.ToLower(n)] = struct{}{} } - vars = maps.Keys(set) - slices.Sort(vars) - return vars + return slices.Sorted(maps.Keys(set)) } type Values struct {