mirror of
https://github.com/Ed1s0nZ/CyberStrikeAI.git
synced 2026-10-01 05:30:19 +02:00
Merge pull request #53 from 04cb/fix/ensure-user-message-after-compression
Fix Qwen model error by ensuring user message is kept after memory compression
This commit is contained in:
1 file changed
+22
-1
@@ -345,8 +345,29 @@ func (mc *MemoryCompressor) adjustRecentStartForToolCalls(msgs []ChatMessage, re
|
|||||||
adjusted--
|
adjusted--
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Ensure at least one user message is included in recent messages to avoid Qwen model error
|
||||||
|
// Qwen models require a user message in the message array, otherwise they return:
|
||||||
|
// "No user query found in messages"
|
||||||
|
hasUserMessage := false
|
||||||
|
for i := adjusted; i < len(msgs); i++ {
|
||||||
|
if strings.EqualFold(msgs[i].Role, "user") {
|
||||||
|
hasUserMessage = true
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// If no user message in recent messages, adjust backwards to include one
|
||||||
|
if !hasUserMessage {
|
||||||
|
for adjusted > 0 {
|
||||||
|
adjusted--
|
||||||
|
if strings.EqualFold(msgs[adjusted].Role, "user") {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if adjusted != recentStart {
|
if adjusted != recentStart {
|
||||||
mc.logger.Debug("adjusted recent window to keep tool call context",
|
mc.logger.Debug("adjusted recent window to keep tool call context and user message",
|
||||||
zap.Int("original_recent_start", recentStart),
|
zap.Int("original_recent_start", recentStart),
|
||||||
zap.Int("adjusted_recent_start", adjusted),
|
zap.Int("adjusted_recent_start", adjusted),
|
||||||
)
|
)
|
||||||
|
|||||||
Reference in new issue
Block a user