瀏覽代碼

allow overriding `template` and `system` in `/api/generate`

Fixes #297
Fixes #296
Jeffrey Morgan 1 年之前
父節點
當前提交
8713ac23a8
共有 2 個文件被更改,包括 16 次插入5 次删除
  1. 5 3
      api/types.go
  2. 11 2
      server/images.go

+ 5 - 3
api/types.go

@@ -33,9 +33,11 @@ func (e StatusError) Error() string {
 }
 
 type GenerateRequest struct {
-	Model   string `json:"model"`
-	Prompt  string `json:"prompt"`
-	Context []int  `json:"context,omitempty"`
+	Model    string `json:"model"`
+	Prompt   string `json:"prompt"`
+	System   string `json:"system"`
+	Template string `json:"template"`
+	Context  []int  `json:"context,omitempty"`
 
 	Options map[string]interface{} `json:"options"`
 }

+ 11 - 2
server/images.go

@@ -6,6 +6,7 @@ import (
 	"encoding/json"
 	"errors"
 	"fmt"
+	"html/template"
 	"io"
 	"log"
 	"net/http"
@@ -15,7 +16,6 @@ import (
 	"reflect"
 	"strconv"
 	"strings"
-	"text/template"
 
 	"github.com/jmorganca/ollama/api"
 	"github.com/jmorganca/ollama/parser"
@@ -37,7 +37,12 @@ type Model struct {
 }
 
 func (m *Model) Prompt(request api.GenerateRequest) (string, error) {
-	tmpl, err := template.New("").Parse(m.Template)
+	t := m.Template
+	if request.Template != "" {
+		t = request.Template
+	}
+
+	tmpl, err := template.New("").Parse(t)
 	if err != nil {
 		return "", err
 	}
@@ -56,6 +61,10 @@ func (m *Model) Prompt(request api.GenerateRequest) (string, error) {
 	vars.Prompt = request.Prompt
 	vars.Context = request.Context
 
+	if request.System != "" {
+		vars.System = request.System
+	}
+
 	var sb strings.Builder
 	if err := tmpl.Execute(&sb, vars); err != nil {
 		return "", err