diff --git a/Chat.go b/Chat.go index 464be49..e9dfac5 100644 --- a/Chat.go +++ b/Chat.go @@ -2,8 +2,6 @@ package main import ( "context" - "fmt" - "log" "sort" "time" @@ -27,8 +25,7 @@ func DeleteMessageHandler(c *fiber.Ctx) error { messageUUID, err := edgedb.ParseUUID(messageId) if err != nil { - fmt.Println("Error in uuid.FromString: in DeleteMessageHandler") - fmt.Println(err) + panic(err) } // Delete all messages @@ -39,8 +36,7 @@ func DeleteMessageHandler(c *fiber.Ctx) error { FILTER .position >= messageArea.position AND .conversation = messageArea.conversation; `, messageUUID) if err != nil { - fmt.Println("Error in edgeClient.Execute: in DeleteMessageHandler") - fmt.Println(err) + panic(err) } return c.SendString(generateChatHTML()) @@ -146,7 +142,7 @@ func GetMessageContentHandler(c *fiber.Ctx) error { .id = $0; `, &selectedMessage, messageUUID) if err != nil { - log.Fatal(err) + panic(err) } if onlyContent == "true" { @@ -172,7 +168,7 @@ func GetMessageContentHandler(c *fiber.Ctx) error { SET {selected := false}; `, messageUUID) if err != nil { - log.Fatal(err) + panic(err) } _ = edgeClient.Execute(edgeCtx, ` @@ -254,7 +250,7 @@ func GetEditMessageFormHandler(c *fiber.Ctx) error { FILTER .id = $0; `, &message, idUUID) if err != nil { - log.Fatal(err) + panic(err) } tmpl := pongo2.Must(pongo2.FromFile("views/partials/edit-message-form.html")) @@ -277,15 +273,12 @@ func RedoMessageHandler(c *fiber.Ctx) error { FILTER .position > messageArea.position AND .conversation = messageArea.conversation; `, messageUUID) if err != nil { - fmt.Println("Error in edgeClient.Execute: in DeleteMessageHandler") - fmt.Println(err) + panic(err) } messageOut, err := botTmpl.Execute(pongo2.Context{"IsPlaceholder": true}) if err != nil { - c.Status(fiber.StatusInternalServerError).JSON(fiber.Map{ - "error": "Error rendering template", - }) + panic(err) } return c.SendString(messageOut) @@ -298,8 +291,7 @@ func ClearChatHandler(c *fiber.Ctx) error { FILTER .user = global currentUser AND .name = "Default"; `) if err != nil { - fmt.Println("Error in edgeClient.Execute: in ClearChatHandler") - fmt.Println(err) + panic(err) } return c.SendString(generateChatHTML()) @@ -321,8 +313,7 @@ func LoadUsageKPIHandler(c *fiber.Ctx) error { SELECT sum(U.input_cost) + sum(U.output_cost) `, &TotalUsage) if err != nil { - fmt.Println("Error in edgedb.QuerySingle: in LoadUsageKPIHandler") - log.Fatal(err) + panic(err) } now := time.Now() @@ -338,8 +329,7 @@ func LoadUsageKPIHandler(c *fiber.Ctx) error { SELECT sum(U.input_cost) + sum(U.output_cost) `, &TodayUsage, now.Add(time.Hour*-24)) if err != nil { - fmt.Println("Error in edgedb.QuerySingle: in LoadUsageKPIHandler") - log.Fatal(err) + panic(err) } var WeekUsage float32 @@ -368,9 +358,7 @@ func LoadUsageKPIHandler(c *fiber.Ctx) error { "TotalUsage": TotalUsage, "TodayUsage": TodayUsage, "WeekUsage": WeekUsage, "MonthUsage": MonthUsage, }) if err != nil { - c.Status(fiber.StatusInternalServerError).JSON(fiber.Map{ - "error": "Error rendering template", - }) + panic(err) } return c.SendString(out) } @@ -392,9 +380,7 @@ func LoadKeysHandler(c *fiber.Ctx) error { "AnyExists": openaiExists || anthropicExists || mistralExists || groqExists || gooseaiExists || googleExists, }) if err != nil { - c.Status(fiber.StatusInternalServerError).JSON(fiber.Map{ - "error": "Error rendering template", - }) + panic(err) } return c.SendString(out) } @@ -419,8 +405,7 @@ func LoadModelSelectionHandler(c *fiber.Ctx) error { FILTER .user = global currentUser AND .name != 'none' `, &llms) if err != nil { - fmt.Println("Error in edgeClient.Query: in LoadModelSelectionHandler") - log.Fatal(err) + panic(err) } for i := 0; i < len(llms); i++ { @@ -442,9 +427,7 @@ func LoadModelSelectionHandler(c *fiber.Ctx) error { "LLMs": llms, }) if err != nil { - c.Status(fiber.StatusInternalServerError).JSON(fiber.Map{ - "error": "Error rendering template", - }) + panic(err) } return c.SendString(out) @@ -456,9 +439,7 @@ func LoadSettingsHandler(c *fiber.Ctx) error { } out, err := pongo2.Must(pongo2.FromFile("views/partials/popover-settings.html")).Execute(pongo2.Context{"IsLogin": checkIfLogin()}) if err != nil { - c.Status(fiber.StatusInternalServerError).JSON(fiber.Map{ - "error": "Error rendering template", - }) + panic(err) } return c.SendString(out) } diff --git a/LLM.go b/LLM.go index a82ea18..d223d98 100644 --- a/LLM.go +++ b/LLM.go @@ -1,8 +1,6 @@ package main import ( - "fmt" - "github.com/edgedb/edgedb-go" "github.com/flosch/pongo2" "github.com/gofiber/fiber/v2" @@ -18,8 +16,7 @@ func deleteLLM(c *fiber.Ctx) error { FILTER .id = $0; `, idUUID) if err != nil { - fmt.Println("Error in edgeClient.Execute: in deleteLLM") - fmt.Println(err) + panic(err) } return c.SendString("") @@ -28,9 +25,7 @@ func deleteLLM(c *fiber.Ctx) error { func openLlmModal(c *fiber.Ctx) error { out, err := pongo2.Must(pongo2.FromFile("views/partials/modal-llm-setting.html")).Execute(pongo2.Context{}) if err != nil { - c.Status(fiber.StatusInternalServerError).JSON(fiber.Map{ - "error": "Error rendering template", - }) + panic(err) } return c.SendString(out) } diff --git a/Request.go b/Request.go index 0a4c8f7..e116fa4 100644 --- a/Request.go +++ b/Request.go @@ -3,7 +3,6 @@ package main import ( "context" "fmt" - "log" "strings" "sync" "time" @@ -50,8 +49,7 @@ func GeneratePlaceholderHandler(c *fiber.Ctx) error { .id = $0; `, &selectedLLM, idUUID) if err != nil { - fmt.Println("Error trying to select the unique LLM") - log.Fatal(err) + panic(err) } selectedLLMs = append(selectedLLMs, selectedLLM) } @@ -136,8 +134,7 @@ func GenerateMultipleMessagesHandler(c *fiber.Ctx) error { FILTER .id = $0; `, &message, messageID) if err != nil { - fmt.Println("Error in edgedb.QuerySingle: in HandleGenerateMultipleMessages 1") - log.Fatal(err) + panic(err) } templateMessage := TemplateMessage{ @@ -165,8 +162,7 @@ func GenerateMultipleMessagesHandler(c *fiber.Ctx) error { "ConversationAreaId": message.Area.Position, }) if err != nil { - fmt.Println("Error in modelSelecBtnTmpl.Execute: in HandleGenerateMultipleMessages 3") - log.Fatal(err) + panic(err) } outBtn = strings.ReplaceAll(outBtn, "\n", "") @@ -192,8 +188,7 @@ func GenerateMultipleMessagesHandler(c *fiber.Ctx) error { "ConversationAreaId": message.Area.Position, }) if err != nil { - fmt.Println("Error in modelSelecBtnTmpl.Execute: in HandleGenerateMultipleMessages 3") - log.Fatal(err) + panic(err) } // Replace newline characters to prevent premature termination diff --git a/RequestAnthropic.go b/RequestAnthropic.go index a368c4f..7d9d629 100644 --- a/RequestAnthropic.go +++ b/RequestAnthropic.go @@ -40,7 +40,7 @@ func addAnthropicMessage(llm LLM, selected bool) edgedb.UUID { chatCompletion, err := RequestAnthropic(llm.Model.ModelID, Messages, int(llm.Model.MaxToken), float64(llm.Temperature)) if err != nil { - fmt.Println("Error:", err) + panic(err) } else if len(chatCompletion.Content) == 0 { fmt.Println("No response from Anthropic") id := insertBotMessage("No response from Anthropic", selected, llm.ID) @@ -49,7 +49,6 @@ func addAnthropicMessage(llm LLM, selected bool) edgedb.UUID { id := insertBotMessage(chatCompletion.Content[0].Text, selected, llm.ID) return id } - return edgedb.UUID{} } func TestAnthropicKey(apiKey string) bool { diff --git a/RequestGoogle.go b/RequestGoogle.go index 3486dcf..b80ba98 100644 --- a/RequestGoogle.go +++ b/RequestGoogle.go @@ -49,7 +49,7 @@ func addGoogleMessage(llm LLM, selected bool) edgedb.UUID { chatCompletion, err := RequestGoogle(llm.Model.ModelID, Messages, float64(llm.Temperature)) if err != nil { - fmt.Println("Error:", err) + panic(err) } else if len(chatCompletion.Choices) == 0 { fmt.Println("No response from OpenAI") id := insertBotMessage("No response from OpenAI", selected, llm.ID) @@ -59,7 +59,6 @@ func addGoogleMessage(llm LLM, selected bool) edgedb.UUID { id := insertBotMessage(Content, selected, llm.ID) return id } - return edgedb.UUID{} } func TestGoogleKey(apiKey string) bool { diff --git a/RequestGooseai.go b/RequestGooseai.go index f0ccb95..378336f 100644 --- a/RequestGooseai.go +++ b/RequestGooseai.go @@ -34,7 +34,7 @@ func addGooseaiMessage(llm LLM, selected bool) edgedb.UUID { chatCompletion, err := RequestGooseai(llm.Model.ModelID, Messages, float64(llm.Temperature)) if err != nil { - fmt.Println("Error:", err) + panic(err) } else if len(chatCompletion.Choices) == 0 { fmt.Println("No response from GooseAI") id := insertBotMessage("No response from GooseAI", selected, llm.ID) @@ -44,7 +44,6 @@ func addGooseaiMessage(llm LLM, selected bool) edgedb.UUID { id := insertBotMessage(Content, selected, llm.ID) return id } - return edgedb.UUID{} } func TestGooseaiKey(apiKey string) bool { diff --git a/RequestGroq.go b/RequestGroq.go index d102ade..4343ae4 100644 --- a/RequestGroq.go +++ b/RequestGroq.go @@ -42,7 +42,7 @@ func addGroqMessage(llm LLM, selected bool) edgedb.UUID { chatCompletion, err := RequestGroq(llm.Model.ModelID, Messages, float64(llm.Temperature)) if err != nil { - fmt.Println("Error:", err) + panic(err) } else if len(chatCompletion.Choices) == 0 { fmt.Println("No response from Groq") id := insertBotMessage("No response from Groq", selected, llm.ID) @@ -52,7 +52,6 @@ func addGroqMessage(llm LLM, selected bool) edgedb.UUID { id := insertBotMessage(Content, selected, llm.ID) return id } - return edgedb.UUID{} } func TestGroqKey(apiKey string) bool { diff --git a/RequestMistral.go b/RequestMistral.go index ea8c09a..cbc1b95 100644 --- a/RequestMistral.go +++ b/RequestMistral.go @@ -41,7 +41,7 @@ func addMistralMessage(llm LLM, selected bool) edgedb.UUID { chatCompletion, err := RequestMistral(llm.Model.ModelID, Messages, float64(llm.Temperature)) if err != nil { - fmt.Println("Error:", err) + panic(err) } else if len(chatCompletion.Choices) == 0 { fmt.Println("No response from Mistral") id := insertBotMessage("No response from Mistral", selected, llm.ID) @@ -51,7 +51,6 @@ func addMistralMessage(llm LLM, selected bool) edgedb.UUID { id := insertBotMessage(Content, selected, llm.ID) return id } - return edgedb.UUID{} } func TestMistralKey(apiKey string) bool { diff --git a/RequestOpenai.go b/RequestOpenai.go index 192f3d6..72fa3df 100644 --- a/RequestOpenai.go +++ b/RequestOpenai.go @@ -42,7 +42,7 @@ func addOpenaiMessage(llm LLM, selected bool) edgedb.UUID { chatCompletion, err := RequestOpenai(llm.Model.ModelID, Messages, float64(llm.Temperature)) if err != nil { - fmt.Println("Error:", err) + panic(err) } else if len(chatCompletion.Choices) == 0 { fmt.Println("No response from OpenAI") id := insertBotMessage("No response from OpenAI", selected, llm.ID) @@ -52,7 +52,6 @@ func addOpenaiMessage(llm LLM, selected bool) edgedb.UUID { id := insertBotMessage(Content, selected, llm.ID) return id } - return edgedb.UUID{} } func TestOpenaiKey(apiKey string) bool { diff --git a/chatCommands.go b/chatCommands.go deleted file mode 100644 index cf67fc2..0000000 --- a/chatCommands.go +++ /dev/null @@ -1,37 +0,0 @@ -package main - -import ( - "github.com/gofiber/fiber/v2" -) - -type Command struct { - Name string - Trigger string - Handler func(c *fiber.Ctx) string -} - -var Commands []Command - -func init() { - Commands = []Command{ - { - Name: "Clear", - Trigger: "clear", - Handler: ClearCommandHandler, - }, - } -} - -func ClearCommandHandler(c *fiber.Ctx) string { - // DOTO clear the chat - return "" -} - -func DetectCommand(message string, c *fiber.Ctx) (string, bool) { - for _, command := range Commands { - if command.Trigger == message { - return command.Handler(c), true - } - } - return "", false // No command detected -} diff --git a/database.go b/database.go index f80d17a..3feb6b5 100644 --- a/database.go +++ b/database.go @@ -2,8 +2,6 @@ package main import ( "context" - "fmt" - "log" "time" "github.com/edgedb/edgedb-go" @@ -93,8 +91,7 @@ func init() { var ctx = context.Background() client, err := edgedb.CreateClient(ctx, edgedb.Options{}) if err != nil { - fmt.Println("Error in edgedb.CreateClient: in init") - log.Fatal(err) + panic(err) } edgeCtx = ctx @@ -110,8 +107,7 @@ func getLastArea() edgedb.UUID { limit 1 `, &inserted) if err != nil { - fmt.Println("Error in edgedb.QuerySingle: in getLastArea") - log.Fatal(err) + panic(err) } return inserted.id } @@ -135,8 +131,7 @@ func addUsage(inputCost float32, outputCost float32, inputToken int32, outputTok } `, inputCost, outputCost, inputToken, outputToken, modelID) if err != nil { - fmt.Println("Error in edgedb.QuerySingle: in addUsage") - log.Fatal(err) + panic(err) } } @@ -149,8 +144,7 @@ func insertNewConversation() edgedb.UUID { } `, &inserted) if err != nil { - fmt.Println("Error in edgedb.QuerySingle: in insertNewConversation") - log.Fatal(err) + panic(err) } return inserted.id } @@ -182,8 +176,7 @@ func insertArea() (edgedb.UUID, int64) { } `, &inserted) if err != nil { - fmt.Println("Error in edgedb.QuerySingle: in insertArea") - log.Fatal(err) + panic(err) } var positionSet struct{ position int64 } @@ -196,8 +189,7 @@ func insertArea() (edgedb.UUID, int64) { LIMIT 1 `, &positionSet) if err != nil { - fmt.Println("Error in edgedb.QuerySingle: in insertArea") - log.Fatal(err) + panic(err) } return inserted.id, positionSet.position @@ -227,8 +219,7 @@ func insertUserMessage(content string) edgedb.UUID { } `, &inserted, "user", content, lastAreaID) if err != nil { - fmt.Println("Error in edgedb.QuerySingle: in insertUserMessage") - log.Fatal(err) + panic(err) } return inserted.id } @@ -259,8 +250,7 @@ func insertBotMessage(content string, selected bool, llmUUID edgedb.UUID) edgedb } `, &inserted, "bot", llmUUID, content, selected, lastAreaID) if err != nil { - fmt.Println("Error in edgedb.QuerySingle: in insertBotMessage") - log.Fatal(err) + panic(err) } return inserted.id } @@ -294,8 +284,7 @@ func getAllMessages() []Message { ORDER BY .date ASC `, &messages) if err != nil { - fmt.Println("Error in edgedb.Query: in getAllMessages") - fmt.Println(err) + panic(err) } return messages @@ -328,8 +317,7 @@ func getAllSelectedMessages() []Message { ORDER BY .date ASC `, &messages) if err != nil { - fmt.Println("Error in edgedb.Query: in getAllMessages") - fmt.Println(err) + panic(err) } return messages @@ -339,8 +327,7 @@ func getCurrentUserKeys() []Key { var result []Key err := edgeClient.Query(edgeCtx, "SELECT global currentUser.setting.keys", &result) if err != nil { - fmt.Println("Error in edgedb.Query: in getCurrentUserKeys") - fmt.Println(err) + panic(err) } return result } diff --git a/main.go b/main.go index eb313d4..2ede845 100644 --- a/main.go +++ b/main.go @@ -3,11 +3,13 @@ package main import ( "bufio" "fmt" + "log" "sync" "github.com/flosch/pongo2" "github.com/gofiber/fiber/v2" "github.com/gofiber/fiber/v2/middleware/logger" + "github.com/gofiber/fiber/v2/middleware/recover" "github.com/gofiber/template/django/v3" ) @@ -54,6 +56,7 @@ func main() { // Add default logger app.Use(logger.New()) + app.Use(recover.New()) // Add static files app.Static("/", "./static") @@ -133,7 +136,7 @@ func main() { }) // Start server - app.Listen(":8080") + log.Fatal(app.Listen(":3000")) } func addKeys(c *fiber.Ctx) error { @@ -160,8 +163,7 @@ func addKeys(c *fiber.Ctx) error { ); `, &Exists) if err != nil { - fmt.Println("Error in edgedb.QuerySingle: in addOpenaiKey") - fmt.Println(err) + panic(err) } if Exists { @@ -173,8 +175,7 @@ func addKeys(c *fiber.Ctx) error { } `, "openai", openaiKey) if err != nil { - fmt.Println("Error in edgedb.QuerySingle: in addOpenaiKey") - fmt.Println(err) + panic(err) } } else { err = edgeClient.Execute(edgeCtx, ` @@ -191,8 +192,7 @@ func addKeys(c *fiber.Ctx) error { ) }`, openaiKey) if err != nil { - fmt.Println("Error in edgedb.QuerySingle: in addOpenaiKey") - fmt.Println(err) + panic(err) } } } @@ -212,8 +212,7 @@ func addKeys(c *fiber.Ctx) error { ); `, &Exists) if err != nil { - fmt.Println("Error in edgedb.QuerySingle: in addAnthropicKey") - fmt.Println(err) + panic(err) } if Exists { @@ -224,8 +223,7 @@ func addKeys(c *fiber.Ctx) error { } `, anthropicKey) if err != nil { - fmt.Println("Error in edgedb.QuerySingle: in addAnthropicKey") - fmt.Println(err) + panic(err) } } else { err = edgeClient.Execute(edgeCtx, ` @@ -242,8 +240,7 @@ func addKeys(c *fiber.Ctx) error { ) }`, anthropicKey) if err != nil { - fmt.Println("Error in edgedb.QuerySingle: in addAnthropicKey") - fmt.Println(err) + panic(err) } } } @@ -263,8 +260,7 @@ func addKeys(c *fiber.Ctx) error { ); `, &Exists) if err != nil { - fmt.Println("Error in edgedb.QuerySingle: in addMistralKey") - fmt.Println(err) + panic(err) } if Exists { @@ -275,8 +271,7 @@ func addKeys(c *fiber.Ctx) error { } `, mistralKey) if err != nil { - fmt.Println("Error in edgedb.QuerySingle: in addMistralKey") - fmt.Println(err) + panic(err) } } else { err = edgeClient.Execute(edgeCtx, ` @@ -293,8 +288,7 @@ func addKeys(c *fiber.Ctx) error { ) }`, mistralKey) if err != nil { - fmt.Println("Error in edgedb.QuerySingle: in addMistralKey") - fmt.Println(err) + panic(err) } } } @@ -314,8 +308,7 @@ func addKeys(c *fiber.Ctx) error { ); `, &Exists) if err != nil { - fmt.Println("Error in edgedb.QuerySingle: in addGroqKey") - fmt.Println(err) + panic(err) } if Exists { @@ -326,8 +319,7 @@ func addKeys(c *fiber.Ctx) error { } `, groqKey) if err != nil { - fmt.Println("Error in edgedb.QuerySingle: in addGroqKey") - fmt.Println(err) + panic(err) } } else { err = edgeClient.Execute(edgeCtx, ` @@ -344,8 +336,7 @@ func addKeys(c *fiber.Ctx) error { ) }`, groqKey) if err != nil { - fmt.Println("Error in edgedb.QuerySingle: in addGroqKey") - fmt.Println(err) + panic(err) } } } @@ -365,8 +356,7 @@ func addKeys(c *fiber.Ctx) error { ); `, &Exists) if err != nil { - fmt.Println("Error in edgedb.QuerySingle: in addGooseaiKey") - fmt.Println(err) + panic(err) } if Exists { @@ -377,8 +367,7 @@ func addKeys(c *fiber.Ctx) error { } `, gooseaiKey) if err != nil { - fmt.Println("Error in edgedb.QuerySingle: in addGooseaiKey") - fmt.Println(err) + panic(err) } } else { err = edgeClient.Execute(edgeCtx, ` @@ -395,8 +384,7 @@ func addKeys(c *fiber.Ctx) error { ) }`, gooseaiKey) if err != nil { - fmt.Println("Error in edgedb.QuerySingle: in addGooseaiKey") - fmt.Println(err) + panic(err) } } } @@ -416,8 +404,7 @@ func addKeys(c *fiber.Ctx) error { ); `, &Exists) if err != nil { - fmt.Println("Error in edgedb.QuerySingle: in addGoogleKey") - fmt.Println(err) + panic(err) } if Exists { @@ -428,8 +415,7 @@ func addKeys(c *fiber.Ctx) error { } `, googleKey) if err != nil { - fmt.Println("Error in edgedb.QuerySingle: in addGoogleKey") - fmt.Println(err) + panic(err) } } else { err = edgeClient.Execute(edgeCtx, ` @@ -446,8 +432,7 @@ func addKeys(c *fiber.Ctx) error { ) }`, googleKey) if err != nil { - fmt.Println("Error in edgedb.QuerySingle: in addGoogleKey") - fmt.Println(err) + panic(err) } } } diff --git a/utils.go b/utils.go index 671d149..9ef453d 100644 --- a/utils.go +++ b/utils.go @@ -2,7 +2,6 @@ package main import ( "bytes" - "fmt" "regexp" "github.com/yuin/goldmark" @@ -59,8 +58,6 @@ func getExistingKeys() (bool, bool, bool, bool, bool, bool) { ); `, &openaiExists) if err != nil { - fmt.Println("Error in edgedb.QuerySingle checking for openai: ", err) - //fatal error panic(err) } @@ -71,7 +68,6 @@ func getExistingKeys() (bool, bool, bool, bool, bool, bool) { ); `, &anthropicExists) if err != nil { - fmt.Println("Error in edgedb.QuerySingle checking for anthropic: ", err) panic(err) } @@ -82,7 +78,6 @@ func getExistingKeys() (bool, bool, bool, bool, bool, bool) { ); `, &mistralExists) if err != nil { - fmt.Println("Error in edgedb.QuerySingle checking for mistral: ", err) panic(err) } @@ -93,7 +88,6 @@ func getExistingKeys() (bool, bool, bool, bool, bool, bool) { ); `, &groqExists) if err != nil { - fmt.Println("Error in edgedb.QuerySingle checking for mistral: ", err) panic(err) } @@ -104,7 +98,6 @@ func getExistingKeys() (bool, bool, bool, bool, bool, bool) { ); `, &gooseaiExists) if err != nil { - fmt.Println("Error in edgedb.QuerySingle checking for gooseai: ", err) panic(err) } @@ -115,7 +108,6 @@ func getExistingKeys() (bool, bool, bool, bool, bool, bool) { ); `, &googleExists) if err != nil { - fmt.Println("Error in edgedb.QuerySingle checking for google: ", err) panic(err) }