From 00ebda8cc4f2031096973b26d6b0de7425a9ca82 Mon Sep 17 00:00:00 2001 From: Parth Sareen Date: Fri, 21 Mar 2025 12:38:09 -0700 Subject: [PATCH] Revert "parser: remove role validation from Modelfile parser" (#9917) This reverts commit ffbfe833da387f9b6806fe887b85992c11d26eaa. --- parser/parser.go | 18 +++++++++++------- parser/parser_test.go | 10 +++++----- 2 files changed, 16 insertions(+), 12 deletions(-) diff --git a/parser/parser.go b/parser/parser.go index 0a32d5716..6832351fb 100644 --- a/parser/parser.go +++ b/parser/parser.go @@ -7,7 +7,6 @@ import ( "errors" "fmt" "io" - "log/slog" "net/http" "os" "os/user" @@ -301,8 +300,9 @@ const ( ) var ( - errMissingFrom = errors.New("no FROM line") - errInvalidCommand = errors.New("command must be one of \"from\", \"license\", \"template\", \"system\", \"adapter\", \"parameter\", or \"message\"") + 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\"") ) type ParserError struct { @@ -379,10 +379,14 @@ func ParseFile(r io.Reader) (*Modelfile, error) { case stateParameter: cmd.Name = b.String() case stateMessage: - role = b.String() - if !isKnownMessageRole(b.String()) { - slog.Warn("received non-standard role", "role", role) + if !isValidMessageRole(b.String()) { + return nil, &ParserError{ + LineNumber: currLine, + Msg: errInvalidMessageRole.Error(), + } } + + role = b.String() case stateComment, stateNil: // pass case stateValue: @@ -552,7 +556,7 @@ func isNewline(r rune) bool { return r == '\r' || r == '\n' } -func isKnownMessageRole(role string) bool { +func isValidMessageRole(role string) bool { return role == "system" || role == "user" || role == "assistant" } diff --git a/parser/parser_test.go b/parser/parser_test.go index c4f8f4aab..097c058fb 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 somerandomrole I'm ok with you adding any role message now! +MESSAGE badguy I'm a bad guy! `, - []Command{ - {Name: "model", Args: "foo"}, - {Name: "message", Args: "somerandomrole: I'm ok with you adding any role message now!"}, - }, nil, + &ParserError{ + LineNumber: 3, + Msg: errInvalidMessageRole.Error(), + }, }, { `