Avoid intermediate conversation history copies
This commit is contained in:
@@ -51,3 +51,25 @@ func TestExchangeManyTurns(t *testing.T) {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func TestExchangeMessagesWithSuffix(t *testing.T) {
|
||||
for _, history := range []*Exchange{nil, CaptureExchange(nil, "source", nil, "answer")} {
|
||||
control := &CacheControl{Type: CacheControlEphemeral, TTL: "1h"}
|
||||
first := []RenderedMessage{{Role: RoleUser, Content: "new", CacheControl: control}}
|
||||
last := []RenderedMessage{{Role: RoleDeveloper, Content: "suffix"}}
|
||||
got := history.MessagesWithSuffix(first, nil, last)
|
||||
want := append(history.Messages(), first...)
|
||||
want = append(want, last...)
|
||||
if !reflect.DeepEqual(got, want) {
|
||||
t.Fatalf("messages = %#v, want %#v", got, want)
|
||||
}
|
||||
got[history.MessageCount()].CacheControl.TTL = "changed"
|
||||
got[history.MessageCount()].Content = "changed"
|
||||
if first[0].Content != "new" || control.TTL != "1h" {
|
||||
t.Fatal("assembled messages alias the caller suffix")
|
||||
}
|
||||
if history != nil && history.Messages()[0].Content != "answer" {
|
||||
t.Fatal("assembly changed retained history")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user