feat: add fallback mode for AI agents and update knowledge base handling

- Introduced AIAgentFallbackMode with options for NoAnswer and SuggestRetry.
- Updated AI agent edit component to include fallback mode selection.
- Modified API types and payloads to accommodate fallback mode.
- Removed deprecated KnowledgeFallbackMode and related logic from knowledge base.
- Adjusted knowledge retrieval and response handling to utilize new fallback logic.
- Updated tests to reflect changes in fallback mode handling for AI agents.
This commit is contained in:
mlogclub
2026-04-18 13:36:44 +08:00
parent d9c4b669b2
commit c84870b968
25 changed files with 497 additions and 139 deletions
+8
View File
@@ -101,6 +101,7 @@ func (s *aIAgentService) UpdateAIAgent(req request.UpdateAIAgentRequest, operato
"reply_timeout_seconds": item.ReplyTimeoutSeconds,
"team_ids": item.TeamIDs,
"handoff_mode": item.HandoffMode,
"fallback_mode": item.FallbackMode,
"fallback_message": item.FallbackMessage,
"knowledge_ids": item.KnowledgeIDs,
"skill_ids": item.SkillIDs,
@@ -157,6 +158,12 @@ func (s *aIAgentService) buildAIAgentModel(id int64, req request.CreateAIAgentRe
if !slices.Contains(enums.AIAgentHandoffModeValues, enums.AIAgentHandoffMode(req.HandoffMode)) {
return nil, errorsx.InvalidParam("转人工模式不合法")
}
if req.FallbackMode == 0 {
req.FallbackMode = enums.AIAgentFallbackModeNoAnswer
}
if !slices.Contains(enums.AIAgentFallbackModeValues, enums.AIAgentFallbackMode(req.FallbackMode)) {
return nil, errorsx.InvalidParam("兜底策略不合法")
}
if enums.AIAgentHandoffMode(req.HandoffMode) == enums.AIAgentHandoffModeDefaultTeamPool && len(teamIDs) == 0 {
return nil, errorsx.InvalidParam("默认客服组待接入池模式必须至少选择一个客服组")
}
@@ -209,6 +216,7 @@ func (s *aIAgentService) buildAIAgentModel(id int64, req request.CreateAIAgentRe
ReplyTimeoutSeconds: req.ReplyTimeoutSeconds,
TeamIDs: utils.JoinInt64s(teamIDs),
HandoffMode: req.HandoffMode,
FallbackMode: req.FallbackMode,
FallbackMessage: strings.TrimSpace(req.FallbackMessage),
KnowledgeIDs: utils.JoinInt64s(knowledgeIDs),
SkillIDs: utils.JoinInt64s(skillIDs),
@@ -112,7 +112,6 @@ func (s *knowledgeBaseService) UpdateKnowledgeBase(req request.UpdateKnowledgeBa
"chunk_max_tokens": item.ChunkMaxTokens,
"chunk_overlap_tokens": item.ChunkOverlapTokens,
"answer_mode": item.AnswerMode,
"fallback_mode": item.FallbackMode,
"remark": item.Remark,
"update_user_id": operator.UserID,
"update_user_name": operator.Username,
@@ -161,7 +160,6 @@ func (s *knowledgeBaseService) buildKnowledgeBaseModel(req request.CreateKnowled
ChunkMaxTokens: req.ChunkMaxTokens,
ChunkOverlapTokens: req.ChunkOverlapTokens,
AnswerMode: req.AnswerMode,
FallbackMode: req.FallbackMode,
Remark: req.Remark,
}
if item.DefaultTopK == 0 {
@@ -208,9 +206,6 @@ func (s *knowledgeBaseService) buildKnowledgeBaseModel(req request.CreateKnowled
if item.AnswerMode == 0 {
item.AnswerMode = 1
}
if item.FallbackMode == 0 {
item.FallbackMode = 1
}
return item, nil
}