88from __future__ import annotations
99
1010from collections .abc import MutableMapping
11- from collections import deque
1211from agents .reasoner .base import BaseReasoner , ReasoningResult
1312from agents .llm .base_llm import BaseLLM
1413from agents .tools .base import JustInTimeToolingBase
@@ -61,7 +60,8 @@ def __init__(
6160 self .reasoner = reasoner
6261
6362 self .goal_preprocessor = goal_preprocessor
64- self .memory .setdefault ("conversation_history" , deque (maxlen = conversation_history_window ))
63+ self .conversation_history_window = conversation_history_window
64+ self .memory .setdefault ("conversation_history" , [])
6565
6666 self ._state : AgentState = AgentState .READY
6767
@@ -77,19 +77,17 @@ def solve(self, goal: str) -> ReasoningResult:
7777 if self .goal_preprocessor :
7878 revised_goal , intervention_message = self .goal_preprocessor .process (goal , self .memory .get ("conversation_history" ))
7979 if intervention_message :
80- self .memory [ "conversation_history" ]. append ({ "goal" : goal , "result" : f"user intervention message: { intervention_message } " })
80+ self ._record_interaction ({ "goal" : goal , "result" : f"user intervention message: { intervention_message } " })
8181 return ReasoningResult (success = False , final_answer = intervention_message )
8282 goal = revised_goal
8383
84- self .memory [f"goal:{ run_id } " ] = goal
8584 self ._state = AgentState .BUSY
8685
8786 try :
8887 result = self .reasoner .run (goal )
8988 result .final_answer = self .llm .prompt (_PROMPTS ["summarize" ].format (goal = goal , history = getattr (result , "transcript" , "" )))
9089
91- self .memory [f"result:{ run_id } " ] = result
92- self .memory ["conversation_history" ].append ({"goal" : goal , "result" : result .final_answer })
90+ self ._record_interaction ({"goal" : goal , "result" : result .final_answer })
9391 self ._state = AgentState .READY
9492
9593 duration_ms = int ((time .perf_counter () - start_time ) * 1000 )
@@ -109,3 +107,9 @@ def solve(self, goal: str) -> ReasoningResult:
109107 except Exception :
110108 self ._state = AgentState .NEEDS_ATTENTION
111109 raise
110+
111+ def _record_interaction (self , entry : dict ) -> None :
112+ if self .conversation_history_window <= 0 :
113+ return
114+ self .memory ["conversation_history" ].append (entry )
115+ self .memory ["conversation_history" ][:] = self .memory ["conversation_history" ][- self .conversation_history_window :]
0 commit comments