refactor(instruction): simplify NewService initialization and update import paths

This commit is contained in:
mlogclub
2026-04-18 11:09:05 +08:00
parent 023ec7373b
commit 9756780aec
2 changed files with 21 additions and 38 deletions
+7 -24
View File
@@ -3,7 +3,7 @@ package instruction
import (
"strings"
runtimetooling "cs-agent/internal/ai/runtime/tooling"
"cs-agent/internal/ai/runtime/tooling"
"cs-agent/internal/models"
)
@@ -14,36 +14,19 @@ type Service struct {
toolAppendixProvider *ToolAppendixProvider
}
func NewService(
assembler *Assembler,
governanceProvider *GovernanceInstructionProvider,
skillProvider *SkillInstructionProvider,
toolProvider *ToolAppendixProvider,
) *Service {
if assembler == nil {
assembler = NewAssembler()
}
if governanceProvider == nil {
governanceProvider = NewGovernanceInstructionProvider()
}
if skillProvider == nil {
skillProvider = NewSkillInstructionProvider()
}
if toolProvider == nil {
toolProvider = NewToolAppendixProvider()
}
func NewService() *Service {
return &Service{
assembler: assembler,
governanceInstructionProvider: governanceProvider,
skillInstructionProvider: skillProvider,
toolAppendixProvider: toolProvider,
assembler: NewAssembler(),
governanceInstructionProvider: NewGovernanceInstructionProvider(),
skillInstructionProvider: NewSkillInstructionProvider(),
toolAppendixProvider: NewToolAppendixProvider(),
}
}
func (s *Service) Build(
aiAgent models.AIAgent,
selectedSkill *models.SkillDefinition,
toolDefinitions []runtimetooling.MCPToolDefinition,
toolDefinitions []tooling.MCPToolDefinition,
extraToolCodes map[string]string,
) AssemblyResult {
governanceInstruction := ""
@@ -4,22 +4,22 @@ import (
"context"
"strings"
runtimeinstruction "cs-agent/internal/ai/runtime/instruction"
einoagents "cs-agent/internal/ai/runtime/internal/impl/agents"
einocallbacks "cs-agent/internal/ai/runtime/internal/impl/callbacks"
"cs-agent/internal/ai/runtime/instruction"
"cs-agent/internal/ai/runtime/internal/impl/agents"
"cs-agent/internal/ai/runtime/internal/impl/callbacks"
"cs-agent/internal/ai/runtime/registry"
runtimetooling "cs-agent/internal/ai/runtime/tooling"
"cs-agent/internal/ai/runtime/tooling"
"cs-agent/internal/models"
"github.com/cloudwego/eino/adk"
einobasetool "github.com/cloudwego/eino/components/tool"
"github.com/cloudwego/eino/components/tool"
"github.com/cloudwego/eino/compose"
)
type AgentFactory struct {
chatModelFactory *ChatModelFactory
toolFactory *ToolFactory
instructionService *runtimeinstruction.Service
instructionService *instruction.Service
handlerService *AgentHandlerService
}
@@ -38,31 +38,31 @@ type BuildCustomerServiceAgentInput struct {
SelectedSkill *models.SkillDefinition
// InstructionToolDefinitions 用于生成 instruction 中的工具说明。
// 它描述“当前允许模型理解和使用的 MCP 工具范围”。
InstructionToolDefinitions []runtimetooling.MCPToolDefinition
InstructionToolDefinitions []tooling.MCPToolDefinition
// DynamicMCPToolDefinitions 用于接入 Eino tool_search middleware 的动态工具集合。
// 这些工具默认不直接挂在 ToolsNode 上,而是经 tool_search 选择后再暴露给模型。
DynamicMCPToolDefinitions []runtimetooling.MCPToolDefinition
DynamicMCPToolDefinitions []tooling.MCPToolDefinition
// StaticTools 为当前运行时直接挂载到 ToolsNode 的固定工具,例如 Graph Tool。
StaticTools []einobasetool.BaseTool
StaticTools []tool.BaseTool
// StaticToolCodes 为固定工具的 modelName -> toolCode 映射,用于 trace 和运行日志归因。
StaticToolCodes map[string]string
// StaticToolMetadata 为固定工具的 modelName -> metadata 映射,用于 trace 和运行日志归因。
StaticToolMetadata map[string]registry.ToolMetadata
// Collector 用于收集运行链路中的 tool trace、graph trace 等调试信息。
Collector *einocallbacks.RuntimeTraceCollector
Collector *callbacks.RuntimeTraceCollector
}
func NewAgentFactory() *AgentFactory {
return &AgentFactory{
chatModelFactory: NewChatModelFactory(),
toolFactory: NewToolFactory(),
instructionService: runtimeinstruction.NewService(nil, nil, nil, nil),
instructionService: instruction.NewService(),
handlerService: NewAgentHandlerService(nil),
}
}
// BuildCustomerServiceAgent 根据装配输入构建客服 ChatModelAgent。
func (f *AgentFactory) BuildCustomerServiceAgent(ctx context.Context, input BuildCustomerServiceAgentInput) (*einoagents.CustomerServiceAgent, error) {
func (f *AgentFactory) BuildCustomerServiceAgent(ctx context.Context, input BuildCustomerServiceAgentInput) (*agents.CustomerServiceAgent, error) {
chatModel, err := f.chatModelFactory.Build(ctx, input.AIConfig)
if err != nil {
return nil, err
@@ -71,7 +71,7 @@ func (f *AgentFactory) BuildCustomerServiceAgent(ctx context.Context, input Buil
if err != nil {
return nil, err
}
allTools := make([]einobasetool.BaseTool, 0, len(input.StaticTools))
allTools := make([]tool.BaseTool, 0, len(input.StaticTools))
allTools = append(allTools, input.StaticTools...)
instructionResult := f.instructionService.Build(input.AIAgent, input.SelectedSkill, input.InstructionToolDefinitions, input.StaticToolCodes)
handlers := make([]adk.ChatModelAgentMiddleware, 0, 3)
@@ -105,5 +105,5 @@ func (f *AgentFactory) BuildCustomerServiceAgent(ctx context.Context, input Buil
if err != nil {
return nil, err
}
return &einoagents.CustomerServiceAgent{Inner: inner}, nil
return &agents.CustomerServiceAgent{Inner: inner}, nil
}