Browse Source

Merge pull request #1244 from jmorganca/brucemacd/no-fail-template

do not fail on unsupported template variables
Michael Yang 1 year ago
parent
commit
1f05d77110
1 changed files with 8 additions and 5 deletions
  1. 8 5
      server/images.go

+ 8 - 5
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())