diff --git a/Makefile b/Makefile index aa4dac1..ccf7b65 100644 --- a/Makefile +++ b/Makefile @@ -4,6 +4,9 @@ IMAGE_NAME?=webui tests: $(GOCMD) run github.com/onsi/ginkgo/v2/ginkgo --fail-fast -v -r ./... +webui-nokb: + $(MAKE) webui KBDISABLEINDEX=true + webui: cd example/webui && $(GOCMD) run ./ diff --git a/agent/agent.go b/agent/agent.go index 072ee60..a2d4321 100644 --- a/agent/agent.go +++ b/agent/agent.go @@ -38,6 +38,7 @@ type Agent struct { type RAGDB interface { Store(s string) error + Reset() error Search(s string, similarEntries int) ([]string, error) } diff --git a/example/webui/app.go b/example/webui/app.go index cb6ba56..23e036b 100644 --- a/example/webui/app.go +++ b/example/webui/app.go @@ -20,6 +20,13 @@ type ( } ) +func (a *App) KnowledgeBaseReset(db *InMemoryDatabase) func(c *fiber.Ctx) error { + return func(c *fiber.Ctx) error { + db.Reset() + return c.Redirect("/knowledgebase") + } +} + func (a *App) KnowledgeBaseFile(db *InMemoryDatabase) func(c *fiber.Ctx) error { return func(c *fiber.Ctx) error { // https://golang.withcodeexample.com/blog/file-upload-handling-golang-fiber-guide/ diff --git a/example/webui/rag.go b/example/webui/rag.go index 1d90e8f..5fa8b87 100644 --- a/example/webui/rag.go +++ b/example/webui/rag.go @@ -74,6 +74,17 @@ func (db *InMemoryDatabase) SaveToStore() error { return nil } + +func (db *InMemoryDatabase) Reset() error { + db.Lock() + db.Database = []string{} + db.Unlock() + if err := db.rag.Reset(); err != nil { + return err + } + return db.SaveDB() +} + func (db *InMemoryDatabase) AddEntry(entry string) error { db.Lock() defer db.Unlock() diff --git a/example/webui/routes.go b/example/webui/routes.go index 8038ca7..c57684b 100644 --- a/example/webui/routes.go +++ b/example/webui/routes.go @@ -58,8 +58,10 @@ func RegisterRoutes(webapp *fiber.App, pool *AgentPool, db *InMemoryDatabase, ap webapp.Post("/chat/:name", app.Chat(pool)) webapp.Post("/create", app.Create(pool)) webapp.Get("/delete/:name", app.Delete(pool)) + webapp.Post("/knowledgebase", app.KnowledgeBase(db)) webapp.Post("/knowledgebase/upload", app.KnowledgeBaseFile(db)) + webapp.Delete("/knowledgebase/reset", app.KnowledgeBaseReset(db)) webapp.Get("/talk/:name", func(c *fiber.Ctx) error { return c.Render("views/chat", fiber.Map{ diff --git a/example/webui/views/index.html b/example/webui/views/index.html index 6c0b2eb..b03fbbf 100644 --- a/example/webui/views/index.html +++ b/example/webui/views/index.html @@ -3,24 +3,70 @@