From 84946e92756af9e465d39a8657de263c82a2683b Mon Sep 17 00:00:00 2001 From: Ettore Di Giacinto Date: Thu, 8 Jun 2023 21:33:18 +0200 Subject: [PATCH 01/22] feat: display download progress when installing models (#543) --- api/gallery.go | 54 +++++++++++++++++++++++++------ pkg/gallery/models.go | 66 +++++++++++++++++++++++++++++--------- pkg/gallery/models_test.go | 8 ++--- 3 files changed, 99 insertions(+), 29 deletions(-) diff --git a/api/gallery.go b/api/gallery.go index b5b74b0d..a9a87220 100644 --- a/api/gallery.go +++ b/api/gallery.go @@ -10,10 +10,12 @@ import ( "os" "strings" "sync" + "time" "github.com/go-skynet/LocalAI/pkg/gallery" "github.com/gofiber/fiber/v2" "github.com/google/uuid" + "github.com/rs/zerolog/log" "gopkg.in/yaml.v3" ) @@ -23,9 +25,12 @@ type galleryOp struct { } type galleryOpStatus struct { - Error error `json:"error"` - Processed bool `json:"processed"` - Message string `json:"message"` + Error error `json:"error"` + Processed bool `json:"processed"` + Message string `json:"message"` + Progress float64 `json:"progress"` + TotalFileSize string `json:"file_size"` + DownloadedFileSize string `json:"downloaded_size"` } type galleryApplier struct { @@ -43,7 +48,7 @@ func newGalleryApplier(modelPath string) *galleryApplier { } } -func applyGallery(modelPath string, req ApplyGalleryModelRequest, cm *ConfigMerger) error { +func applyGallery(modelPath string, req ApplyGalleryModelRequest, cm *ConfigMerger, downloadStatus func(string, string, string, float64)) error { url, err := req.DecodeURL() if err != nil { return err @@ -71,7 +76,7 @@ func applyGallery(modelPath string, req ApplyGalleryModelRequest, cm *ConfigMerg config.Files = append(config.Files, req.AdditionalFiles...) - if err := gallery.Apply(modelPath, req.Name, &config, req.Overrides); err != nil { + if err := gallery.Apply(modelPath, req.Name, &config, req.Overrides, downloadStatus); err != nil { return err } @@ -99,23 +104,51 @@ func (g *galleryApplier) start(c context.Context, cm *ConfigMerger) { case <-c.Done(): return case op := <-g.C: - g.updatestatus(op.id, &galleryOpStatus{Message: "processing"}) + g.updatestatus(op.id, &galleryOpStatus{Message: "processing", Progress: 0}) updateError := func(e error) { g.updatestatus(op.id, &galleryOpStatus{Error: e, Processed: true}) } - if err := applyGallery(g.modelPath, op.req, cm); err != nil { + if err := applyGallery(g.modelPath, op.req, cm, func(fileName string, current string, total string, percentage float64) { + g.updatestatus(op.id, &galleryOpStatus{Message: "processing", Progress: percentage, TotalFileSize: total, DownloadedFileSize: current}) + displayDownload(fileName, current, total, percentage) + }); err != nil { updateError(err) continue } - g.updatestatus(op.id, &galleryOpStatus{Processed: true, Message: "completed"}) + g.updatestatus(op.id, &galleryOpStatus{Processed: true, Message: "completed", Progress: 100}) } } }() } +var lastProgress time.Time = time.Now() +var startTime time.Time = time.Now() + +func displayDownload(fileName string, current string, total string, percentage float64) { + currentTime := time.Now() + + if currentTime.Sub(lastProgress) >= 5*time.Second { + + lastProgress = currentTime + + // calculate ETA based on percentage and elapsed time + var eta time.Duration + if percentage > 0 { + elapsed := currentTime.Sub(startTime) + eta = time.Duration(float64(elapsed)*(100/percentage) - float64(elapsed)) + } + + if total != "" { + log.Debug().Msgf("Downloading %s: %s/%s (%.2f%%) ETA: %s", fileName, current, total, percentage, eta) + } else { + log.Debug().Msgf("Downloading: %s", current) + } + } +} + func ApplyGalleryFromFile(modelPath, s string, cm *ConfigMerger) error { dat, err := os.ReadFile(s) if err != nil { @@ -128,13 +161,14 @@ func ApplyGalleryFromFile(modelPath, s string, cm *ConfigMerger) error { } for _, r := range requests { - if err := applyGallery(modelPath, r, cm); err != nil { + if err := applyGallery(modelPath, r, cm, displayDownload); err != nil { return err } } return nil } + func ApplyGalleryFromString(modelPath, s string, cm *ConfigMerger) error { var requests []ApplyGalleryModelRequest err := json.Unmarshal([]byte(s), &requests) @@ -143,7 +177,7 @@ func ApplyGalleryFromString(modelPath, s string, cm *ConfigMerger) error { } for _, r := range requests { - if err := applyGallery(modelPath, r, cm); err != nil { + if err := applyGallery(modelPath, r, cm, displayDownload); err != nil { return err } } diff --git a/pkg/gallery/models.go b/pkg/gallery/models.go index f4f86ae7..14a7d6ac 100644 --- a/pkg/gallery/models.go +++ b/pkg/gallery/models.go @@ -3,10 +3,12 @@ package gallery import ( "crypto/sha256" "fmt" + "hash" "io" "net/http" "os" "path/filepath" + "strconv" "github.com/imdario/mergo" "github.com/rs/zerolog/log" @@ -93,7 +95,7 @@ func verifyPath(path, basePath string) error { return inTrustedRoot(c, basePath) } -func Apply(basePath, nameOverride string, config *Config, configOverrides map[string]interface{}) error { +func Apply(basePath, nameOverride string, config *Config, configOverrides map[string]interface{}, downloadStatus func(string, string, string, float64)) error { // Create base path if it doesn't exist err := os.MkdirAll(basePath, 0755) if err != nil { @@ -168,27 +170,25 @@ func Apply(basePath, nameOverride string, config *Config, configOverrides map[st } defer outFile.Close() + progress := &progressWriter{ + fileName: file.Filename, + total: resp.ContentLength, + hash: sha256.New(), + downloadStatus: downloadStatus, + } + _, err = io.Copy(io.MultiWriter(outFile, progress), resp.Body) + if err != nil { + return fmt.Errorf("failed to write file %q: %v", file.Filename, err) + } + if file.SHA256 != "" { - log.Debug().Msgf("Download and verifying %q", file.Filename) - - // Write file content and calculate SHA - hash := sha256.New() - _, err = io.Copy(io.MultiWriter(outFile, hash), resp.Body) - if err != nil { - return fmt.Errorf("failed to write file %q: %v", file.Filename, err) - } - // Verify SHA - calculatedSHA := fmt.Sprintf("%x", hash.Sum(nil)) + calculatedSHA := fmt.Sprintf("%x", progress.hash.Sum(nil)) if calculatedSHA != file.SHA256 { return fmt.Errorf("SHA mismatch for file %q ( calculated: %s != metadata: %s )", file.Filename, calculatedSHA, file.SHA256) } } else { log.Debug().Msgf("SHA missing for %q. Skipping validation", file.Filename) - _, err = io.Copy(outFile, resp.Body) - if err != nil { - return fmt.Errorf("failed to write file %q: %v", file.Filename, err) - } } log.Debug().Msgf("File %q downloaded and verified", file.Filename) @@ -255,6 +255,42 @@ func Apply(basePath, nameOverride string, config *Config, configOverrides map[st return nil } +type progressWriter struct { + fileName string + total int64 + written int64 + downloadStatus func(string, string, string, float64) + hash hash.Hash +} + +func (pw *progressWriter) Write(p []byte) (n int, err error) { + n, err = pw.hash.Write(p) + pw.written += int64(n) + + if pw.total > 0 { + percentage := float64(pw.written) / float64(pw.total) * 100 + //log.Debug().Msgf("Downloading %s: %s/%s (%.2f%%)", pw.fileName, formatBytes(pw.written), formatBytes(pw.total), percentage) + pw.downloadStatus(pw.fileName, formatBytes(pw.written), formatBytes(pw.total), percentage) + } else { + pw.downloadStatus(pw.fileName, formatBytes(pw.written), "", 0) + } + + return +} + +func formatBytes(bytes int64) string { + const unit = 1024 + if bytes < unit { + return strconv.FormatInt(bytes, 10) + " B" + } + div, exp := int64(unit), 0 + for n := bytes / unit; n >= unit; n /= unit { + div *= unit + exp++ + } + return fmt.Sprintf("%.1f %ciB", float64(bytes)/float64(div), "KMGTPE"[exp]) +} + func calculateSHA(filePath string) (string, error) { file, err := os.Open(filePath) if err != nil { diff --git a/pkg/gallery/models_test.go b/pkg/gallery/models_test.go index f0e580e9..343bf6ab 100644 --- a/pkg/gallery/models_test.go +++ b/pkg/gallery/models_test.go @@ -19,7 +19,7 @@ var _ = Describe("Model test", func() { c, err := ReadConfigFile(filepath.Join(os.Getenv("FIXTURES"), "gallery_simple.yaml")) Expect(err).ToNot(HaveOccurred()) - err = Apply(tempdir, "", c, map[string]interface{}{}) + err = Apply(tempdir, "", c, map[string]interface{}{}, func(string, string, string, float64) {}) Expect(err).ToNot(HaveOccurred()) for _, f := range []string{"cerebras", "cerebras-completion.tmpl", "cerebras-chat.tmpl", "cerebras.yaml"} { @@ -45,7 +45,7 @@ var _ = Describe("Model test", func() { c, err := ReadConfigFile(filepath.Join(os.Getenv("FIXTURES"), "gallery_simple.yaml")) Expect(err).ToNot(HaveOccurred()) - err = Apply(tempdir, "foo", c, map[string]interface{}{}) + err = Apply(tempdir, "foo", c, map[string]interface{}{}, func(string, string, string, float64) {}) Expect(err).ToNot(HaveOccurred()) for _, f := range []string{"cerebras", "cerebras-completion.tmpl", "cerebras-chat.tmpl", "foo.yaml"} { @@ -61,7 +61,7 @@ var _ = Describe("Model test", func() { c, err := ReadConfigFile(filepath.Join(os.Getenv("FIXTURES"), "gallery_simple.yaml")) Expect(err).ToNot(HaveOccurred()) - err = Apply(tempdir, "foo", c, map[string]interface{}{"backend": "foo"}) + err = Apply(tempdir, "foo", c, map[string]interface{}{"backend": "foo"}, func(string, string, string, float64) {}) Expect(err).ToNot(HaveOccurred()) for _, f := range []string{"cerebras", "cerebras-completion.tmpl", "cerebras-chat.tmpl", "foo.yaml"} { @@ -87,7 +87,7 @@ var _ = Describe("Model test", func() { c, err := ReadConfigFile(filepath.Join(os.Getenv("FIXTURES"), "gallery_simple.yaml")) Expect(err).ToNot(HaveOccurred()) - err = Apply(tempdir, "../../../foo", c, map[string]interface{}{}) + err = Apply(tempdir, "../../../foo", c, map[string]interface{}{}, func(string, string, string, float64) {}) Expect(err).To(HaveOccurred()) }) }) From 8532ce200290b3c696c7ab27d619592a44c7be5e Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 8 Jun 2023 21:33:32 +0200 Subject: [PATCH 02/22] fix(deps): update module github.com/sashabaranov/go-openai to v1.10.1 (#544) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/go.mod b/go.mod index 58d84bb9..0ad60433 100644 --- a/go.mod +++ b/go.mod @@ -20,7 +20,7 @@ require ( github.com/onsi/gomega v1.27.8 github.com/otiai10/openaigo v1.1.0 github.com/rs/zerolog v1.29.1 - github.com/sashabaranov/go-openai v1.10.0 + github.com/sashabaranov/go-openai v1.10.1 github.com/swaggo/swag v1.16.1 github.com/tmc/langchaingo v0.0.0-20230605114752-4afed6d7be4a github.com/urfave/cli/v2 v2.25.5 diff --git a/go.sum b/go.sum index e1dab1f9..283a8b8b 100644 --- a/go.sum +++ b/go.sum @@ -116,11 +116,14 @@ github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/sashabaranov/go-openai v1.10.0 h1:uUD3EOKDdGa6geMVbe2Trj9/ckF9sCV5jpQM19f7GM8= github.com/sashabaranov/go-openai v1.10.0/go.mod h1:lj5b/K+zjTSFxVLijLSTDZuP7adOgerWeFyZLUhAKRg= +github.com/sashabaranov/go-openai v1.10.1 h1:6WyHJaNzF266VaEEuW6R4YW+Ei0wpMnqRYPGK7fhuhQ= +github.com/sashabaranov/go-openai v1.10.1/go.mod h1:lj5b/K+zjTSFxVLijLSTDZuP7adOgerWeFyZLUhAKRg= github.com/savsgio/dictpool v0.0.0-20221023140959-7bf2e61cea94 h1:rmMl4fXJhKMNWl+K+r/fq4FbbKI+Ia2m9hYBLm2h4G4= github.com/savsgio/dictpool v0.0.0-20221023140959-7bf2e61cea94/go.mod h1:90zrgN3D/WJsDd1iXHT96alCoN2KJo6/4x1DZC3wZs8= github.com/savsgio/gotils v0.0.0-20220530130905-52f3993e8d6d/go.mod h1:Gy+0tqhJvgGlqnTF8CVGP0AaGRjwBtXs/a5PA0Y3+A4= github.com/savsgio/gotils v0.0.0-20230208104028-c358bd845dee h1:8Iv5m6xEo1NR1AvpV+7XmhI4r39LGNzwUL4YpMuL5vk= github.com/savsgio/gotils v0.0.0-20230208104028-c358bd845dee/go.mod h1:qwtSXrKuJh/zsFQ12yEE89xfCrGKK63Rr7ctU/uCo4g= +github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= From 806e4c3a630eed240665f57526c9d247a074e0f1 Mon Sep 17 00:00:00 2001 From: "ci-robbot [bot]" <105103991+ci-robbot@users.noreply.github.com> Date: Fri, 9 Jun 2023 00:19:58 +0200 Subject: [PATCH 03/22] :arrow_up: Update go-skynet/go-ggml-transformers.cpp (#539) Signed-off-by: GitHub Co-authored-by: mudler --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index f64f02d3..2266a959 100644 --- a/Makefile +++ b/Makefile @@ -6,7 +6,7 @@ BINARY_NAME=local-ai GOLLAMA_VERSION?=351aa714672fb09aa84396868d08934e8e477f25 GPT4ALL_REPO?=https://github.com/go-skynet/gpt4all GPT4ALL_VERSION?=f7498c9 -GOGGMLTRANSFORMERS_VERSION?=bd765bb6f3b38a63f915f3725e488aad492eedd4 +GOGGMLTRANSFORMERS_VERSION?=dabd6cd7b7898cf3f3dabab227640ac5062dd767 RWKV_REPO?=https://github.com/donomii/go-rwkv.cpp RWKV_VERSION?=1e18b2490e7e32f6b00e16f6a9ec0dd3a3d09266 WHISPER_CPP_VERSION?=57543c169e27312e7546d07ed0d8c6eb806ebc36 From d088bd30342c3ce45fe2782feee6ed46bcc460cb Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 9 Jun 2023 00:20:15 +0200 Subject: [PATCH 04/22] fix(deps): update github.com/nomic-ai/gpt4all/gpt4all-bindings/golang digest to 47fbc0e (#528) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/go.mod b/go.mod index 0ad60433..798a3cd9 100644 --- a/go.mod +++ b/go.mod @@ -15,7 +15,7 @@ require ( github.com/hashicorp/go-multierror v1.1.1 github.com/imdario/mergo v0.3.16 github.com/mudler/go-stable-diffusion v0.0.0-20230605122230-d89260f598af - github.com/nomic-ai/gpt4all/gpt4all-bindings/golang v0.0.0-20230605194130-266f13aee9d8 + github.com/nomic-ai/gpt4all/gpt4all-bindings/golang v0.0.0-20230608180830-47fbc0e3092d github.com/onsi/ginkgo/v2 v2.9.7 github.com/onsi/gomega v1.27.8 github.com/otiai10/openaigo v1.1.0 diff --git a/go.sum b/go.sum index 283a8b8b..f6ceae2e 100644 --- a/go.sum +++ b/go.sum @@ -93,6 +93,8 @@ github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e h1:fD57ERR4JtEqsWb github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= github.com/nomic-ai/gpt4all/gpt4all-bindings/golang v0.0.0-20230605194130-266f13aee9d8 h1:7SqRnb44CN9QQtZxdFTTgaSqsWVbtFRrHLbKhrTEXlM= github.com/nomic-ai/gpt4all/gpt4all-bindings/golang v0.0.0-20230605194130-266f13aee9d8/go.mod h1:4T3CHXyrt+7FQHXaxULZfPjHbD8/99WuDDJa0YVZARI= +github.com/nomic-ai/gpt4all/gpt4all-bindings/golang v0.0.0-20230608180830-47fbc0e3092d h1:CtekEOIingzlwzlBySFEuR5PlCKmHylBr7F42y2erUQ= +github.com/nomic-ai/gpt4all/gpt4all-bindings/golang v0.0.0-20230608180830-47fbc0e3092d/go.mod h1:4T3CHXyrt+7FQHXaxULZfPjHbD8/99WuDDJa0YVZARI= github.com/onsi/ginkgo/v2 v2.9.7 h1:06xGQy5www2oN160RtEZoTvnP2sPhEfePYmCDc2szss= github.com/onsi/ginkgo/v2 v2.9.7/go.mod h1:cxrmXWykAwTwhQsJOPfdIDiJ+l2RYq7U8hFU+M/1uw0= github.com/onsi/gomega v1.27.8 h1:gegWiwZjBsf2DgiSbf5hpokZ98JVDMcWkUiigk6/KXc= From ce2a1799abb79a9a1c41e4da3d58bdbeac13f493 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 9 Jun 2023 00:22:41 +0200 Subject: [PATCH 05/22] fix(deps): update github.com/go-skynet/go-llama.cpp digest to 672fb05 (#529) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- go.mod | 6 +++--- go.sum | 6 ++++++ 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 798a3cd9..e2ff4462 100644 --- a/go.mod +++ b/go.mod @@ -9,14 +9,14 @@ require ( github.com/go-skynet/bloomz.cpp v0.0.0-20230529155654-1834e77b83fa github.com/go-skynet/go-bert.cpp v0.0.0-20230531070950-0548994371f7 github.com/go-skynet/go-ggml-transformers.cpp v0.0.0-20230606131358-bd765bb6f3b3 - github.com/go-skynet/go-llama.cpp v0.0.0-20230607123950-351aa714672f + github.com/go-skynet/go-llama.cpp v0.0.0-20230608215450-672fb056081d github.com/gofiber/fiber/v2 v2.46.0 github.com/google/uuid v1.3.0 github.com/hashicorp/go-multierror v1.1.1 github.com/imdario/mergo v0.3.16 github.com/mudler/go-stable-diffusion v0.0.0-20230605122230-d89260f598af github.com/nomic-ai/gpt4all/gpt4all-bindings/golang v0.0.0-20230608180830-47fbc0e3092d - github.com/onsi/ginkgo/v2 v2.9.7 + github.com/onsi/ginkgo/v2 v2.10.0 github.com/onsi/gomega v1.27.8 github.com/otiai10/openaigo v1.1.0 github.com/rs/zerolog v1.29.1 @@ -65,5 +65,5 @@ require ( golang.org/x/net v0.10.0 // indirect golang.org/x/sys v0.8.0 // indirect golang.org/x/text v0.9.0 // indirect - golang.org/x/tools v0.9.1 // indirect + golang.org/x/tools v0.9.3 // indirect ) diff --git a/go.sum b/go.sum index f6ceae2e..37cc778a 100644 --- a/go.sum +++ b/go.sum @@ -46,6 +46,8 @@ github.com/go-skynet/go-ggml-transformers.cpp v0.0.0-20230606131358-bd765bb6f3b3 github.com/go-skynet/go-ggml-transformers.cpp v0.0.0-20230606131358-bd765bb6f3b3/go.mod h1:/JbU8HZU+tUOp+1bQAeXf3AyRXm+p3UwhccoJwCTI9A= github.com/go-skynet/go-llama.cpp v0.0.0-20230607123950-351aa714672f h1:c16pf8uTyaRRQLxR0QKp4q7XDeHXrXGVBHLOgdBtEgc= github.com/go-skynet/go-llama.cpp v0.0.0-20230607123950-351aa714672f/go.mod h1:ffURxv+McO1SK7mWrNSaWPgTLqEukZNGTU6dn+ocMHg= +github.com/go-skynet/go-llama.cpp v0.0.0-20230608215450-672fb056081d h1:wYy8wst1Z0qP0kDWW5GrJsk89u39lbLvRgTx8uh7ijA= +github.com/go-skynet/go-llama.cpp v0.0.0-20230608215450-672fb056081d/go.mod h1:dUZekEbjnGUjk35v9iTIdmSst/NIDQ9s9Pyo4t1aBQg= github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 h1:tfuBGBXKqDEevZMzYi5KSi8KkcZtzBcTgAUUtapy0OI= github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572/go.mod h1:9Pwr4B2jHnOSGXyyzV8ROjYa2ojvAY6HCGYYfMoC3Ls= github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= @@ -97,6 +99,8 @@ github.com/nomic-ai/gpt4all/gpt4all-bindings/golang v0.0.0-20230608180830-47fbc0 github.com/nomic-ai/gpt4all/gpt4all-bindings/golang v0.0.0-20230608180830-47fbc0e3092d/go.mod h1:4T3CHXyrt+7FQHXaxULZfPjHbD8/99WuDDJa0YVZARI= github.com/onsi/ginkgo/v2 v2.9.7 h1:06xGQy5www2oN160RtEZoTvnP2sPhEfePYmCDc2szss= github.com/onsi/ginkgo/v2 v2.9.7/go.mod h1:cxrmXWykAwTwhQsJOPfdIDiJ+l2RYq7U8hFU+M/1uw0= +github.com/onsi/ginkgo/v2 v2.10.0 h1:sfUl4qgLdvkChZrWCYndY2EAu9BRIw1YphNAzy1VNWs= +github.com/onsi/ginkgo/v2 v2.10.0/go.mod h1:UDQOh5wbQUlMnkLfVaIUMtQ1Vus92oM+P2JX1aulgcE= github.com/onsi/gomega v1.27.8 h1:gegWiwZjBsf2DgiSbf5hpokZ98JVDMcWkUiigk6/KXc= github.com/onsi/gomega v1.27.8/go.mod h1:2J8vzI/s+2shY9XHRApDkdgPo1TKT7P2u6fXeJKFnNQ= github.com/otiai10/mint v1.5.1 h1:XaPLeE+9vGbuyEHem1JNk3bYc7KKqyI/na0/mLd/Kks= @@ -203,6 +207,8 @@ golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc golang.org/x/tools v0.4.0/go.mod h1:UE5sM2OK9E/d67R0ANs2xJizIymRP5gJU295PvKXxjQ= golang.org/x/tools v0.9.1 h1:8WMNJAz3zrtPmnYC7ISf5dEn3MT0gY7jBJfw27yrrLo= golang.org/x/tools v0.9.1/go.mod h1:owI94Op576fPu3cIGQeHs3joujW/2Oc6MtlxbF5dfNc= +golang.org/x/tools v0.9.3 h1:Gn1I8+64MsuTb/HpH+LmQtNas23LhUVr3rYZ0eKuaMM= +golang.org/x/tools v0.9.3/go.mod h1:owI94Op576fPu3cIGQeHs3joujW/2Oc6MtlxbF5dfNc= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= From 6f0bdbd01cc701fc2953668d748dec7cb027438a Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 9 Jun 2023 00:23:19 +0200 Subject: [PATCH 06/22] fix(deps): update github.com/donomii/go-rwkv.cpp digest to fb8b955 (#533) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/go.mod b/go.mod index e2ff4462..3c5a5303 100644 --- a/go.mod +++ b/go.mod @@ -3,7 +3,7 @@ module github.com/go-skynet/LocalAI go 1.19 require ( - github.com/donomii/go-rwkv.cpp v0.0.0-20230606181754-d5f48f6d607a + github.com/donomii/go-rwkv.cpp v0.0.0-20230608182638-fb8b955b0c35 github.com/ggerganov/whisper.cpp/bindings/go v0.0.0-20230606002726-57543c169e27 github.com/go-audio/wav v1.1.0 github.com/go-skynet/bloomz.cpp v0.0.0-20230529155654-1834e77b83fa diff --git a/go.sum b/go.sum index 37cc778a..2a7011ea 100644 --- a/go.sum +++ b/go.sum @@ -18,6 +18,8 @@ github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/donomii/go-rwkv.cpp v0.0.0-20230606181754-d5f48f6d607a h1:ye/xhplHFjnTd4O9QDDhM/QmuiGiSZaKARug6wNYgWg= github.com/donomii/go-rwkv.cpp v0.0.0-20230606181754-d5f48f6d607a/go.mod h1:gWy7FIWioqYmYxkaoFyBnaKApeZVrUkHhv9EV9pz4dM= +github.com/donomii/go-rwkv.cpp v0.0.0-20230608182638-fb8b955b0c35 h1:tfN6kA+k4O/oPEcCcZ+XZqyqOk9Z2L8NSHjmR4i6rhc= +github.com/donomii/go-rwkv.cpp v0.0.0-20230608182638-fb8b955b0c35/go.mod h1:gWy7FIWioqYmYxkaoFyBnaKApeZVrUkHhv9EV9pz4dM= github.com/ggerganov/whisper.cpp/bindings/go v0.0.0-20230606002726-57543c169e27 h1:boeMTUUBtnLU8JElZJHXrsUzROJar9/t6vGOFjkrhhI= github.com/ggerganov/whisper.cpp/bindings/go v0.0.0-20230606002726-57543c169e27/go.mod h1:QIjZ9OktHFG7p+/m3sMvrAJKKdWrr1fZIK0rM6HZlyo= github.com/go-audio/audio v1.0.0 h1:zS9vebldgbQqktK4H0lUqWrG8P0NxCJVqcj7ZpNnwd4= From 3b3164b0394902be87c91aea0390bc65b208e284 Mon Sep 17 00:00:00 2001 From: Ettore Di Giacinto Date: Fri, 9 Jun 2023 00:45:44 +0200 Subject: [PATCH 07/22] examples(telegram): add (#547) --- examples/README.md | 10 ++++ examples/telegram-bot/README.md | 30 +++++++++++ examples/telegram-bot/docker-compose.yml | 66 ++++++++++++++++++++++++ 3 files changed, 106 insertions(+) create mode 100644 examples/telegram-bot/README.md create mode 100644 examples/telegram-bot/docker-compose.yml diff --git a/examples/README.md b/examples/README.md index 2285ed19..d86cd1f7 100644 --- a/examples/README.md +++ b/examples/README.md @@ -106,6 +106,16 @@ Shows how to integrate with `Langchain` and `Chroma` to enable question answerin [Check it out here](https://github.com/go-skynet/LocalAI/tree/master/examples/langchain-chroma/) +### Telegram bot + +_by [@mudler](https://github.com/mudler) + +![Screenshot from 2023-06-09 00-36-26](https://github.com/go-skynet/LocalAI/assets/2420543/e98b4305-fa2d-41cf-9d2f-1bb2d75ca902) + +Use LocalAI to power a Telegram bot assistant, with Image generation and audio support! + +[Check it out here](https://github.com/go-skynet/LocalAI/tree/master/examples/telegram-bot/) + ### Template for Runpod.io _by [@fHachenberg](https://github.com/fHachenberg)_ diff --git a/examples/telegram-bot/README.md b/examples/telegram-bot/README.md new file mode 100644 index 00000000..d0ab0dfd --- /dev/null +++ b/examples/telegram-bot/README.md @@ -0,0 +1,30 @@ +## Telegram bot + +![Screenshot from 2023-06-09 00-36-26](https://github.com/go-skynet/LocalAI/assets/2420543/e98b4305-fa2d-41cf-9d2f-1bb2d75ca902) + +This example uses a fork of [chatgpt-telegram-bot](https://github.com/karfly/chatgpt_telegram_bot) to deploy a telegram bot with LocalAI instead of OpenAI. + +```bash +# Clone LocalAI +git clone https://github.com/go-skynet/LocalAI + +cd LocalAI/examples/telegram-bot + +git clone https://github.com/mudler/chatgpt_telegram_bot + +cp -rf docker-compose.yml chatgpt_telegram_bot + +cd chatgpt_telegram_bot + +mv config/config.example.yml config/config.yml +mv config/config.example.env config/config.env + +# Edit config/config.yml to set the telegram bot token +vim config/config.yml + +# run the bot +docker-compose --env-file config/config.env up --build +``` + +Note: LocalAI is configured to download `gpt4all-j` in place of `gpt-3.5-turbo` and `stablediffusion` for image generation at the first start. Download size is >6GB, if your network connection is slow, adapt the `docker-compose.yml` file healthcheck section accordingly (replace `20m`, for instance with `1h`, etc.). +To configure models manually, comment the `PRELOAD_MODELS` environment variable in the `docker-compose.yml` file and see for instance the [chatbot-ui-manual example](https://github.com/go-skynet/LocalAI/tree/master/examples/chatbot-ui-manual) `model` directory. \ No newline at end of file diff --git a/examples/telegram-bot/docker-compose.yml b/examples/telegram-bot/docker-compose.yml new file mode 100644 index 00000000..7a792484 --- /dev/null +++ b/examples/telegram-bot/docker-compose.yml @@ -0,0 +1,66 @@ +version: "3" + +services: + api: + image: quay.io/go-skynet/local-ai:v1.18.0-ffmpeg + # As initially LocalAI will download the models defined in PRELOAD_MODELS + # you might need to tweak the healthcheck values here according to your network connection. + # Here we give a timespan of 20m to download all the required files. + healthcheck: + test: ["CMD", "curl", "-f", "http://localhost:8080/readyz"] + interval: 1m + timeout: 20m + retries: 20 + ports: + - 8080:8080 + environment: + - DEBUG=true + - MODELS_PATH=/models + - IMAGE_PATH=/tmp + # You can preload different models here as well. + # See: https://github.com/go-skynet/model-gallery + - 'PRELOAD_MODELS=[{"url": "github:go-skynet/model-gallery/gpt4all-j.yaml", "name": "gpt-3.5-turbo"}, {"url": "github:go-skynet/model-gallery/stablediffusion.yaml"}, {"url": "github:go-skynet/model-gallery/whisper-base.yaml", "name": "whisper-1"}]' + volumes: + - ./models:/models:cached + command: ["/usr/bin/local-ai" ] + mongo: + container_name: mongo + image: mongo:latest + restart: always + ports: + - 127.0.0.1:${MONGODB_PORT:-27017}:${MONGODB_PORT:-27017} + volumes: + - ${MONGODB_PATH:-./mongodb}:/data/db + # TODO: add auth + + chatgpt_telegram_bot: + container_name: chatgpt_telegram_bot + command: python3 bot/bot.py + restart: always + environment: + - OPENAI_API_KEY=sk---anystringhere + - OPENAI_API_BASE=http://api:8080/v1 + build: + context: "." + dockerfile: Dockerfile + depends_on: + api: + condition: service_healthy + mongo: + condition: service_started + + mongo_express: + container_name: mongo-express + image: mongo-express:latest + restart: always + ports: + - 127.0.0.1:${MONGO_EXPRESS_PORT:-8081}:${MONGO_EXPRESS_PORT:-8081} + environment: + - ME_CONFIG_MONGODB_SERVER=mongo + - ME_CONFIG_MONGODB_PORT=${MONGODB_PORT:-27017} + - ME_CONFIG_MONGODB_ENABLE_ADMIN=false + - ME_CONFIG_MONGODB_AUTH_DATABASE=chatgpt_telegram_bot + - ME_CONFIG_BASICAUTH_USERNAME=${MONGO_EXPRESS_USERNAME:-username} + - ME_CONFIG_BASICAUTH_PASSWORD=${MONGO_EXPRESS_PASSWORD:-password} + depends_on: + - mongo \ No newline at end of file From 6bb562272dada1da893f8fb1bfc768b6d819d2de Mon Sep 17 00:00:00 2001 From: "ci-robbot [bot]" <105103991+ci-robbot@users.noreply.github.com> Date: Fri, 9 Jun 2023 01:13:15 +0200 Subject: [PATCH 08/22] :arrow_up: Update go-skynet/go-llama.cpp (#546) Signed-off-by: GitHub Co-authored-by: mudler --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 2266a959..6e021a81 100644 --- a/Makefile +++ b/Makefile @@ -3,7 +3,7 @@ GOTEST=$(GOCMD) test GOVET=$(GOCMD) vet BINARY_NAME=local-ai -GOLLAMA_VERSION?=351aa714672fb09aa84396868d08934e8e477f25 +GOLLAMA_VERSION?=672fb056081d572fb888dccd66f5380e7f9cc312 GPT4ALL_REPO?=https://github.com/go-skynet/gpt4all GPT4ALL_VERSION?=f7498c9 GOGGMLTRANSFORMERS_VERSION?=dabd6cd7b7898cf3f3dabab227640ac5062dd767 From 30d06f9b12b0b57d5f95bd45c5ab76175959a2b2 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 9 Jun 2023 18:15:24 +0200 Subject: [PATCH 09/22] fix(deps): update github.com/go-skynet/go-llama.cpp digest to a921173 (#551) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/go.mod b/go.mod index 3c5a5303..b65eef3e 100644 --- a/go.mod +++ b/go.mod @@ -9,7 +9,7 @@ require ( github.com/go-skynet/bloomz.cpp v0.0.0-20230529155654-1834e77b83fa github.com/go-skynet/go-bert.cpp v0.0.0-20230531070950-0548994371f7 github.com/go-skynet/go-ggml-transformers.cpp v0.0.0-20230606131358-bd765bb6f3b3 - github.com/go-skynet/go-llama.cpp v0.0.0-20230608215450-672fb056081d + github.com/go-skynet/go-llama.cpp v0.0.0-20230609063927-a9211738b733 github.com/gofiber/fiber/v2 v2.46.0 github.com/google/uuid v1.3.0 github.com/hashicorp/go-multierror v1.1.1 diff --git a/go.sum b/go.sum index 2a7011ea..0445925e 100644 --- a/go.sum +++ b/go.sum @@ -50,6 +50,8 @@ github.com/go-skynet/go-llama.cpp v0.0.0-20230607123950-351aa714672f h1:c16pf8uT github.com/go-skynet/go-llama.cpp v0.0.0-20230607123950-351aa714672f/go.mod h1:ffURxv+McO1SK7mWrNSaWPgTLqEukZNGTU6dn+ocMHg= github.com/go-skynet/go-llama.cpp v0.0.0-20230608215450-672fb056081d h1:wYy8wst1Z0qP0kDWW5GrJsk89u39lbLvRgTx8uh7ijA= github.com/go-skynet/go-llama.cpp v0.0.0-20230608215450-672fb056081d/go.mod h1:dUZekEbjnGUjk35v9iTIdmSst/NIDQ9s9Pyo4t1aBQg= +github.com/go-skynet/go-llama.cpp v0.0.0-20230609063927-a9211738b733 h1:k//Emr/uHqZvgghxWdedDVJtTbKz2uz0O/GEqzeU7Kk= +github.com/go-skynet/go-llama.cpp v0.0.0-20230609063927-a9211738b733/go.mod h1:dUZekEbjnGUjk35v9iTIdmSst/NIDQ9s9Pyo4t1aBQg= github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 h1:tfuBGBXKqDEevZMzYi5KSi8KkcZtzBcTgAUUtapy0OI= github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572/go.mod h1:9Pwr4B2jHnOSGXyyzV8ROjYa2ojvAY6HCGYYfMoC3Ls= github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= From 182323a7fb23bf2916f13248c06224de3ec557ee Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 9 Jun 2023 19:16:53 +0200 Subject: [PATCH 10/22] fix(deps): update github.com/donomii/go-rwkv.cpp digest to d2b25a4 (#552) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/go.mod b/go.mod index b65eef3e..2d802478 100644 --- a/go.mod +++ b/go.mod @@ -3,7 +3,7 @@ module github.com/go-skynet/LocalAI go 1.19 require ( - github.com/donomii/go-rwkv.cpp v0.0.0-20230608182638-fb8b955b0c35 + github.com/donomii/go-rwkv.cpp v0.0.0-20230609132458-d2b25a4bb148 github.com/ggerganov/whisper.cpp/bindings/go v0.0.0-20230606002726-57543c169e27 github.com/go-audio/wav v1.1.0 github.com/go-skynet/bloomz.cpp v0.0.0-20230529155654-1834e77b83fa diff --git a/go.sum b/go.sum index 0445925e..36f7aaa4 100644 --- a/go.sum +++ b/go.sum @@ -20,6 +20,8 @@ github.com/donomii/go-rwkv.cpp v0.0.0-20230606181754-d5f48f6d607a h1:ye/xhplHFjn github.com/donomii/go-rwkv.cpp v0.0.0-20230606181754-d5f48f6d607a/go.mod h1:gWy7FIWioqYmYxkaoFyBnaKApeZVrUkHhv9EV9pz4dM= github.com/donomii/go-rwkv.cpp v0.0.0-20230608182638-fb8b955b0c35 h1:tfN6kA+k4O/oPEcCcZ+XZqyqOk9Z2L8NSHjmR4i6rhc= github.com/donomii/go-rwkv.cpp v0.0.0-20230608182638-fb8b955b0c35/go.mod h1:gWy7FIWioqYmYxkaoFyBnaKApeZVrUkHhv9EV9pz4dM= +github.com/donomii/go-rwkv.cpp v0.0.0-20230609132458-d2b25a4bb148 h1:rC8T9CXqzB4Gw2RGo7uA7r0bFE8Qvc7ZXOBwIyhQuLM= +github.com/donomii/go-rwkv.cpp v0.0.0-20230609132458-d2b25a4bb148/go.mod h1:gWy7FIWioqYmYxkaoFyBnaKApeZVrUkHhv9EV9pz4dM= github.com/ggerganov/whisper.cpp/bindings/go v0.0.0-20230606002726-57543c169e27 h1:boeMTUUBtnLU8JElZJHXrsUzROJar9/t6vGOFjkrhhI= github.com/ggerganov/whisper.cpp/bindings/go v0.0.0-20230606002726-57543c169e27/go.mod h1:QIjZ9OktHFG7p+/m3sMvrAJKKdWrr1fZIK0rM6HZlyo= github.com/go-audio/audio v1.0.0 h1:zS9vebldgbQqktK4H0lUqWrG8P0NxCJVqcj7ZpNnwd4= From ecad2261c8fd25c8972ee21ac87ac9a803b4fb6f Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 9 Jun 2023 21:01:09 +0200 Subject: [PATCH 11/22] fix(deps): update github.com/go-skynet/go-ggml-transformers.cpp digest to dabd6cd (#535) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/go.mod b/go.mod index 2d802478..f3f1a947 100644 --- a/go.mod +++ b/go.mod @@ -8,7 +8,7 @@ require ( github.com/go-audio/wav v1.1.0 github.com/go-skynet/bloomz.cpp v0.0.0-20230529155654-1834e77b83fa github.com/go-skynet/go-bert.cpp v0.0.0-20230531070950-0548994371f7 - github.com/go-skynet/go-ggml-transformers.cpp v0.0.0-20230606131358-bd765bb6f3b3 + github.com/go-skynet/go-ggml-transformers.cpp v0.0.0-20230607102637-dabd6cd7b789 github.com/go-skynet/go-llama.cpp v0.0.0-20230609063927-a9211738b733 github.com/gofiber/fiber/v2 v2.46.0 github.com/google/uuid v1.3.0 diff --git a/go.sum b/go.sum index 36f7aaa4..a9083152 100644 --- a/go.sum +++ b/go.sum @@ -48,6 +48,8 @@ github.com/go-skynet/go-bert.cpp v0.0.0-20230531070950-0548994371f7 h1:hm5rOxRf2 github.com/go-skynet/go-bert.cpp v0.0.0-20230531070950-0548994371f7/go.mod h1:55l02IF2kD+LGEH4yXzmPPygeuWiUIo8Nbh/+ZU9cb0= github.com/go-skynet/go-ggml-transformers.cpp v0.0.0-20230606131358-bd765bb6f3b3 h1:xgDRCrBU2YmwerI6CY6woFyEsBrzV/4a2/atOBm0aXE= github.com/go-skynet/go-ggml-transformers.cpp v0.0.0-20230606131358-bd765bb6f3b3/go.mod h1:/JbU8HZU+tUOp+1bQAeXf3AyRXm+p3UwhccoJwCTI9A= +github.com/go-skynet/go-ggml-transformers.cpp v0.0.0-20230607102637-dabd6cd7b789 h1:63wTAm/9STwy2LJ7N/F+1jyp/uRoCK6EkBhAan2WLdI= +github.com/go-skynet/go-ggml-transformers.cpp v0.0.0-20230607102637-dabd6cd7b789/go.mod h1:oNCRtfr+ZHodMQnzRXcwrMKY6RSLMRXThW9WGIR2+FA= github.com/go-skynet/go-llama.cpp v0.0.0-20230607123950-351aa714672f h1:c16pf8uTyaRRQLxR0QKp4q7XDeHXrXGVBHLOgdBtEgc= github.com/go-skynet/go-llama.cpp v0.0.0-20230607123950-351aa714672f/go.mod h1:ffURxv+McO1SK7mWrNSaWPgTLqEukZNGTU6dn+ocMHg= github.com/go-skynet/go-llama.cpp v0.0.0-20230608215450-672fb056081d h1:wYy8wst1Z0qP0kDWW5GrJsk89u39lbLvRgTx8uh7ijA= From 437f563128297458bc905391a2e80ce8d820397f Mon Sep 17 00:00:00 2001 From: "ci-robbot [bot]" <105103991+ci-robbot@users.noreply.github.com> Date: Sat, 10 Jun 2023 00:09:14 +0200 Subject: [PATCH 12/22] :arrow_up: Update go-skynet/go-bert.cpp (#540) Signed-off-by: GitHub Co-authored-by: mudler --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 6e021a81..7c796fc1 100644 --- a/Makefile +++ b/Makefile @@ -10,7 +10,7 @@ GOGGMLTRANSFORMERS_VERSION?=dabd6cd7b7898cf3f3dabab227640ac5062dd767 RWKV_REPO?=https://github.com/donomii/go-rwkv.cpp RWKV_VERSION?=1e18b2490e7e32f6b00e16f6a9ec0dd3a3d09266 WHISPER_CPP_VERSION?=57543c169e27312e7546d07ed0d8c6eb806ebc36 -BERT_VERSION?=0548994371f7081e45fcf8d472f3941a12f179aa +BERT_VERSION?=6069103f54b9969c02e789d0fb12a23bd614285f BLOOMZ_VERSION?=1834e77b83faafe912ad4092ccf7f77937349e2f export BUILD_TYPE?= CGO_LDFLAGS?= From 119733892ece7455dffb7ed1c1bb4187a4506553 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 10 Jun 2023 00:09:38 +0200 Subject: [PATCH 13/22] fix(deps): update github.com/go-skynet/go-bert.cpp digest to 6069103 (#534) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/go.mod b/go.mod index f3f1a947..4c54afc4 100644 --- a/go.mod +++ b/go.mod @@ -7,7 +7,7 @@ require ( github.com/ggerganov/whisper.cpp/bindings/go v0.0.0-20230606002726-57543c169e27 github.com/go-audio/wav v1.1.0 github.com/go-skynet/bloomz.cpp v0.0.0-20230529155654-1834e77b83fa - github.com/go-skynet/go-bert.cpp v0.0.0-20230531070950-0548994371f7 + github.com/go-skynet/go-bert.cpp v0.0.0-20230607105116-6069103f54b9 github.com/go-skynet/go-ggml-transformers.cpp v0.0.0-20230607102637-dabd6cd7b789 github.com/go-skynet/go-llama.cpp v0.0.0-20230609063927-a9211738b733 github.com/gofiber/fiber/v2 v2.46.0 diff --git a/go.sum b/go.sum index a9083152..d9a2d7c0 100644 --- a/go.sum +++ b/go.sum @@ -46,6 +46,8 @@ github.com/go-skynet/bloomz.cpp v0.0.0-20230529155654-1834e77b83fa h1:gxr68r/6EW github.com/go-skynet/bloomz.cpp v0.0.0-20230529155654-1834e77b83fa/go.mod h1:wc0fJ9V04yiYTfgKvE5RUUSRQ5Kzi0Bo4I+U3nNOUuA= github.com/go-skynet/go-bert.cpp v0.0.0-20230531070950-0548994371f7 h1:hm5rOxRf2Y8zmQTBgtDabLoprYHHQHmZ8ui8i4KQSgU= github.com/go-skynet/go-bert.cpp v0.0.0-20230531070950-0548994371f7/go.mod h1:55l02IF2kD+LGEH4yXzmPPygeuWiUIo8Nbh/+ZU9cb0= +github.com/go-skynet/go-bert.cpp v0.0.0-20230607105116-6069103f54b9 h1:wRGbDwNwPmSzoXVw/HLzXY4blpRvPWg7QW2OA0WKezA= +github.com/go-skynet/go-bert.cpp v0.0.0-20230607105116-6069103f54b9/go.mod h1:pXKCpYYXujMeAvgJHU6WoMfvYbr84563+J8+Ebkyr5U= github.com/go-skynet/go-ggml-transformers.cpp v0.0.0-20230606131358-bd765bb6f3b3 h1:xgDRCrBU2YmwerI6CY6woFyEsBrzV/4a2/atOBm0aXE= github.com/go-skynet/go-ggml-transformers.cpp v0.0.0-20230606131358-bd765bb6f3b3/go.mod h1:/JbU8HZU+tUOp+1bQAeXf3AyRXm+p3UwhccoJwCTI9A= github.com/go-skynet/go-ggml-transformers.cpp v0.0.0-20230607102637-dabd6cd7b789 h1:63wTAm/9STwy2LJ7N/F+1jyp/uRoCK6EkBhAan2WLdI= From e6c8ebb65c6bee3cd4f5588736a7e6d99ba550a8 Mon Sep 17 00:00:00 2001 From: "ci-robbot [bot]" <105103991+ci-robbot@users.noreply.github.com> Date: Sat, 10 Jun 2023 01:35:58 +0200 Subject: [PATCH 14/22] :arrow_up: Update go-skynet/go-llama.cpp (#554) Signed-off-by: GitHub Co-authored-by: mudler --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 7c796fc1..c927546d 100644 --- a/Makefile +++ b/Makefile @@ -3,7 +3,7 @@ GOTEST=$(GOCMD) test GOVET=$(GOCMD) vet BINARY_NAME=local-ai -GOLLAMA_VERSION?=672fb056081d572fb888dccd66f5380e7f9cc312 +GOLLAMA_VERSION?=4772ec5e91570ee3b1846b4a17b080cb019d745b GPT4ALL_REPO?=https://github.com/go-skynet/gpt4all GPT4ALL_VERSION?=f7498c9 GOGGMLTRANSFORMERS_VERSION?=dabd6cd7b7898cf3f3dabab227640ac5062dd767 From ed2bf48a6d2174e9b707d1dac5f32f0691d09116 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 10 Jun 2023 10:16:50 +0200 Subject: [PATCH 15/22] fix(deps): update github.com/tmc/langchaingo digest to 06cb7b5 (#525) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/go.mod b/go.mod index 4c54afc4..f0dd8651 100644 --- a/go.mod +++ b/go.mod @@ -22,7 +22,7 @@ require ( github.com/rs/zerolog v1.29.1 github.com/sashabaranov/go-openai v1.10.1 github.com/swaggo/swag v1.16.1 - github.com/tmc/langchaingo v0.0.0-20230605114752-4afed6d7be4a + github.com/tmc/langchaingo v0.0.0-20230610024316-06cb7b57ea80 github.com/urfave/cli/v2 v2.25.5 github.com/valyala/fasthttp v1.47.0 gopkg.in/yaml.v2 v2.4.0 diff --git a/go.sum b/go.sum index d9a2d7c0..3b8446df 100644 --- a/go.sum +++ b/go.sum @@ -151,6 +151,8 @@ github.com/tinylib/msgp v1.1.8 h1:FCXC1xanKO4I8plpHGH2P7koL/RzZs12l/+r7vakfm0= github.com/tinylib/msgp v1.1.8/go.mod h1:qkpG+2ldGg4xRFmx+jfTvZPxfGFhi64BcnL9vkCm/Tw= github.com/tmc/langchaingo v0.0.0-20230605114752-4afed6d7be4a h1:YtKJTKbM3qu60+ZxLtyeCl0RvdG7LKbyF8TT7nzV6Gg= github.com/tmc/langchaingo v0.0.0-20230605114752-4afed6d7be4a/go.mod h1:6l1WoyqVDwkv7cFlY3gfcTv8yVowVyuutKv8PGlQCWI= +github.com/tmc/langchaingo v0.0.0-20230610024316-06cb7b57ea80 h1:Y+a76dNVbdWduw3gznOr2O2OSZkdwDRYPKTDpG/vM9I= +github.com/tmc/langchaingo v0.0.0-20230610024316-06cb7b57ea80/go.mod h1:6l1WoyqVDwkv7cFlY3gfcTv8yVowVyuutKv8PGlQCWI= github.com/urfave/cli/v2 v2.25.5 h1:d0NIAyhh5shGscroL7ek/Ya9QYQE0KNabJgiUinIQkc= github.com/urfave/cli/v2 v2.25.5/go.mod h1:GHupkWPMM0M/sj1a2b4wUrWBPzazNrIjouW6fmdJLxc= github.com/valyala/bytebufferpool v1.0.0 h1:GqA5TC/0021Y/b9FG4Oi9Mr3q7XYx6KllzawFIhcdPw= From 58f0f6392610596b57bd1be42c77607b371d4dfe Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 10 Jun 2023 10:17:11 +0200 Subject: [PATCH 16/22] fix(deps): update github.com/nomic-ai/gpt4all/gpt4all-bindings/golang digest to d3ba129 (#548) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/go.mod b/go.mod index f0dd8651..48e65e70 100644 --- a/go.mod +++ b/go.mod @@ -15,7 +15,7 @@ require ( github.com/hashicorp/go-multierror v1.1.1 github.com/imdario/mergo v0.3.16 github.com/mudler/go-stable-diffusion v0.0.0-20230605122230-d89260f598af - github.com/nomic-ai/gpt4all/gpt4all-bindings/golang v0.0.0-20230608180830-47fbc0e3092d + github.com/nomic-ai/gpt4all/gpt4all-bindings/golang v0.0.0-20230609204846-d3ba1295a764 github.com/onsi/ginkgo/v2 v2.10.0 github.com/onsi/gomega v1.27.8 github.com/otiai10/openaigo v1.1.0 diff --git a/go.sum b/go.sum index 3b8446df..f7ef9034 100644 --- a/go.sum +++ b/go.sum @@ -107,6 +107,8 @@ github.com/nomic-ai/gpt4all/gpt4all-bindings/golang v0.0.0-20230605194130-266f13 github.com/nomic-ai/gpt4all/gpt4all-bindings/golang v0.0.0-20230605194130-266f13aee9d8/go.mod h1:4T3CHXyrt+7FQHXaxULZfPjHbD8/99WuDDJa0YVZARI= github.com/nomic-ai/gpt4all/gpt4all-bindings/golang v0.0.0-20230608180830-47fbc0e3092d h1:CtekEOIingzlwzlBySFEuR5PlCKmHylBr7F42y2erUQ= github.com/nomic-ai/gpt4all/gpt4all-bindings/golang v0.0.0-20230608180830-47fbc0e3092d/go.mod h1:4T3CHXyrt+7FQHXaxULZfPjHbD8/99WuDDJa0YVZARI= +github.com/nomic-ai/gpt4all/gpt4all-bindings/golang v0.0.0-20230609204846-d3ba1295a764 h1:graL+iULNQEEGS1GK6n6nIPNVzmbQYF42VsNWadFRcY= +github.com/nomic-ai/gpt4all/gpt4all-bindings/golang v0.0.0-20230609204846-d3ba1295a764/go.mod h1:4T3CHXyrt+7FQHXaxULZfPjHbD8/99WuDDJa0YVZARI= github.com/onsi/ginkgo/v2 v2.9.7 h1:06xGQy5www2oN160RtEZoTvnP2sPhEfePYmCDc2szss= github.com/onsi/ginkgo/v2 v2.9.7/go.mod h1:cxrmXWykAwTwhQsJOPfdIDiJ+l2RYq7U8hFU+M/1uw0= github.com/onsi/ginkgo/v2 v2.10.0 h1:sfUl4qgLdvkChZrWCYndY2EAu9BRIw1YphNAzy1VNWs= From 5dea31385c032e61be62d44a3b7f8f9877dbf8c1 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 10 Jun 2023 10:17:32 +0200 Subject: [PATCH 17/22] fix(deps): update github.com/go-skynet/go-llama.cpp digest to a12ce51 (#555) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/go.mod b/go.mod index 48e65e70..51686b70 100644 --- a/go.mod +++ b/go.mod @@ -9,7 +9,7 @@ require ( github.com/go-skynet/bloomz.cpp v0.0.0-20230529155654-1834e77b83fa github.com/go-skynet/go-bert.cpp v0.0.0-20230607105116-6069103f54b9 github.com/go-skynet/go-ggml-transformers.cpp v0.0.0-20230607102637-dabd6cd7b789 - github.com/go-skynet/go-llama.cpp v0.0.0-20230609063927-a9211738b733 + github.com/go-skynet/go-llama.cpp v0.0.0-20230609233637-a12ce511c063 github.com/gofiber/fiber/v2 v2.46.0 github.com/google/uuid v1.3.0 github.com/hashicorp/go-multierror v1.1.1 diff --git a/go.sum b/go.sum index f7ef9034..f10770d9 100644 --- a/go.sum +++ b/go.sum @@ -58,6 +58,8 @@ github.com/go-skynet/go-llama.cpp v0.0.0-20230608215450-672fb056081d h1:wYy8wst1 github.com/go-skynet/go-llama.cpp v0.0.0-20230608215450-672fb056081d/go.mod h1:dUZekEbjnGUjk35v9iTIdmSst/NIDQ9s9Pyo4t1aBQg= github.com/go-skynet/go-llama.cpp v0.0.0-20230609063927-a9211738b733 h1:k//Emr/uHqZvgghxWdedDVJtTbKz2uz0O/GEqzeU7Kk= github.com/go-skynet/go-llama.cpp v0.0.0-20230609063927-a9211738b733/go.mod h1:dUZekEbjnGUjk35v9iTIdmSst/NIDQ9s9Pyo4t1aBQg= +github.com/go-skynet/go-llama.cpp v0.0.0-20230609233637-a12ce511c063 h1:TvBL5ppxuRpXfYJkAEjYgy27+aRD8/ls2JUc3JnNNio= +github.com/go-skynet/go-llama.cpp v0.0.0-20230609233637-a12ce511c063/go.mod h1:dUZekEbjnGUjk35v9iTIdmSst/NIDQ9s9Pyo4t1aBQg= github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 h1:tfuBGBXKqDEevZMzYi5KSi8KkcZtzBcTgAUUtapy0OI= github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572/go.mod h1:9Pwr4B2jHnOSGXyyzV8ROjYa2ojvAY6HCGYYfMoC3Ls= github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= From f20c12a1c0d0846afa875e172789d070a04c8363 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 10 Jun 2023 22:22:31 +0200 Subject: [PATCH 18/22] fix(deps): update github.com/nomic-ai/gpt4all/gpt4all-bindings/golang digest to a9c2f47 (#560) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/go.mod b/go.mod index 51686b70..24908392 100644 --- a/go.mod +++ b/go.mod @@ -15,7 +15,7 @@ require ( github.com/hashicorp/go-multierror v1.1.1 github.com/imdario/mergo v0.3.16 github.com/mudler/go-stable-diffusion v0.0.0-20230605122230-d89260f598af - github.com/nomic-ai/gpt4all/gpt4all-bindings/golang v0.0.0-20230609204846-d3ba1295a764 + github.com/nomic-ai/gpt4all/gpt4all-bindings/golang v0.0.0-20230610141538-a9c2f473032f github.com/onsi/ginkgo/v2 v2.10.0 github.com/onsi/gomega v1.27.8 github.com/otiai10/openaigo v1.1.0 diff --git a/go.sum b/go.sum index f10770d9..0b260132 100644 --- a/go.sum +++ b/go.sum @@ -111,6 +111,8 @@ github.com/nomic-ai/gpt4all/gpt4all-bindings/golang v0.0.0-20230608180830-47fbc0 github.com/nomic-ai/gpt4all/gpt4all-bindings/golang v0.0.0-20230608180830-47fbc0e3092d/go.mod h1:4T3CHXyrt+7FQHXaxULZfPjHbD8/99WuDDJa0YVZARI= github.com/nomic-ai/gpt4all/gpt4all-bindings/golang v0.0.0-20230609204846-d3ba1295a764 h1:graL+iULNQEEGS1GK6n6nIPNVzmbQYF42VsNWadFRcY= github.com/nomic-ai/gpt4all/gpt4all-bindings/golang v0.0.0-20230609204846-d3ba1295a764/go.mod h1:4T3CHXyrt+7FQHXaxULZfPjHbD8/99WuDDJa0YVZARI= +github.com/nomic-ai/gpt4all/gpt4all-bindings/golang v0.0.0-20230610141538-a9c2f473032f h1:Byfiqc4T4Tn0TT5QAazz59Tw7FwTsfOjKCsY+P3+CTc= +github.com/nomic-ai/gpt4all/gpt4all-bindings/golang v0.0.0-20230610141538-a9c2f473032f/go.mod h1:4T3CHXyrt+7FQHXaxULZfPjHbD8/99WuDDJa0YVZARI= github.com/onsi/ginkgo/v2 v2.9.7 h1:06xGQy5www2oN160RtEZoTvnP2sPhEfePYmCDc2szss= github.com/onsi/ginkgo/v2 v2.9.7/go.mod h1:cxrmXWykAwTwhQsJOPfdIDiJ+l2RYq7U8hFU+M/1uw0= github.com/onsi/ginkgo/v2 v2.10.0 h1:sfUl4qgLdvkChZrWCYndY2EAu9BRIw1YphNAzy1VNWs= From 897ac6e4e5e1fcf701d538a7f6fb8d0ec5738091 Mon Sep 17 00:00:00 2001 From: "ci-robbot [bot]" <105103991+ci-robbot@users.noreply.github.com> Date: Sun, 11 Jun 2023 01:01:46 +0200 Subject: [PATCH 19/22] :arrow_up: Update go-skynet/go-ggml-transformers.cpp (#562) Signed-off-by: GitHub Co-authored-by: mudler --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index c927546d..6106ef6e 100644 --- a/Makefile +++ b/Makefile @@ -6,7 +6,7 @@ BINARY_NAME=local-ai GOLLAMA_VERSION?=4772ec5e91570ee3b1846b4a17b080cb019d745b GPT4ALL_REPO?=https://github.com/go-skynet/gpt4all GPT4ALL_VERSION?=f7498c9 -GOGGMLTRANSFORMERS_VERSION?=dabd6cd7b7898cf3f3dabab227640ac5062dd767 +GOGGMLTRANSFORMERS_VERSION?=01b8436f44294d0e1267430f9eda4460458cec54 RWKV_REPO?=https://github.com/donomii/go-rwkv.cpp RWKV_VERSION?=1e18b2490e7e32f6b00e16f6a9ec0dd3a3d09266 WHISPER_CPP_VERSION?=57543c169e27312e7546d07ed0d8c6eb806ebc36 From 2297504fb36ec902d41ee164b74806d7f72cd323 Mon Sep 17 00:00:00 2001 From: Ettore Di Giacinto Date: Sun, 11 Jun 2023 01:07:19 +0200 Subject: [PATCH 20/22] example(telegram): drop mongodb (#565) --- examples/telegram-bot/docker-compose.yml | 28 ------------------------ 1 file changed, 28 deletions(-) diff --git a/examples/telegram-bot/docker-compose.yml b/examples/telegram-bot/docker-compose.yml index 7a792484..3aea6ebe 100644 --- a/examples/telegram-bot/docker-compose.yml +++ b/examples/telegram-bot/docker-compose.yml @@ -23,16 +23,6 @@ services: volumes: - ./models:/models:cached command: ["/usr/bin/local-ai" ] - mongo: - container_name: mongo - image: mongo:latest - restart: always - ports: - - 127.0.0.1:${MONGODB_PORT:-27017}:${MONGODB_PORT:-27017} - volumes: - - ${MONGODB_PATH:-./mongodb}:/data/db - # TODO: add auth - chatgpt_telegram_bot: container_name: chatgpt_telegram_bot command: python3 bot/bot.py @@ -46,21 +36,3 @@ services: depends_on: api: condition: service_healthy - mongo: - condition: service_started - - mongo_express: - container_name: mongo-express - image: mongo-express:latest - restart: always - ports: - - 127.0.0.1:${MONGO_EXPRESS_PORT:-8081}:${MONGO_EXPRESS_PORT:-8081} - environment: - - ME_CONFIG_MONGODB_SERVER=mongo - - ME_CONFIG_MONGODB_PORT=${MONGODB_PORT:-27017} - - ME_CONFIG_MONGODB_ENABLE_ADMIN=false - - ME_CONFIG_MONGODB_AUTH_DATABASE=chatgpt_telegram_bot - - ME_CONFIG_BASICAUTH_USERNAME=${MONGO_EXPRESS_USERNAME:-username} - - ME_CONFIG_BASICAUTH_PASSWORD=${MONGO_EXPRESS_PASSWORD:-password} - depends_on: - - mongo \ No newline at end of file From 2a11f16c0ffee07a128aeb92ad534650fcec161c Mon Sep 17 00:00:00 2001 From: Ettore Di Giacinto Date: Sun, 11 Jun 2023 01:07:39 +0200 Subject: [PATCH 21/22] fix: copy metal file from build (#564) --- .gitignore | 4 +++- Makefile | 3 +++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index d1a7f148..8ad9f228 100644 --- a/.gitignore +++ b/.gitignore @@ -27,4 +27,6 @@ release/ .idea # Generated during build -backend-assets/ \ No newline at end of file +backend-assets/ + +/ggml-metal.metal \ No newline at end of file diff --git a/Makefile b/Makefile index 6106ef6e..cf763825 100644 --- a/Makefile +++ b/Makefile @@ -219,6 +219,9 @@ build: prepare ## Build the project $(info ${GREEN}I BUILD_TYPE: ${YELLOW}$(BUILD_TYPE)${RESET}) $(info ${GREEN}I GO_TAGS: ${YELLOW}$(GO_TAGS)${RESET}) CGO_LDFLAGS="$(CGO_LDFLAGS)" C_INCLUDE_PATH=${C_INCLUDE_PATH} LIBRARY_PATH=${LIBRARY_PATH} $(GOCMD) build -ldflags "$(LD_FLAGS)" -tags "$(GO_TAGS)" -o $(BINARY_NAME) ./ +ifeq ($(BUILD_TYPE),metal) + cp go-llama/build/bin/ggml-metal.metal . +endif dist: build mkdir -p release From 6306885fe7e1641ec299420f173c566c5b2873a1 Mon Sep 17 00:00:00 2001 From: "ci-robbot [bot]" <105103991+ci-robbot@users.noreply.github.com> Date: Sun, 11 Jun 2023 15:44:06 +0200 Subject: [PATCH 22/22] :arrow_up: Update go-skynet/go-llama.cpp (#561) Signed-off-by: GitHub Co-authored-by: mudler --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index cf763825..a849aeee 100644 --- a/Makefile +++ b/Makefile @@ -3,7 +3,7 @@ GOTEST=$(GOCMD) test GOVET=$(GOCMD) vet BINARY_NAME=local-ai -GOLLAMA_VERSION?=4772ec5e91570ee3b1846b4a17b080cb019d745b +GOLLAMA_VERSION?=53d9b5735740f37eec8ed10a50268da9442dfe5e GPT4ALL_REPO?=https://github.com/go-skynet/gpt4all GPT4ALL_VERSION?=f7498c9 GOGGMLTRANSFORMERS_VERSION?=01b8436f44294d0e1267430f9eda4460458cec54