Просмотр исходного кода

parser: remove role validation from Modelfile parser (#9874)

* updates parser/parser.go to allow arbitrary roles in Modelfile MESSAGE blocks
rylativity 1 месяц назад
Родитель
Сommit
ffbfe833da
2 измененных файлов с 12 добавлено и 16 удалено
  1. 7 11
      parser/parser.go
  2. 5 5
      parser/parser_test.go

+ 7 - 11
parser/parser.go

@@ -7,6 +7,7 @@ import (
 	"errors"
 	"fmt"
 	"io"
+	"log/slog"
 	"net/http"
 	"os"
 	"os/user"
@@ -300,9 +301,8 @@ const (
 )
 
 var (
-	errMissingFrom        = errors.New("no FROM line")
-	errInvalidMessageRole = errors.New("message role must be one of \"system\", \"user\", or \"assistant\"")
-	errInvalidCommand     = errors.New("command must be one of \"from\", \"license\", \"template\", \"system\", \"adapter\", \"parameter\", or \"message\"")
+	errMissingFrom    = errors.New("no FROM line")
+	errInvalidCommand = errors.New("command must be one of \"from\", \"license\", \"template\", \"system\", \"adapter\", \"parameter\", or \"message\"")
 )
 
 type ParserError struct {
@@ -379,14 +379,10 @@ func ParseFile(r io.Reader) (*Modelfile, error) {
 			case stateParameter:
 				cmd.Name = b.String()
 			case stateMessage:
-				if !isValidMessageRole(b.String()) {
-					return nil, &ParserError{
-						LineNumber: currLine,
-						Msg:        errInvalidMessageRole.Error(),
-					}
-				}
-
 				role = b.String()
+				if !isKnownMessageRole(b.String()) {
+					slog.Warn("received non-standard role", "role", role)
+				}
 			case stateComment, stateNil:
 				// pass
 			case stateValue:
@@ -556,7 +552,7 @@ func isNewline(r rune) bool {
 	return r == '\r' || r == '\n'
 }
 
-func isValidMessageRole(role string) bool {
+func isKnownMessageRole(role string) bool {
 	return role == "system" || role == "user" || role == "assistant"
 }
 

+ 5 - 5
parser/parser_test.go

@@ -256,13 +256,13 @@ You are a multiline file parser. Always parse things.
 		{
 			`
 FROM foo
-MESSAGE badguy I'm a bad guy!
+MESSAGE somerandomrole I'm ok with you adding any role message now!
 `,
-			nil,
-			&ParserError{
-				LineNumber: 3,
-				Msg:        errInvalidMessageRole.Error(),
+			[]Command{
+				{Name: "model", Args: "foo"},
+				{Name: "message", Args: "somerandomrole: I'm ok with you adding any role message now!"},
 			},
+			nil,
 		},
 		{
 			`