From bd514dd1e901841f11505e20622b5a2296200cbb Mon Sep 17 00:00:00 2001 From: Adrien Date: Sun, 5 May 2024 21:43:54 +0200 Subject: [PATCH] Total usage KPI --- Chat.go | 31 ++++++++++++++++++++++++++++++- main.go | 3 +-- views/chat.html | 15 +-------------- views/partials/usagePopover.html | 15 +++++++++++++++ 4 files changed, 47 insertions(+), 17 deletions(-) create mode 100644 views/partials/usagePopover.html diff --git a/Chat.go b/Chat.go index 25cac75..58e1698 100644 --- a/Chat.go +++ b/Chat.go @@ -17,7 +17,7 @@ func ChatPageHandler(c *fiber.Ctx) error { func LoadModelSelectionHandler(c *fiber.Ctx) error { CheckedModels := []string{"gpt-3.5-turbo"} // Default model - out, err := modelsPopoverTmpl.Execute(pongo2.Context{ + out, err := pongo2.Must(pongo2.FromFile("views/partials/modelsPopover.html")).Execute(pongo2.Context{ "CompanyInfos": CompanyInfos, "CheckedModels": CheckedModels, }) @@ -29,6 +29,35 @@ func LoadModelSelectionHandler(c *fiber.Ctx) error { return c.SendString(out) } +func LoadUsageKPIHandler(c *fiber.Ctx) error { + var TotalUsage float32 + // Using the database. Get the sum of all usage.inputCost and outputCost + err := edgeClient.QuerySingle(edgeCtx, ` + WITH + U := ( + SELECT Usage + FILTER .user = global currentUser + ) + SELECT sum(U.input_cost) + sum(U.output_cost) + `, &TotalUsage) + if err != nil { + fmt.Println("Error in edgedb.QuerySingle: in LoadUsageKPIHandler") + log.Fatal(err) + } + + fmt.Println(TotalUsage) + + out, err := pongo2.Must(pongo2.FromFile("views/partials/usagePopover.html")).Execute(pongo2.Context{ + "TotalUsage": TotalUsage, + }) + if err != nil { + c.Status(fiber.StatusInternalServerError).JSON(fiber.Map{ + "error": "Error rendering template", + }) + } + return c.SendString(out) +} + func DeleteMessageHandler(c *fiber.Ctx) error { messageId := c.FormValue("id") diff --git a/main.go b/main.go index be59e8e..1d27929 100644 --- a/main.go +++ b/main.go @@ -11,12 +11,10 @@ import ( var userTmpl *pongo2.Template var botTmpl *pongo2.Template -var modelsPopoverTmpl *pongo2.Template func main() { botTmpl = pongo2.Must(pongo2.FromFile("views/partials/message-bot.html")) userTmpl = pongo2.Must(pongo2.FromFile("views/partials/message-user.html")) - modelsPopoverTmpl = pongo2.Must(pongo2.FromFile("views/partials/modelsPopover.html")) // Import HTML using django engine/template engine := django.New("./views", ".html") @@ -40,6 +38,7 @@ func main() { app.Get("/loadChat", LoadChatHandler) // Load chat app.Post("/deleteMessage", DeleteMessageHandler) // Delete message app.Get("/loadModelSelection", LoadModelSelectionHandler) // Load model selection + app.Get("/loadUsageKPI", LoadUsageKPIHandler) // Load usage KPI app.Get("/generateMultipleMessages", GenerateMultipleMessages) // Generate multiple messages app.Get("/messageContent", GetMessageContentHandler) diff --git a/views/chat.html b/views/chat.html index bd39682..d7bd512 100644 --- a/views/chat.html +++ b/views/chat.html @@ -8,20 +8,7 @@
- + diff --git a/views/partials/usagePopover.html b/views/partials/usagePopover.html new file mode 100644 index 0000000..bc9d58d --- /dev/null +++ b/views/partials/usagePopover.html @@ -0,0 +1,15 @@ + \ No newline at end of file