"vscode:/vscode.git/clone" did not exist on "2de7692ddeffef0f0e965e1f8cca7463df19033a"
Commit 47d4e226 authored by Bruce MacDonald's avatar Bruce MacDonald Committed by Michael Yang
Browse files

use missingkey in set empty interface when missing

parent 32f62fbb
...@@ -58,18 +58,21 @@ type PromptVars struct { ...@@ -58,18 +58,21 @@ type PromptVars struct {
func (m *Model) Prompt(p PromptVars) (string, error) { func (m *Model) Prompt(p PromptVars) (string, error) {
var prompt strings.Builder 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 { if err != nil {
return "", err return "", err
} }
if p.System == "" { vars := map[string]any{
// use the default system prompt for this model if one is not specified "System": p.System,
p.System = m.System "Prompt": p.Prompt,
"Response": p.Response,
"First": p.First,
} }
var sb strings.Builder var sb strings.Builder
if err := tmpl.Execute(&sb, p); err != nil { if err := tmpl.Execute(&sb, vars); err != nil {
return "", err return "", err
} }
prompt.WriteString(sb.String()) prompt.WriteString(sb.String())
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment