Consolidate D&D prompt ordering tests
This commit is contained in:
@@ -12,35 +12,43 @@ import (
|
||||
)
|
||||
|
||||
func TestScriptoriumPromptPreparesTranscriptAndTaskMessages(t *testing.T) {
|
||||
transcript := []byte(`{"id":"session-1","segments":[{"id":"u1","text":"We enter the crypt."}]}`)
|
||||
prepared := prepareScenesPrompt(t, transcript, "Alice: Aria", "Aria: cleric", "Brightmantle: temple")
|
||||
transcript := []byte(`{"sentinel":"scene-transcript"}`)
|
||||
prepared := prepareScenesPrompt(t, transcript, "scene-players", "scene-party", "scene-glossary")
|
||||
|
||||
if prepared.PromptID != PromptID {
|
||||
t.Fatalf("prompt id = %q, want %q", prepared.PromptID, PromptID)
|
||||
}
|
||||
transcriptMessages := 0
|
||||
referenceMessageFound := false
|
||||
for _, message := range prepared.Messages {
|
||||
if strings.Contains(message.Content, string(transcript)) {
|
||||
transcriptMessages++
|
||||
if message.Role != "user" || message.CacheControl == nil {
|
||||
t.Fatalf("transcript message did not render as cacheable user message: %#v", message)
|
||||
}
|
||||
}
|
||||
if strings.Contains(message.Content, "Alice: Aria") &&
|
||||
strings.Contains(message.Content, "Aria: cleric") &&
|
||||
strings.Contains(message.Content, "Brightmantle: temple") {
|
||||
referenceMessageFound = true
|
||||
if message.Role != "user" || message.CacheControl == nil {
|
||||
t.Fatalf("reference message did not render as cacheable user message: %#v", message)
|
||||
}
|
||||
if len(prepared.Messages) != 5 {
|
||||
t.Fatalf("prepared messages = %d, want 5", len(prepared.Messages))
|
||||
}
|
||||
for index, role := range []string{"system", "user", "user", "user", "user"} {
|
||||
if prepared.Messages[index].Role != role {
|
||||
t.Errorf("message %d role = %q, want %q", index, prepared.Messages[index].Role, role)
|
||||
}
|
||||
}
|
||||
if transcriptMessages != 1 {
|
||||
t.Fatalf("raw transcript rendered in %d messages, want exactly one", transcriptMessages)
|
||||
for _, index := range []int{1, 4} {
|
||||
if cache := prepared.Messages[index].CacheControl; cache == nil || cache.Type != scriptorium.CacheControlEphemeral {
|
||||
t.Errorf("message %d cache control = %#v, want ephemeral", index, cache)
|
||||
}
|
||||
}
|
||||
if !referenceMessageFound {
|
||||
t.Fatalf("reference message did not render all supplied reference material")
|
||||
for _, index := range []int{0, 2, 3} {
|
||||
if cache := prepared.Messages[index].CacheControl; cache != nil {
|
||||
t.Errorf("message %d cache control = %#v, want nil", index, cache)
|
||||
}
|
||||
}
|
||||
if references := prepared.Messages[1].Content; !strings.Contains(references, "scene-players") || !strings.Contains(references, "scene-party") || !strings.Contains(references, "scene-glossary") {
|
||||
t.Fatalf("reference message = %q, want supplied reference inputs", references)
|
||||
}
|
||||
if transcriptMessage := prepared.Messages[4].Content; !strings.Contains(transcriptMessage, "scene-transcript") {
|
||||
t.Fatalf("final message = %q, want transcript input", transcriptMessage)
|
||||
}
|
||||
for index, message := range prepared.Messages {
|
||||
if index != 1 && (strings.Contains(message.Content, "scene-players") || strings.Contains(message.Content, "scene-party") || strings.Contains(message.Content, "scene-glossary")) {
|
||||
t.Errorf("message %d unexpectedly rendered reference input", index)
|
||||
}
|
||||
if index != 4 && strings.Contains(message.Content, "scene-transcript") {
|
||||
t.Errorf("message %d unexpectedly rendered transcript input", index)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user