25 lines
768 B
Go
25 lines
768 B
Go
package prompts
|
|
|
|
import (
|
|
"bytes"
|
|
"fmt"
|
|
"strings"
|
|
)
|
|
|
|
func RenderUserSystem(promptID string, data any) (system string, user string, metadata Metadata, err error) {
|
|
cp, ok := promptRegistry[strings.TrimSpace(promptID)]
|
|
if !ok {
|
|
return "", "", Metadata{}, fmt.Errorf("unknown prompt id %q", promptID)
|
|
}
|
|
|
|
var systemBuf bytes.Buffer
|
|
if err := cp.systemTmpl.Execute(&systemBuf, data); err != nil {
|
|
return "", "", Metadata{}, fmt.Errorf("render system prompt %q: %w", promptID, err)
|
|
}
|
|
var userBuf bytes.Buffer
|
|
if err := cp.userTmpl.Execute(&userBuf, data); err != nil {
|
|
return "", "", Metadata{}, fmt.Errorf("render user prompt %q: %w", promptID, err)
|
|
}
|
|
return strings.TrimSpace(systemBuf.String()), strings.TrimSpace(userBuf.String()), cp.metadata, nil
|
|
}
|