Ver código fonte

Support for `bert` and `nomic-bert` embedding models

Jeffrey Morgan 1 ano atrás
pai
commit
63861f58cc
2 arquivos alterados com 14 adições e 0 exclusões
  1. 4 0
      server/images.go
  2. 10 0
      server/routes.go

+ 4 - 0
server/images.go

@@ -52,6 +52,10 @@ type Model struct {
 	Messages       []Message
 	Messages       []Message
 }
 }
 
 
+func (m *Model) IsEmbedding() bool {
+	return slices.Contains(m.Config.ModelFamilies, "bert") || slices.Contains(m.Config.ModelFamilies, "nomic-bert")
+}
+
 type Message struct {
 type Message struct {
 	Role    string `json:"role"`
 	Role    string `json:"role"`
 	Content string `json:"content"`
 	Content string `json:"content"`

+ 10 - 0
server/routes.go

@@ -191,6 +191,11 @@ func GenerateHandler(c *gin.Context) {
 		return
 		return
 	}
 	}
 
 
+	if model.IsEmbedding() {
+		c.AbortWithStatusJSON(http.StatusBadRequest, gin.H{"error": "model does not support generate"})
+		return
+	}
+
 	opts, err := modelOptions(model, req.Options)
 	opts, err := modelOptions(model, req.Options)
 	if err != nil {
 	if err != nil {
 		if errors.Is(err, api.ErrInvalidOpts) {
 		if errors.Is(err, api.ErrInvalidOpts) {
@@ -1143,6 +1148,11 @@ func ChatHandler(c *gin.Context) {
 		return
 		return
 	}
 	}
 
 
+	if model.IsEmbedding() {
+		c.AbortWithStatusJSON(http.StatusBadRequest, gin.H{"error": "model does not support chat"})
+		return
+	}
+
 	opts, err := modelOptions(model, req.Options)
 	opts, err := modelOptions(model, req.Options)
 	if err != nil {
 	if err != nil {
 		if errors.Is(err, api.ErrInvalidOpts) {
 		if errors.Is(err, api.ErrInvalidOpts) {