75 lines
1.5 KiB
Go
75 lines
1.5 KiB
Go
package main
|
|
|
|
import (
|
|
"encoding/json"
|
|
"strconv"
|
|
|
|
"github.com/edgedb/edgedb-go"
|
|
"github.com/gofiber/fiber/v2"
|
|
)
|
|
|
|
// LLM stuff
|
|
func deleteLLM(c *fiber.Ctx) error {
|
|
var selectedLLMIds []string
|
|
err := json.Unmarshal([]byte(c.FormValue("selectedLLMIds")), &selectedLLMIds)
|
|
if err != nil {
|
|
// Handle the error
|
|
panic(err)
|
|
}
|
|
|
|
for _, id := range selectedLLMIds {
|
|
idUUID, _ := edgedb.ParseUUID(id)
|
|
err := edgeClient.Execute(edgeCtx, `
|
|
UPDATE LLM
|
|
FILTER .id = <uuid>$0 AND .user = global currentUser
|
|
SET {
|
|
to_delete := true
|
|
};
|
|
`, idUUID)
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
}
|
|
|
|
deleteLLMtoDelete()
|
|
|
|
return c.SendString(GenerateModelPopoverHTML(true))
|
|
}
|
|
|
|
func deleteLLMtoDelete() {
|
|
err := edgeClient.Execute(edgeCtx, `
|
|
delete LLM
|
|
filter .to_delete = true and not exists(
|
|
select Message filter .llm = LLM
|
|
);
|
|
`)
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
}
|
|
|
|
func createLLM(c *fiber.Ctx) error {
|
|
name := c.FormValue("model-name-input")
|
|
modelID := c.FormValue("selectedLLMId")
|
|
temperature := c.FormValue("temperature-slider")
|
|
systemPrompt := c.FormValue("model-prompt-input")
|
|
|
|
f, _ := strconv.ParseFloat(temperature, 32)
|
|
temperatureFloat := float32(f)
|
|
|
|
err := edgeClient.Execute(edgeCtx, `
|
|
INSERT LLM {
|
|
name := <str>$0,
|
|
context := <str>$1,
|
|
temperature := <float32>$2,
|
|
modelInfo := (SELECT ModelInfo FILTER .modelID = <str>$3 LIMIT 1),
|
|
user := global currentUser
|
|
}
|
|
`, name, systemPrompt, temperatureFloat, modelID)
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
|
|
return c.SendString(GenerateModelPopoverHTML(true))
|
|
}
|