Retain injected client diagnostic evidence
This commit is contained in:
@@ -2,6 +2,7 @@ package promptkit
|
||||
|
||||
import (
|
||||
"context"
|
||||
"errors"
|
||||
"reflect"
|
||||
"strconv"
|
||||
"sync"
|
||||
@@ -65,12 +66,42 @@ func TestPublicLLMClientAdapterCopiesUsagePresence(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestPublicLLMClientAdapterPreservesOwnedResponseAlongsideError(t *testing.T) {
|
||||
presence := &TokenUsagePresence{PromptTokens: true}
|
||||
source := &GenerateResponse{
|
||||
Content: "returned with error",
|
||||
Usage: TokenUsage{PromptTokens: 6},
|
||||
UsagePresence: presence,
|
||||
}
|
||||
marker := errors.New("injected failure")
|
||||
adapter := publicLLMClientAdapter{client: responseAndErrorClient{response: source, err: marker}}
|
||||
|
||||
got, err := adapter.Generate(context.Background(), domain.GenerateRequest{})
|
||||
if got == nil || !errors.Is(err, marker) {
|
||||
t.Fatalf("response=%+v error=%v", got, err)
|
||||
}
|
||||
source.Content = "mutated after return"
|
||||
presence.PromptTokens = false
|
||||
if got.Content != "returned with error" || got.UsagePresence == nil || !got.UsagePresence.PromptTokens {
|
||||
t.Fatalf("adapter response was not owned: %+v", got)
|
||||
}
|
||||
}
|
||||
|
||||
type usagePresenceClient struct{ response *GenerateResponse }
|
||||
|
||||
func (c *usagePresenceClient) Generate(context.Context, GenerateRequest) (*GenerateResponse, error) {
|
||||
return c.response, nil
|
||||
}
|
||||
|
||||
type responseAndErrorClient struct {
|
||||
response *GenerateResponse
|
||||
err error
|
||||
}
|
||||
|
||||
func (c responseAndErrorClient) Generate(context.Context, GenerateRequest) (*GenerateResponse, error) {
|
||||
return c.response, c.err
|
||||
}
|
||||
|
||||
type retainingMutatingLLMClient struct {
|
||||
retained GenerateRequest
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user