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