package main import ( "bytes" "regexp" "github.com/yuin/goldmark" highlighting "github.com/yuin/goldmark-highlighting" ) func markdownToHTML(markdownText string) string { var buf bytes.Buffer md := goldmark.New( goldmark.WithExtensions( highlighting.NewHighlighting(highlighting.WithStyle("monokai")), ), ) if err := md.Convert([]byte(markdownText), &buf); err != nil { panic(err) // Handle the error appropriately } return addCopyButtonsToCode(buf.String()) } func addCopyButtonsToCode(htmlContent string) string { buttonHTML := `` // Regular expression pattern to match
elements and insert the button right before
pattern := `(]*>)`
// Compile the regular expression
re := regexp.MustCompile(pattern)
// Replace each matched element with the updated HTML
updatedHTML := re.ReplaceAllString(htmlContent, "$1"+buttonHTML)
return updatedHTML
}
func getExistingKeys() (bool, bool, bool, bool, bool, bool) {
if edgeClient == nil {
return false, false, false, false, false, false
}
var (
openaiExists bool
anthropicExists bool
mistralExists bool
groqExists bool
gooseaiExists bool
googleExists bool
)
err := edgeClient.QuerySingle(edgeCtx, `
select exists (
select global currentUser.setting.keys
filter .company.name = "openai"
);
`, &openaiExists)
if err != nil {
panic(err)
}
err = edgeClient.QuerySingle(edgeCtx, `
select exists (
select global currentUser.setting.keys
filter .company.name = "anthropic"
);
`, &anthropicExists)
if err != nil {
panic(err)
}
err = edgeClient.QuerySingle(edgeCtx, `
select exists (
select global currentUser.setting.keys
filter .company.name = "mistral"
);
`, &mistralExists)
if err != nil {
panic(err)
}
err = edgeClient.QuerySingle(edgeCtx, `
select exists (
select global currentUser.setting.keys
filter .company.name = "groq"
);
`, &groqExists)
if err != nil {
panic(err)
}
err = edgeClient.QuerySingle(edgeCtx, `
select exists (
select global currentUser.setting.keys
filter .company.name = "gooseai"
);
`, &gooseaiExists)
if err != nil {
panic(err)
}
err = edgeClient.QuerySingle(edgeCtx, `
select exists (
select global currentUser.setting.keys
filter .company.name = "google"
);
`, &googleExists)
if err != nil {
panic(err)
}
return openaiExists, anthropicExists, mistralExists, groqExists, gooseaiExists, googleExists
}
func Message2RequestMessage(messages []Message) []RequestMessage {
m := make([]RequestMessage, len(messages))
for i, msg := range messages {
var role string
switch msg.Role {
case "user":
role = "user"
case "bot":
role = "assistant"
default:
role = "system"
}
m[i] = RequestMessage{
Role: role,
Content: msg.Content,
}
}
return m
}
func GetAvailableModels() []ModelInfo {
// TODO Filter if key is not available
var models []ModelInfo
err := edgeClient.Query(edgeCtx, `
SELECT ModelInfo {
modelID,
name,
company : {
name,
icon
}
} FILTER .modelID != 'none' AND .company.name != 'huggingface'
`, &models)
if err != nil {
panic(err)
}
return models
}