1
0
mirror of https://github.com/coalaura/whiskr.git synced 2025-09-09 09:19:54 +00:00
Files
whiskr/prompts.go

70 lines
1.2 KiB
Go
Raw Normal View History

package main
import (
"bytes"
_ "embed"
"fmt"
"text/template"
"time"
)
type PromptData struct {
Name string
Slug string
Date string
}
var (
//go:embed prompts/normal.txt
PromptNormal string
2025-08-15 03:00:59 +02:00
//go:embed prompts/reviewer.txt
PromptReviewer string
//go:embed prompts/engineer.txt
PromptEngineer string
//go:embed prompts/scripts.txt
PromptScripts string
//go:embed prompts/physics.txt
PromptPhysics string
Templates = map[string]*template.Template{
"normal": NewTemplate("normal", PromptNormal),
"reviewer": NewTemplate("reviewer", PromptReviewer),
"engineer": NewTemplate("engineer", PromptEngineer),
"scripts": NewTemplate("scripts", PromptScripts),
"physics": NewTemplate("physics", PromptPhysics),
}
)
2025-08-15 03:00:59 +02:00
func NewTemplate(name, text string) *template.Template {
return template.Must(template.New(name).Parse(text))
}
func BuildPrompt(name string, model *Model) (string, error) {
if name == "" {
return "", nil
}
2025-08-15 03:00:59 +02:00
tmpl, ok := Templates[name]
if !ok {
return "", fmt.Errorf("unknown prompt: %q", name)
}
var buf bytes.Buffer
err := tmpl.Execute(&buf, PromptData{
Name: model.Name,
Slug: model.ID,
Date: time.Now().Format(time.RFC1123),
})
if err != nil {
return "", err
}
return buf.String(), nil
}