From ffbfe833da387f9b6806fe887b85992c11d26eaa Mon Sep 17 00:00:00 2001 From: rylativity <41017744+rylativity@users.noreply.github.com> Date: Thu, 20 Mar 2025 16:11:17 -0400 Subject: [PATCH] parser: remove role validation from Modelfile parser (#9874) * updates parser/parser.go to allow arbitrary roles in Modelfile MESSAGE blocks --- parser/parser.go | 18 +++++++----------- parser/parser_test.go | 10 +++++----- 2 files changed, 12 insertions(+), 16 deletions(-) diff --git a/parser/parser.go b/parser/parser.go index 6832351fb..0a32d5716 100644 --- a/parser/parser.go +++ b/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" } diff --git a/parser/parser_test.go b/parser/parser_test.go index 097c058fb..c4f8f4aab 100644 --- a/parser/parser_test.go +++ b/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, }, { `