diff --git a/Chat.go b/Chat.go index cfd7ec1..9b5cd2f 100644 --- a/Chat.go +++ b/Chat.go @@ -35,7 +35,7 @@ func ChatPageHandler(c *fiber.Ctx) error { func LoadModelSelectionHandler(c *fiber.Ctx) error { CheckedModels := []string{"gpt-3.5-turbo"} // Default model - out, err := popoverTmpl.Execute(pongo2.Context{ + out, err := modelsPopoverTmpl.Execute(pongo2.Context{ "CompanyInfos": CompanyInfos, "CheckedModels": CheckedModels, }) @@ -47,6 +47,18 @@ func LoadModelSelectionHandler(c *fiber.Ctx) error { return c.SendString(out) } +func LoadConversationsSelectionHandler(c *fiber.Ctx) error { + out, err := conversationsPopoverTmpl.Execute(pongo2.Context{ + "Conversations": "", + }) + 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") @@ -136,6 +148,7 @@ type NextMessage struct { Content string Hidden bool Id string + Name string } func generateChatHTML() string { @@ -176,6 +189,7 @@ func generateChatHTML() string { Content: markdownToHTML(message.Content), Hidden: !message.Selected, // Assuming Hidden is a field you want to include from Message Id: message.ID.Hex(), + Name: model2Name(message.Model), } NextMessages = append(NextMessages, nextMsg) @@ -209,7 +223,7 @@ func generateChatHTML() string { func GetMessageContentHandler(c *fiber.Ctx) error { messageId := c.FormValue("id") - fmt.Println(messageId) + collection := mongoClient.Database("chat").Collection("messages") objectID, err := primitive.ObjectIDFromHex(messageId) if err != nil { @@ -226,7 +240,16 @@ func GetMessageContentHandler(c *fiber.Ctx) error { }) } - fmt.Println(selectedMessage) + out := "
" + out += " " - return c.SendString(selectedMessage.Content) + return c.SendString(out) } diff --git a/Request.go b/Request.go index 64c67ec..dee9038 100644 --- a/Request.go +++ b/Request.go @@ -28,6 +28,7 @@ type CompanyInfo struct { } var CompanyInfos []CompanyInfo +var ModelsInfos []ModelInfo type MultipleModelsCompletionRequest struct { ModelIds []string @@ -101,7 +102,7 @@ func RequestMultipleMessages(c *fiber.Ctx) error { out := "" HexID := result.InsertedID.(primitive.ObjectID).Hex() - messageOut, _ := userTmpl.Execute(pongo2.Context{"Content": message, "ID": HexID}) + messageOut, _ := userTmpl.Execute(pongo2.Context{"Content": markdownToHTML(message), "ID": HexID}) out += messageOut messageOut, _ = botTmpl.Execute(pongo2.Context{"IsPlaceholder": true, "SelectedModelIds": selectedModelIds, "Message": message}) diff --git a/RequestAnthropic.go b/RequestAnthropic.go index eeb19ce..770b00a 100644 --- a/RequestAnthropic.go +++ b/RequestAnthropic.go @@ -55,6 +55,7 @@ func init() { OutputPrice: 1.50 / 1000000, } ModelInfosList = append(ModelInfosList, modelInfo) + ModelsInfos = append(ModelsInfos, modelInfo) modelInfo = ModelInfo{ ID: "claude-3-sonnet-20240229", @@ -65,6 +66,7 @@ func init() { OutputPrice: 1.50 / 1000000, } ModelInfosList = append(ModelInfosList, modelInfo) + ModelsInfos = append(ModelsInfos, modelInfo) modelInfo = ModelInfo{ ID: "claude-3-opus-20240229", @@ -75,6 +77,7 @@ func init() { OutputPrice: 1.50 / 1000000, } ModelInfosList = append(ModelInfosList, modelInfo) + ModelsInfos = append(ModelsInfos, modelInfo) companyInfo := CompanyInfo{ ID: "anthropic", diff --git a/RequestOpenai.go b/RequestOpenai.go index b0cf56c..c25f901 100644 --- a/RequestOpenai.go +++ b/RequestOpenai.go @@ -57,6 +57,7 @@ func init() { OutputPrice: 1.50 / 1000000, } ModelInfosList = append(ModelInfosList, modelInfo) + ModelsInfos = append(ModelsInfos, modelInfo) modelInfo = ModelInfo{ ID: "gpt-4-turbo", @@ -67,6 +68,7 @@ func init() { OutputPrice: 30.00 / 1000000, } ModelInfosList = append(ModelInfosList, modelInfo) + ModelsInfos = append(ModelsInfos, modelInfo) companyInfo := CompanyInfo{ ID: "openai", diff --git a/main.go b/main.go index aaa3bc1..24fad16 100644 --- a/main.go +++ b/main.go @@ -11,12 +11,14 @@ import ( var userTmpl *pongo2.Template var botTmpl *pongo2.Template -var popoverTmpl *pongo2.Template +var modelsPopoverTmpl *pongo2.Template +var conversationsPopoverTmpl *pongo2.Template func main() { botTmpl = pongo2.Must(pongo2.FromFile("views/partials/message-bot.html")) userTmpl = pongo2.Must(pongo2.FromFile("views/partials/message-user.html")) - popoverTmpl = pongo2.Must(pongo2.FromFile("views/partials/popover.html")) + modelsPopoverTmpl = pongo2.Must(pongo2.FromFile("views/partials/modelsPopover.html")) + conversationsPopoverTmpl = pongo2.Must(pongo2.FromFile("views/partials/conversationsPopover.html")) // Import HTML using django engine/template engine := django.New("./views", ".html") @@ -35,8 +37,7 @@ func main() { app.Static("/", "./static") // Add routes - app.Get("/", indexHandler) // Welcome page - app.Get("/chat", ChatPageHandler) // Complete chat page + app.Get("/", ChatPageHandler) // Complete chat page app.Post("/requestMultipleMessages", RequestMultipleMessages) // Request multiple messages app.Get("/loadChat", LoadChatHandler) // Load chat app.Post("/deleteMessage", DeleteMessageHandler) // Delete message @@ -51,7 +52,3 @@ func main() { // Start server app.Listen(":8080") } - -func indexHandler(c *fiber.Ctx) error { - return c.Render("welcome", fiber.Map{}, "layouts/main") -} diff --git a/utils.go b/utils.go index e6ac5ab..f0433b0 100644 --- a/utils.go +++ b/utils.go @@ -34,3 +34,12 @@ func model2Icon(model string) string { } return "openai" } + +func model2Name(model string) string { + for i := range ModelsInfos { + if ModelsInfos[i].ID == model { + return ModelsInfos[i].Name + } + } + return "OpenAI" +} diff --git a/views/chat.html b/views/chat.html index 4abe6be..97e0b1a 100644 --- a/views/chat.html +++ b/views/chat.html @@ -3,21 +3,30 @@