Capture completed conversation exchanges
This commit is contained in:
@@ -276,7 +276,7 @@ func TestPreparedExecutionRepairsEmptyBasicOutput(t *testing.T) {
|
||||
}}
|
||||
engine := newPreparedContractEngine(t, client, "Summarize the source.")
|
||||
prepared, err := engine.PrepareExecution(context.Background(), promptkit.RunRequest{
|
||||
PromptID: "prepared",
|
||||
PromptID: "prepared", CaptureExchange: true,
|
||||
Validation: &promptkit.OutputContract{
|
||||
Format: promptkit.FormatMarkdown,
|
||||
ValidationMode: promptkit.ValidationBasic,
|
||||
@@ -296,6 +296,9 @@ func TestPreparedExecutionRepairsEmptyBasicOutput(t *testing.T) {
|
||||
result.Validation.RepairAttempts != 1 || result.Usage != (promptkit.TokenUsage{PromptTokens: 10, CompletionTokens: 16, TotalTokens: 26}) {
|
||||
t.Fatalf("repaired result = %+v", result)
|
||||
}
|
||||
if result.Exchange == nil || len(result.Exchange.Details().Messages) != len(details.Messages)+1 || result.Exchange.Details().Messages[len(details.Messages)].Content != "Corrected summary." {
|
||||
t.Fatalf("repaired exchange = %#v", result.Exchange)
|
||||
}
|
||||
requests := client.snapshot()
|
||||
if len(requests) != 2 || len(requests[1].Prompt.Messages) != len(details.Messages)+1 ||
|
||||
!reflect.DeepEqual(requests[1].Prompt.Messages[:len(details.Messages)], details.Messages) ||
|
||||
@@ -315,7 +318,8 @@ func TestPreparedExecutionIsolatesMutatingClientAcrossRepair(t *testing.T) {
|
||||
t.Fatal(err)
|
||||
}
|
||||
prepared, err := engine.PrepareExecution(context.Background(), promptkit.RunRequest{
|
||||
PromptID: "prepared",
|
||||
PromptID: "prepared",
|
||||
CaptureExchange: true,
|
||||
Execution: &promptkit.ExecutionTargetOverride{ExtraParams: map[string]any{
|
||||
"nested": map[string]any{"value": "original"},
|
||||
}},
|
||||
@@ -333,6 +337,9 @@ func TestPreparedExecutionIsolatesMutatingClientAcrossRepair(t *testing.T) {
|
||||
if !reflect.DeepEqual(before, prepared.Details()) {
|
||||
t.Fatal("client mutation changed retained prepared metadata")
|
||||
}
|
||||
if result.Exchange == nil || result.Exchange.Details().Messages[0].Content != "original message" || result.Exchange.Details().Messages[1].CacheControl.TTL != "1h" || result.Exchange.Details().Messages[2].Content != `{"value":3}` {
|
||||
t.Fatalf("mutating client changed exchange history: %#v", result.Exchange.Details())
|
||||
}
|
||||
result.EffectiveModelParams.ExtraParams["nested"].(map[string]any)["value"] = "result mutation"
|
||||
if prepared.Details().EffectiveModelParams.ExtraParams["nested"].(map[string]any)["value"] != "original" {
|
||||
t.Fatal("result mutation changed retained prepared metadata")
|
||||
|
||||
Reference in New Issue
Block a user