feat: refactor tool handling to use ToolSet for improved organization and clarity
This commit is contained in:
@@ -11,10 +11,12 @@ import (
|
||||
"cs-agent/internal/ai/runtime/internal/impl/callbacks"
|
||||
"cs-agent/internal/ai/runtime/internal/impl/factory"
|
||||
"cs-agent/internal/ai/runtime/internal/impl/retrievers"
|
||||
"cs-agent/internal/ai/runtime/registry"
|
||||
"cs-agent/internal/models"
|
||||
"cs-agent/internal/pkg/utils"
|
||||
|
||||
"github.com/cloudwego/eino/adk"
|
||||
einotool "github.com/cloudwego/eino/components/tool"
|
||||
"github.com/cloudwego/eino/schema"
|
||||
"github.com/google/uuid"
|
||||
)
|
||||
@@ -85,7 +87,7 @@ func (s *Service) Run(ctx context.Context, req Request) (*Summary, error) {
|
||||
summary.ToolCodes = appendIfMissing(summary.ToolCodes, "builtin/tool_search")
|
||||
toolDefsByModelName["tool_search"] = "builtin/tool_search"
|
||||
}
|
||||
for modelName, toolCode := range req.ExtraToolCodes {
|
||||
for modelName, toolCode := range toolSetStaticToolCodes(req.ToolSet) {
|
||||
toolCode = strings.TrimSpace(toolCode)
|
||||
modelName = strings.TrimSpace(modelName)
|
||||
if toolCode == "" || modelName == "" {
|
||||
@@ -119,8 +121,8 @@ func (s *Service) Run(ctx context.Context, req Request) (*Summary, error) {
|
||||
SelectedSkill: req.SelectedSkill,
|
||||
InstructionToolDefinitions: filteredToolDefs,
|
||||
DynamicMCPToolDefinitions: filteredToolDefs,
|
||||
StaticTools: req.ExtraTools,
|
||||
StaticToolCodes: req.ExtraToolCodes,
|
||||
StaticTools: toolSetStaticTools(req.ToolSet),
|
||||
StaticToolCodes: toolSetStaticToolCodes(req.ToolSet),
|
||||
Collector: collector,
|
||||
})
|
||||
if err != nil {
|
||||
@@ -238,7 +240,7 @@ func (s *Service) Resume(ctx context.Context, req ResumeRequest) (*Summary, erro
|
||||
summary.ToolCodes = appendIfMissing(summary.ToolCodes, "builtin/tool_search")
|
||||
toolDefsByModelName["tool_search"] = "builtin/tool_search"
|
||||
}
|
||||
for modelName, toolCode := range req.ExtraToolCodes {
|
||||
for modelName, toolCode := range toolSetStaticToolCodes(req.ToolSet) {
|
||||
toolCode = strings.TrimSpace(toolCode)
|
||||
modelName = strings.TrimSpace(modelName)
|
||||
if toolCode == "" || modelName == "" {
|
||||
@@ -255,8 +257,8 @@ func (s *Service) Resume(ctx context.Context, req ResumeRequest) (*Summary, erro
|
||||
AIConfig: req.AIConfig,
|
||||
InstructionToolDefinitions: toolDefs,
|
||||
DynamicMCPToolDefinitions: toolDefs,
|
||||
StaticTools: req.ExtraTools,
|
||||
StaticToolCodes: req.ExtraToolCodes,
|
||||
StaticTools: toolSetStaticTools(req.ToolSet),
|
||||
StaticToolCodes: toolSetStaticToolCodes(req.ToolSet),
|
||||
Collector: collector,
|
||||
})
|
||||
if err != nil {
|
||||
@@ -543,3 +545,17 @@ func buildKnowledgeContext(items []rag.RetrieveResult) string {
|
||||
}
|
||||
return strings.TrimSpace(builder.String())
|
||||
}
|
||||
|
||||
func toolSetStaticTools(toolSet *registry.ToolSet) []einotool.BaseTool {
|
||||
if toolSet == nil {
|
||||
return nil
|
||||
}
|
||||
return toolSet.StaticTools
|
||||
}
|
||||
|
||||
func toolSetStaticToolCodes(toolSet *registry.ToolSet) map[string]string {
|
||||
if toolSet == nil {
|
||||
return nil
|
||||
}
|
||||
return toolSet.StaticToolCodes
|
||||
}
|
||||
|
||||
@@ -1,9 +1,8 @@
|
||||
package engine
|
||||
|
||||
import (
|
||||
"cs-agent/internal/ai/runtime/registry"
|
||||
"cs-agent/internal/models"
|
||||
|
||||
einotool "github.com/cloudwego/eino/components/tool"
|
||||
)
|
||||
|
||||
type Request struct {
|
||||
@@ -15,18 +14,16 @@ type Request struct {
|
||||
SkillRouteReason string
|
||||
SkillRouteTrace string
|
||||
CheckPointID string
|
||||
ExtraTools []einotool.BaseTool
|
||||
ExtraToolCodes map[string]string
|
||||
ToolSet *registry.ToolSet
|
||||
}
|
||||
|
||||
type ResumeRequest struct {
|
||||
Conversation *models.Conversation
|
||||
AIAgent *models.AIAgent
|
||||
AIConfig *models.AIConfig
|
||||
CheckPointID string
|
||||
ResumeData map[string]any
|
||||
ExtraTools []einotool.BaseTool
|
||||
ExtraToolCodes map[string]string
|
||||
Conversation *models.Conversation
|
||||
AIAgent *models.AIAgent
|
||||
AIConfig *models.AIConfig
|
||||
CheckPointID string
|
||||
ResumeData map[string]any
|
||||
ToolSet *registry.ToolSet
|
||||
}
|
||||
|
||||
type InterruptContextSummary struct {
|
||||
|
||||
Reference in New Issue
Block a user