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
+1
View File
@@ -52,6 +52,7 @@ type CreateAIAgentRequest struct {
ReplyTimeoutSeconds int `json:"replyTimeoutSeconds"`
TeamIDs []int64 `json:"teamIds"`
HandoffMode enums.AIAgentHandoffMode `json:"handoffMode"`
FallbackMode enums.AIAgentFallbackMode `json:"fallbackMode"`
FallbackMessage string `json:"fallbackMessage"`
KnowledgeIDs []int64 `json:"knowledgeIds"`
SkillIDs []int64 `json:"skillIds"`
@@ -14,7 +14,6 @@ type CreateKnowledgeBaseRequest struct {
ChunkMaxTokens int `json:"chunkMaxTokens"`
ChunkOverlapTokens int `json:"chunkOverlapTokens"`
AnswerMode int `json:"answerMode"`
FallbackMode int `json:"fallbackMode"`
Remark string `json:"remark"`
}
@@ -71,7 +70,6 @@ type KnowledgeAnswerRequest struct {
SessionID string `json:"sessionId"`
ConversationID int64 `json:"conversationId"`
AnswerMode int `json:"answerMode"`
FallbackMode int `json:"fallbackMode"`
}
type CreateKnowledgeFeedbackRequest struct {
+2
View File
@@ -83,6 +83,8 @@ type AIAgentResponse struct {
Teams []AIAgentTeamResponse `json:"teams"`
HandoffMode enums.AIAgentHandoffMode `json:"handoffMode"`
HandoffModeName string `json:"handoffModeName"`
FallbackMode enums.AIAgentFallbackMode `json:"fallbackMode"`
FallbackModeName string `json:"fallbackModeName"`
FallbackMessage string `json:"fallbackMessage"`
KnowledgeIDs []int64 `json:"knowledgeIds"`
KnowledgeBaseNames []string `json:"knowledgeBaseNames"`
@@ -22,8 +22,6 @@ type KnowledgeBaseResponse struct {
ChunkOverlapTokens int `json:"chunkOverlapTokens"`
AnswerMode int `json:"answerMode"`
AnswerModeName string `json:"answerModeName"`
FallbackMode int `json:"fallbackMode"`
FallbackModeName string `json:"fallbackModeName"`
DocumentCount int64 `json:"documentCount"`
FAQCount int64 `json:"faqCount"`
Remark string `json:"remark"`
+21
View File
@@ -215,6 +215,27 @@ func GetAIAgentHandoffModeLabel(mode AIAgentHandoffMode) string {
return aiAgentHandoffModeLabelMap[mode]
}
type AIAgentFallbackMode int
const (
AIAgentFallbackModeNoAnswer AIAgentFallbackMode = 1
AIAgentFallbackModeSuggestRetry AIAgentFallbackMode = 2
)
var AIAgentFallbackModeValues = []AIAgentFallbackMode{
AIAgentFallbackModeNoAnswer,
AIAgentFallbackModeSuggestRetry,
}
var aiAgentFallbackModeLabelMap = map[AIAgentFallbackMode]string{
AIAgentFallbackModeNoAnswer: "直接声明无答案",
AIAgentFallbackModeSuggestRetry: "建议补充信息",
}
func GetAIAgentFallbackModeLabel(mode AIAgentFallbackMode) string {
return aiAgentFallbackModeLabelMap[mode]
}
const (
IMRealtimeEventConnected = "connected"
IMRealtimeEventPong = "pong"
-18
View File
@@ -214,21 +214,3 @@ var knowledgeAnswerModeLabelMap = map[KnowledgeAnswerMode]string{
func GetKnowledgeAnswerModeLabel(mode KnowledgeAnswerMode) string {
return knowledgeAnswerModeLabelMap[mode]
}
type KnowledgeFallbackMode int
const (
KnowledgeFallbackModeNoAnswer KnowledgeFallbackMode = 1
KnowledgeFallbackModeSuggestRetry KnowledgeFallbackMode = 2
KnowledgeFallbackModeTransferHuman KnowledgeFallbackMode = 3
)
var knowledgeFallbackModeLabelMap = map[KnowledgeFallbackMode]string{
KnowledgeFallbackModeNoAnswer: "直接声明无答案",
KnowledgeFallbackModeSuggestRetry: "建议重试",
KnowledgeFallbackModeTransferHuman: "转人工",
}
func GetKnowledgeFallbackModeLabel(mode KnowledgeFallbackMode) string {
return knowledgeFallbackModeLabelMap[mode]
}