Henri Bonamy commited on
Commit
86c3c8b
·
1 Parent(s): cd123dd

Fixed assistant -> assistant messages after compaction

Browse files
Files changed (1) hide show
  1. agent/context_manager/manager.py +8 -4
agent/context_manager/manager.py CHANGED
@@ -62,10 +62,14 @@ class ContextManager:
62
  )
63
 
64
  # Don't summarize a certain number of just-preceding messages
65
- recent_messages = self.items[-self.untouched_messages :]
 
 
 
 
66
 
67
- # Summarize everything in between (skip system prompt, skip preceding n)
68
- messages_to_summarize = self.items[1 : -self.untouched_messages]
69
 
70
  # improbable, messages would have to very long
71
  if not messages_to_summarize:
@@ -87,7 +91,7 @@ class ContextManager:
87
  role="assistant", content=response.choices[0].message.content
88
  )
89
 
90
- # Reconstruct: system + summary + recent 2 messages
91
  if system_msg:
92
  self.items = [system_msg, summarized_message] + recent_messages
93
  else:
 
62
  )
63
 
64
  # Don't summarize a certain number of just-preceding messages
65
+ # Walk back to find a user message to make sure we keep an assistant -> user ->
66
+ # assistant general conversation structure
67
+ idx = len(self.items) - self.untouched_messages
68
+ while idx > 1 and self.items[idx].role != "user":
69
+ idx -= 1
70
 
71
+ recent_messages = self.items[idx:]
72
+ messages_to_summarize = self.items[1:idx]
73
 
74
  # improbable, messages would have to very long
75
  if not messages_to_summarize:
 
91
  role="assistant", content=response.choices[0].message.content
92
  )
93
 
94
+ # Reconstruct: system + summary + recent messages (includes tools)
95
  if system_msg:
96
  self.items = [system_msg, summarized_message] + recent_messages
97
  else: