Jade/LLM.go

78 lines
1.6 KiB
Go

package main
import (
"encoding/json"
"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")
// Transform the temperature to a float
temperatureparsed, err := json.Marshal(temperature)
if err != nil {
panic(err)
}
temperatureFloat := float32(temperatureparsed[1])
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))
}