mirror of
https://github.com/Ed1s0nZ/CyberStrikeAI.git
synced 2026-04-21 18:26:38 +02:00
Add files via upload
This commit is contained in:
@@ -1377,6 +1377,13 @@ func (a *Agent) handleToolRoleError(errMsg string, messages *[]ChatMessage) bool
|
||||
return true
|
||||
}
|
||||
|
||||
// RepairOrphanToolMessages 清理失去配对的tool消息和未完成的tool_calls,避免OpenAI报错
|
||||
// 同时确保历史消息中的tool_calls只作为上下文记忆,不会触发重新执行
|
||||
// 这是一个公开方法,可以在恢复历史消息时调用
|
||||
func (a *Agent) RepairOrphanToolMessages(messages *[]ChatMessage) bool {
|
||||
return a.repairOrphanToolMessages(messages)
|
||||
}
|
||||
|
||||
// repairOrphanToolMessages 清理失去配对的tool消息和未完成的tool_calls,避免OpenAI报错
|
||||
// 同时确保历史消息中的tool_calls只作为上下文记忆,不会触发重新执行
|
||||
func (a *Agent) repairOrphanToolMessages(messages *[]ChatMessage) bool {
|
||||
|
||||
@@ -831,6 +831,16 @@ func (h *AgentHandler) loadHistoryFromReActData(conversationID string) ([]agent.
|
||||
return nil, fmt.Errorf("从ReAct数据解析的消息为空")
|
||||
}
|
||||
|
||||
// 修复可能存在的失配tool消息,避免OpenAI报错
|
||||
// 这可以防止出现"messages with role 'tool' must be a response to a preceeding message with 'tool_calls'"错误
|
||||
if h.agent != nil {
|
||||
if fixed := h.agent.RepairOrphanToolMessages(&agentMessages); fixed {
|
||||
h.logger.Info("修复了从ReAct数据恢复的历史消息中的失配tool消息",
|
||||
zap.String("conversationId", conversationID),
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
h.logger.Info("从ReAct数据恢复历史消息完成",
|
||||
zap.String("conversationId", conversationID),
|
||||
zap.String("dataSource", dataSource),
|
||||
|
||||
Reference in New Issue
Block a user