mirror of
https://github.com/Ed1s0nZ/CyberStrikeAI.git
synced 2026-08-15 23:50:32 +02:00
65 lines
2.1 KiB
Go
65 lines
2.1 KiB
Go
package multiagent
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
|
|
"github.com/cloudwego/eino/adk"
|
|
"github.com/cloudwego/eino/components/model"
|
|
"github.com/cloudwego/eino/components/tool"
|
|
"github.com/cloudwego/eino/schema"
|
|
)
|
|
|
|
type einoAgenticChatModelAgentConfig struct {
|
|
Name string
|
|
Description string
|
|
Instruction string
|
|
Model model.AgenticModel
|
|
ToolsConfig adk.ToolsConfig
|
|
MaxIterations int
|
|
Exit tool.BaseTool
|
|
|
|
GenModelInput adk.TypedGenModelInput[*schema.AgenticMessage]
|
|
Handlers []adk.TypedChatModelAgentMiddleware[*schema.AgenticMessage]
|
|
ModelRetryConfig *adk.TypedModelRetryConfig[*schema.AgenticMessage]
|
|
ModelFailoverConfig *adk.ModelFailoverConfig[*schema.AgenticMessage]
|
|
OutputKey string
|
|
}
|
|
|
|
func newEinoAgenticChatModelAgent(ctx context.Context, cfg einoAgenticChatModelAgentConfig) (adk.TypedResumableAgent[*schema.AgenticMessage], error) {
|
|
if cfg.Model == nil {
|
|
return nil, fmt.Errorf("eino agentic ChatModelAgent: model is required")
|
|
}
|
|
typedCfg := &adk.TypedChatModelAgentConfig[*schema.AgenticMessage]{
|
|
Name: cfg.Name,
|
|
Description: cfg.Description,
|
|
Instruction: cfg.Instruction,
|
|
Model: cfg.Model,
|
|
ToolsConfig: cfg.ToolsConfig,
|
|
MaxIterations: cfg.MaxIterations,
|
|
Exit: cfg.Exit,
|
|
GenModelInput: cfg.GenModelInput,
|
|
Handlers: cfg.Handlers,
|
|
ModelRetryConfig: cfg.ModelRetryConfig,
|
|
ModelFailoverConfig: cfg.ModelFailoverConfig,
|
|
OutputKey: cfg.OutputKey,
|
|
}
|
|
typedAgent, err := adk.NewTypedChatModelAgent(ctx, typedCfg)
|
|
if err != nil {
|
|
return nil, fmt.Errorf("eino agentic NewTypedChatModelAgent: %w", err)
|
|
}
|
|
return typedAgent, nil
|
|
}
|
|
|
|
func newEinoAgenticChatModelAgentAdapter(ctx context.Context, cfg einoAgenticChatModelAgentConfig) (adk.Agent, error) {
|
|
typedAgent, err := newEinoAgenticChatModelAgent(ctx, cfg)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
agent := newEinoAgenticMessageAgentAdapter(typedAgent)
|
|
if agent == nil {
|
|
return nil, fmt.Errorf("eino agentic ChatModelAgent: adapter is nil")
|
|
}
|
|
return agent, nil
|
|
}
|