Files
CyberStrikeAI/internal/multiagent/eino_summarize_model_guard_test.go
T

102 lines
2.9 KiB
Go

package multiagent
import (
"context"
"strings"
"testing"
"github.com/cloudwego/eino/components/model"
"github.com/cloudwego/eino/schema"
)
type guardClassicSummaryModel struct {
out *schema.Message
}
func (m *guardClassicSummaryModel) Generate(context.Context, []*schema.Message, ...model.Option) (*schema.Message, error) {
return m.out, nil
}
func (m *guardClassicSummaryModel) Stream(context.Context, []*schema.Message, ...model.Option) (*schema.StreamReader[*schema.Message], error) {
return schema.StreamReaderFromArray([]*schema.Message{m.out}), nil
}
func TestNonEmptySummaryChatModelReportsEmptyContentDiagnostics(t *testing.T) {
msg := schema.AssistantMessage("", nil)
msg.ReasoningContent = "只返回了思考,没有最终摘要"
msg.ResponseMeta = &schema.ResponseMeta{
FinishReason: "stop",
Usage: &schema.TokenUsage{
PromptTokens: 10,
CompletionTokens: 3,
TotalTokens: 13,
CompletionTokensDetails: schema.CompletionTokensDetails{
ReasoningTokens: 3,
},
},
}
_, err := newNonEmptySummaryChatModel(&guardClassicSummaryModel{out: msg}).Generate(context.Background(), nil)
if err == nil {
t.Fatal("expected empty summary error")
}
text := err.Error()
for _, want := range []string{
"summary content is empty",
"reasoning_runes=",
`finish_reason="stop"`,
"reasoning_tokens=3",
"DeepSeek thinking",
} {
if !strings.Contains(text, want) {
t.Fatalf("error missing %q:\n%s", want, text)
}
}
}
type guardAgenticSummaryModel struct {
out *schema.AgenticMessage
}
func (m *guardAgenticSummaryModel) Generate(context.Context, []*schema.AgenticMessage, ...model.Option) (*schema.AgenticMessage, error) {
return m.out, nil
}
func (m *guardAgenticSummaryModel) Stream(context.Context, []*schema.AgenticMessage, ...model.Option) (*schema.StreamReader[*schema.AgenticMessage], error) {
return schema.StreamReaderFromArray([]*schema.AgenticMessage{m.out}), nil
}
func TestNonEmptyAgenticSummaryModelReportsEmptyContentDiagnostics(t *testing.T) {
msg := &schema.AgenticMessage{
Role: schema.AgenticRoleTypeAssistant,
ContentBlocks: []*schema.ContentBlock{
schema.NewContentBlock(&schema.Reasoning{Text: "只返回了思考,没有最终摘要"}),
},
ResponseMeta: &schema.AgenticResponseMeta{
TokenUsage: &schema.TokenUsage{
PromptTokens: 10,
CompletionTokens: 3,
TotalTokens: 13,
CompletionTokensDetails: schema.CompletionTokensDetails{
ReasoningTokens: 3,
},
},
},
}
_, err := newNonEmptyAgenticSummaryModel(&guardAgenticSummaryModel{out: msg}).Generate(context.Background(), nil)
if err == nil {
t.Fatal("expected empty summary error")
}
text := err.Error()
for _, want := range []string{
"summary content is empty",
"reasoning_runes=",
"reasoning_blocks=1",
"reasoning_tokens=3",
"DeepSeek thinking",
} {
if !strings.Contains(text, want) {
t.Fatalf("error missing %q:\n%s", want, text)
}
}
}