mirror of
https://github.com/Ed1s0nZ/CyberStrikeAI.git
synced 2026-08-29 14:10:50 +02:00
102 lines
2.9 KiB
Go
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)
|
|
}
|
|
}
|
|
}
|