mirror of
https://github.com/Ed1s0nZ/CyberStrikeAI.git
synced 2026-06-25 07:20:08 +02:00
51 lines
1.7 KiB
Go
51 lines
1.7 KiB
Go
package multiagent
|
|
|
|
import (
|
|
"github.com/cloudwego/eino/adk"
|
|
"go.uber.org/zap"
|
|
)
|
|
|
|
// einoChatModelTailConfig configures middleware appended after reduction/skill/plantask
|
|
// and immediately before each ChatModel invocation pipeline completes.
|
|
//
|
|
// Order (best practice):
|
|
// 1. system merge — accurate token count for summarization
|
|
// 2. continuation user dedup — drop stale session-resume injections
|
|
// 3. summarization
|
|
// 4. orphan tool prune
|
|
// 5. telemetry
|
|
// 6. model-facing trace snapshot
|
|
type einoChatModelTailConfig struct {
|
|
logger *zap.Logger
|
|
phase string
|
|
summarization adk.ChatModelAgentMiddleware
|
|
modelName string
|
|
conversationID string
|
|
trace *modelFacingTraceHolder
|
|
skipOrphanPruner bool
|
|
skipTelemetry bool
|
|
skipTrace bool
|
|
}
|
|
|
|
func appendEinoChatModelTailMiddlewares(handlers []adk.ChatModelAgentMiddleware, cfg einoChatModelTailConfig) []adk.ChatModelAgentMiddleware {
|
|
handlers = append(handlers, newSystemMessageNormalizerMiddleware(cfg.logger, cfg.phase))
|
|
handlers = append(handlers, newContinuationUserDedupMiddleware(cfg.logger, cfg.phase))
|
|
if cfg.summarization != nil {
|
|
handlers = append(handlers, cfg.summarization)
|
|
}
|
|
if !cfg.skipOrphanPruner {
|
|
handlers = append(handlers, newOrphanToolPrunerMiddleware(cfg.logger, cfg.phase))
|
|
}
|
|
if !cfg.skipTelemetry {
|
|
if teleMw := newEinoModelInputTelemetryMiddleware(cfg.logger, cfg.modelName, cfg.conversationID, cfg.phase); teleMw != nil {
|
|
handlers = append(handlers, teleMw)
|
|
}
|
|
}
|
|
if !cfg.skipTrace && cfg.trace != nil {
|
|
if capMw := newModelFacingTraceMiddleware(cfg.trace); capMw != nil {
|
|
handlers = append(handlers, capMw)
|
|
}
|
|
}
|
|
return handlers
|
|
}
|