Enha: don't auto remove func calls

This commit is contained in:
Grail Finder
2025-12-10 13:48:21 +03:00
parent c80ff60668
commit 91bb6aab2b

25
bot.go
View File

@@ -69,17 +69,18 @@ var (
// cleanNullMessages removes messages with null or empty content to prevent API issues // cleanNullMessages removes messages with null or empty content to prevent API issues
func cleanNullMessages(messages []models.RoleMsg) []models.RoleMsg { func cleanNullMessages(messages []models.RoleMsg) []models.RoleMsg {
cleaned := make([]models.RoleMsg, 0, len(messages)) // // deletes tool calls which we don't want for now
for _, msg := range messages { // cleaned := make([]models.RoleMsg, 0, len(messages))
// Include message if it has content or if it's a tool response (which might have tool_call_id) // for _, msg := range messages {
if msg.HasContent() || msg.ToolCallID != "" { // // is there a sense for this check at all?
cleaned = append(cleaned, msg) // if msg.HasContent() || msg.ToolCallID != "" || msg.Role == cfg.AssistantRole || msg.Role == cfg.WriteNextMsgAsCompletionAgent {
} else { // cleaned = append(cleaned, msg)
// Log filtered messages for debugging // } else {
logger.Warn("filtering out message during cleaning", "role", msg.Role, "content", msg.Content, "tool_call_id", msg.ToolCallID, "has_content", msg.HasContent()) // // Log filtered messages for debugging
} // logger.Warn("filtering out message during cleaning", "role", msg.Role, "content", msg.Content, "tool_call_id", msg.ToolCallID, "has_content", msg.HasContent())
} // }
return consolidateConsecutiveAssistantMessages(cleaned) // }
return consolidateConsecutiveAssistantMessages(messages)
} }
// consolidateConsecutiveAssistantMessages merges consecutive assistant messages into a single message // consolidateConsecutiveAssistantMessages merges consecutive assistant messages into a single message
@@ -568,7 +569,7 @@ out:
logger.Debug("chatRound: before cleaning", "index", i, "role", msg.Role, "content_len", len(msg.Content), "has_content", msg.HasContent(), "tool_call_id", msg.ToolCallID) logger.Debug("chatRound: before cleaning", "index", i, "role", msg.Role, "content_len", len(msg.Content), "has_content", msg.HasContent(), "tool_call_id", msg.ToolCallID)
} }
// Clean null/empty messages to prevent API issues with endpoints like llama.cpp jinja template // // Clean null/empty messages to prevent API issues with endpoints like llama.cpp jinja template
cleanChatBody() cleanChatBody()
logger.Debug("chatRound: after cleanChatBody", "messages_after_clean", len(chatBody.Messages)) logger.Debug("chatRound: after cleanChatBody", "messages_after_clean", len(chatBody.Messages))