diff --git a/server/images.go b/server/images.go index 687487c9..68b2770a 100644 --- a/server/images.go +++ b/server/images.go @@ -58,18 +58,21 @@ type PromptVars struct { func (m *Model) Prompt(p PromptVars) (string, error) { var prompt strings.Builder - tmpl, err := template.New("").Parse(m.Template) + // Use the "missingkey=zero" option to handle missing variables without panicking + tmpl, err := template.New("").Option("missingkey=zero").Parse(m.Template) if err != nil { return "", err } - if p.System == "" { - // use the default system prompt for this model if one is not specified - p.System = m.System + vars := map[string]any{ + "System": p.System, + "Prompt": p.Prompt, + "Response": p.Response, + "First": p.First, } var sb strings.Builder - if err := tmpl.Execute(&sb, p); err != nil { + if err := tmpl.Execute(&sb, vars); err != nil { return "", err } prompt.WriteString(sb.String())