mirror of
https://github.com/Ed1s0nZ/CyberStrikeAI.git
synced 2026-08-15 15:40:38 +02:00
82 lines
2.4 KiB
Go
82 lines
2.4 KiB
Go
package multiagent
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/cloudwego/eino/schema"
|
|
)
|
|
|
|
func TestEinoRunUsageAccumulatorSumsModelCalls(t *testing.T) {
|
|
acc := newEinoRunUsageAccumulator()
|
|
acc.AddUsage(&schema.TokenUsage{
|
|
PromptTokens: 10,
|
|
CompletionTokens: 4,
|
|
TotalTokens: 14,
|
|
PromptTokenDetails: schema.PromptTokenDetails{
|
|
CachedTokens: 3,
|
|
},
|
|
CompletionTokensDetails: schema.CompletionTokensDetails{
|
|
ReasoningTokens: 2,
|
|
},
|
|
})
|
|
msg := schema.AssistantMessage("ok", nil)
|
|
msg.ResponseMeta = &schema.ResponseMeta{Usage: &schema.TokenUsage{
|
|
PromptTokens: 7,
|
|
CompletionTokens: 5,
|
|
TotalTokens: 12,
|
|
CompletionTokensDetails: schema.CompletionTokensDetails{
|
|
ReasoningTokens: 1,
|
|
},
|
|
}}
|
|
acc.AddMessage(msg)
|
|
|
|
got := acc.Summary()
|
|
if got.ModelCalls != 2 || got.PromptTokens != 17 || got.CompletionTokens != 9 || got.TotalTokens != 26 || got.CachedTokens != 3 || got.ReasoningTokens != 3 {
|
|
t.Fatalf("summary = %#v", got)
|
|
}
|
|
}
|
|
|
|
func TestEinoRunUsageAccumulatorEmitOnce(t *testing.T) {
|
|
acc := newEinoRunUsageAccumulator()
|
|
acc.AddUsage(&schema.TokenUsage{PromptTokens: 1, CompletionTokens: 2, TotalTokens: 3})
|
|
var events []map[string]interface{}
|
|
progress := func(eventType, _ string, data interface{}) {
|
|
if eventType != "eino_usage_summary" {
|
|
return
|
|
}
|
|
if m, ok := data.(map[string]interface{}); ok {
|
|
events = append(events, m)
|
|
}
|
|
}
|
|
|
|
if !acc.EmitOnce("conv-1", "deep", "final", progress, nil) {
|
|
t.Fatal("first emit should return true")
|
|
}
|
|
if acc.EmitOnce("conv-1", "deep", "partial", progress, nil) {
|
|
t.Fatal("second emit should return false")
|
|
}
|
|
if len(events) != 1 {
|
|
t.Fatalf("events = %#v, want one usage summary", events)
|
|
}
|
|
if events[0]["conversationId"] != "conv-1" || events[0]["orchestration"] != "deep" || events[0]["reason"] != "final" || events[0]["totalTokens"] != 3 {
|
|
t.Fatalf("event = %#v", events[0])
|
|
}
|
|
}
|
|
|
|
func TestMaxEinoTokenUsageUsesLargestStreamChunkValues(t *testing.T) {
|
|
var got *schema.TokenUsage
|
|
got = maxEinoTokenUsage(got, &schema.TokenUsage{PromptTokens: 10, CompletionTokens: 2, TotalTokens: 12})
|
|
got = maxEinoTokenUsage(got, &schema.TokenUsage{
|
|
PromptTokens: 9,
|
|
CompletionTokens: 5,
|
|
TotalTokens: 14,
|
|
CompletionTokensDetails: schema.CompletionTokensDetails{
|
|
ReasoningTokens: 3,
|
|
},
|
|
})
|
|
|
|
if got.PromptTokens != 10 || got.CompletionTokens != 5 || got.TotalTokens != 14 || got.CompletionTokensDetails.ReasoningTokens != 3 {
|
|
t.Fatalf("usage = %#v", got)
|
|
}
|
|
}
|