From 47d4e22673b94ffaf1a45017569a271b3745afb0 Mon Sep 17 00:00:00 2001 From: Bruce MacDonald Date: Wed, 22 Nov 2023 14:46:49 -0500 Subject: [PATCH] use missingkey in set empty interface when missing --- server/images.go | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) 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())