add mllama image processing to the generate handler (#7384)
This commit is contained in:
parent
abd5dfd06a
commit
084929c293
1 changed files with 20 additions and 1 deletions
|
@ -4,6 +4,7 @@ import (
|
||||||
"bytes"
|
"bytes"
|
||||||
"cmp"
|
"cmp"
|
||||||
"context"
|
"context"
|
||||||
|
"encoding/binary"
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
"errors"
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
@ -33,6 +34,7 @@ import (
|
||||||
"github.com/ollama/ollama/openai"
|
"github.com/ollama/ollama/openai"
|
||||||
"github.com/ollama/ollama/parser"
|
"github.com/ollama/ollama/parser"
|
||||||
"github.com/ollama/ollama/runners"
|
"github.com/ollama/ollama/runners"
|
||||||
|
"github.com/ollama/ollama/server/imageproc"
|
||||||
"github.com/ollama/ollama/template"
|
"github.com/ollama/ollama/template"
|
||||||
"github.com/ollama/ollama/types/errtypes"
|
"github.com/ollama/ollama/types/errtypes"
|
||||||
"github.com/ollama/ollama/types/model"
|
"github.com/ollama/ollama/types/model"
|
||||||
|
@ -189,8 +191,25 @@ func (s *Server) GenerateHandler(c *gin.Context) {
|
||||||
|
|
||||||
images := make([]llm.ImageData, len(req.Images))
|
images := make([]llm.ImageData, len(req.Images))
|
||||||
for i := range req.Images {
|
for i := range req.Images {
|
||||||
|
if isMllama {
|
||||||
|
data, aspectRatioID, err := imageproc.Preprocess(req.Images[i])
|
||||||
|
if err != nil {
|
||||||
|
c.AbortWithStatusJSON(http.StatusInternalServerError, gin.H{"error": "error processing image"})
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
buf := new(bytes.Buffer)
|
||||||
|
err = binary.Write(buf, binary.LittleEndian, data)
|
||||||
|
if err != nil {
|
||||||
|
c.AbortWithStatusJSON(http.StatusInternalServerError, gin.H{"error": "error processing image"})
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
images[i] = llm.ImageData{Data: buf.Bytes(), AspectRatioID: aspectRatioID}
|
||||||
|
} else {
|
||||||
images[i] = llm.ImageData{ID: i, Data: req.Images[i]}
|
images[i] = llm.ImageData{ID: i, Data: req.Images[i]}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
prompt := req.Prompt
|
prompt := req.Prompt
|
||||||
if !req.Raw {
|
if !req.Raw {
|
||||||
|
|
Loading…
Reference in a new issue