Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
OpenDAS
ollama
Commits
a8960797
"cuda/utils/timer.hh" did not exist on "2b5672e53f057838e2a81ed247c9bf6bc9c03d5b"
Unverified
Commit
a8960797
authored
Jan 31, 2024
by
Bruce MacDonald
Committed by
GitHub
Jan 31, 2024
Browse files
preserve last system message from modelfile (#2289)
parent
583950c8
Changes
2
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
66 additions
and
17 deletions
+66
-17
server/images.go
server/images.go
+3
-2
server/images_test.go
server/images_test.go
+63
-15
No files found.
server/images.go
View file @
a8960797
...
...
@@ -156,7 +156,7 @@ type ChatHistory struct {
func
(
m
*
Model
)
ChatPrompts
(
msgs
[]
api
.
Message
)
(
*
ChatHistory
,
error
)
{
// build the prompt from the list of messages
var
currentImages
[]
api
.
ImageData
var
lastSystem
string
lastSystem
:=
m
.
System
currentVars
:=
PromptVars
{
First
:
true
,
System
:
m
.
System
,
...
...
@@ -167,7 +167,8 @@ func (m *Model) ChatPrompts(msgs []api.Message) (*ChatHistory, error) {
for
_
,
msg
:=
range
msgs
{
switch
strings
.
ToLower
(
msg
.
Role
)
{
case
"system"
:
if
currentVars
.
System
!=
""
{
// if this is the first message it overrides the system prompt in the modelfile
if
!
currentVars
.
First
&&
currentVars
.
System
!=
""
{
prompts
=
append
(
prompts
,
currentVars
)
currentVars
=
PromptVars
{}
}
...
...
server/images_test.go
View file @
a8960797
...
...
@@ -257,14 +257,16 @@ func chatHistoryEqual(a, b ChatHistory) bool {
func
TestChat
(
t
*
testing
.
T
)
{
tests
:=
[]
struct
{
name
string
template
string
model
Model
msgs
[]
api
.
Message
want
ChatHistory
wantErr
string
}{
{
name
:
"Single Message"
,
template
:
"[INST] {{ .System }} {{ .Prompt }} [/INST]"
,
model
:
Model
{
Template
:
"[INST] {{ .System }} {{ .Prompt }} [/INST]"
,
},
msgs
:
[]
api
.
Message
{
{
Role
:
"system"
,
...
...
@@ -288,7 +290,9 @@ func TestChat(t *testing.T) {
},
{
name
:
"Message History"
,
template
:
"[INST] {{ .System }} {{ .Prompt }} [/INST]"
,
model
:
Model
{
Template
:
"[INST] {{ .System }} {{ .Prompt }} [/INST]"
,
},
msgs
:
[]
api
.
Message
{
{
Role
:
"system"
,
...
...
@@ -324,7 +328,9 @@ func TestChat(t *testing.T) {
},
{
name
:
"Assistant Only"
,
template
:
"[INST] {{ .System }} {{ .Prompt }} [/INST]"
,
model
:
Model
{
Template
:
"[INST] {{ .System }} {{ .Prompt }} [/INST]"
,
},
msgs
:
[]
api
.
Message
{
{
Role
:
"assistant"
,
...
...
@@ -340,6 +346,51 @@ func TestChat(t *testing.T) {
},
},
},
{
name
:
"Last system message is preserved from modelfile"
,
model
:
Model
{
Template
:
"[INST] {{ .System }} {{ .Prompt }} [/INST]"
,
System
:
"You are Mojo Jojo."
,
},
msgs
:
[]
api
.
Message
{
{
Role
:
"user"
,
Content
:
"hi"
,
},
},
want
:
ChatHistory
{
Prompts
:
[]
PromptVars
{
{
System
:
"You are Mojo Jojo."
,
Prompt
:
"hi"
,
First
:
true
,
},
},
LastSystem
:
"You are Mojo Jojo."
,
},
},
{
name
:
"Last system message is preserved from messages"
,
model
:
Model
{
Template
:
"[INST] {{ .System }} {{ .Prompt }} [/INST]"
,
System
:
"You are Mojo Jojo."
,
},
msgs
:
[]
api
.
Message
{
{
Role
:
"system"
,
Content
:
"You are Professor Utonium."
,
},
},
want
:
ChatHistory
{
Prompts
:
[]
PromptVars
{
{
System
:
"You are Professor Utonium."
,
First
:
true
,
},
},
LastSystem
:
"You are Professor Utonium."
,
},
},
{
name
:
"Invalid Role"
,
msgs
:
[]
api
.
Message
{
...
...
@@ -353,11 +404,8 @@ func TestChat(t *testing.T) {
}
for
_
,
tt
:=
range
tests
{
m
:=
Model
{
Template
:
tt
.
template
,
}
t
.
Run
(
tt
.
name
,
func
(
t
*
testing
.
T
)
{
got
,
err
:=
m
.
ChatPrompts
(
tt
.
msgs
)
got
,
err
:=
tt
.
model
.
ChatPrompts
(
tt
.
msgs
)
if
tt
.
wantErr
!=
""
{
if
err
==
nil
{
t
.
Errorf
(
"ChatPrompt() expected error, got nil"
)
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment