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