|
@@ -164,17 +164,6 @@ func (s *Server) GenerateHandler(c *gin.Context) {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- var b bytes.Buffer
|
|
|
- if req.Context != nil {
|
|
|
- s, err := r.Detokenize(c.Request.Context(), req.Context)
|
|
|
- if err != nil {
|
|
|
- c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()})
|
|
|
- return
|
|
|
- }
|
|
|
-
|
|
|
- b.WriteString(s)
|
|
|
- }
|
|
|
-
|
|
|
var values template.Values
|
|
|
if req.Suffix != "" {
|
|
|
values.Prompt = prompt
|
|
@@ -187,6 +176,10 @@ func (s *Server) GenerateHandler(c *gin.Context) {
|
|
|
msgs = append(msgs, api.Message{Role: "system", Content: m.System})
|
|
|
}
|
|
|
|
|
|
+ if req.Context == nil {
|
|
|
+ msgs = append(msgs, m.Messages...)
|
|
|
+ }
|
|
|
+
|
|
|
for _, i := range images {
|
|
|
msgs = append(msgs, api.Message{Role: "user", Content: fmt.Sprintf("[img-%d]", i.ID)})
|
|
|
}
|
|
@@ -194,11 +187,22 @@ func (s *Server) GenerateHandler(c *gin.Context) {
|
|
|
values.Messages = append(msgs, api.Message{Role: "user", Content: req.Prompt})
|
|
|
}
|
|
|
|
|
|
+ var b bytes.Buffer
|
|
|
if err := tmpl.Execute(&b, values); err != nil {
|
|
|
c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()})
|
|
|
return
|
|
|
}
|
|
|
|
|
|
+ if req.Context != nil {
|
|
|
+ s, err := r.Detokenize(c.Request.Context(), req.Context)
|
|
|
+ if err != nil {
|
|
|
+ c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()})
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ b.WriteString(s)
|
|
|
+ }
|
|
|
+
|
|
|
prompt = b.String()
|
|
|
}
|
|
|
|
|
@@ -1329,11 +1333,12 @@ func (s *Server) ChatHandler(c *gin.Context) {
|
|
|
return
|
|
|
}
|
|
|
|
|
|
+ msgs := append(m.Messages, req.Messages...)
|
|
|
if req.Messages[0].Role != "system" && m.System != "" {
|
|
|
- req.Messages = append([]api.Message{{Role: "system", Content: m.System}}, req.Messages...)
|
|
|
+ msgs = append([]api.Message{{Role: "system", Content: m.System}}, msgs...)
|
|
|
}
|
|
|
|
|
|
- prompt, images, err := chatPrompt(c.Request.Context(), m, r.Tokenize, opts, req.Messages, req.Tools)
|
|
|
+ prompt, images, err := chatPrompt(c.Request.Context(), m, r.Tokenize, opts, msgs, req.Tools)
|
|
|
if err != nil {
|
|
|
c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()})
|
|
|
return
|