Skip to content

Commit 3fb8020

Browse files
committed
refactor: remove code duplication in get_next_action method
1 parent 0c9cb9b commit 3fb8020

File tree

1 file changed

+27
-30
lines changed

1 file changed

+27
-30
lines changed

src/agent/custom_agent.py

Lines changed: 27 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -184,42 +184,39 @@ def update_step_info(
184184
@time_execution_async("--get_next_action")
185185
async def get_next_action(self, input_messages: list[BaseMessage]) -> AgentOutput:
186186
"""Get next action from LLM based on current state"""
187+
messages_to_process = (
188+
self.message_manager.merge_successive_human_messages(input_messages)
189+
if self.use_deepseek_r1
190+
else input_messages
191+
)
192+
193+
ai_message = self.llm.invoke(messages_to_process)
194+
self.message_manager._add_message_with_tokens(ai_message)
195+
187196
if self.use_deepseek_r1:
188-
merged_input_messages = self.message_manager.merge_successive_human_messages(input_messages)
189-
ai_message = self.llm.invoke(merged_input_messages)
190-
self.message_manager._add_message_with_tokens(ai_message)
191-
logger.info(f"🤯 Start Deep Thinking: ")
197+
logger.info("🤯 Start Deep Thinking: ")
192198
logger.info(ai_message.reasoning_content)
193-
logger.info(f"🤯 End Deep Thinking")
194-
if isinstance(ai_message.content, list):
195-
ai_content = ai_message.content[0].replace("```json", "").replace("```", "")
196-
else:
197-
ai_content = ai_message.content.replace("```json", "").replace("```", "")
198-
ai_content = repair_json(ai_content)
199-
parsed_json = json.loads(ai_content)
200-
parsed: AgentOutput = self.AgentOutput(**parsed_json)
201-
if parsed is None:
202-
logger.debug(ai_message.content)
203-
raise ValueError(f'Could not parse response.')
199+
logger.info("🤯 End Deep Thinking")
200+
201+
if isinstance(ai_message.content, list):
202+
ai_content = ai_message.content[0]
204203
else:
205-
ai_message = self.llm.invoke(input_messages)
206-
self.message_manager._add_message_with_tokens(ai_message)
207-
if isinstance(ai_message.content, list):
208-
ai_content = ai_message.content[0].replace("```json", "").replace("```", "")
209-
else:
210-
ai_content = ai_message.content.replace("```json", "").replace("```", "")
211-
ai_content = repair_json(ai_content)
212-
parsed_json = json.loads(ai_content)
213-
parsed: AgentOutput = self.AgentOutput(**parsed_json)
214-
if parsed is None:
215-
logger.debug(ai_message.content)
216-
raise ValueError(f'Could not parse response.')
217-
218-
# cut the number of actions to max_actions_per_step
204+
ai_content = ai_message.content
205+
206+
ai_content = ai_content.replace("```json", "").replace("```", "")
207+
ai_content = repair_json(ai_content)
208+
parsed_json = json.loads(ai_content)
209+
parsed: AgentOutput = self.AgentOutput(**parsed_json)
210+
211+
if parsed is None:
212+
logger.debug(ai_message.content)
213+
raise ValueError('Could not parse response.')
214+
215+
# Limit actions to maximum allowed per step
219216
parsed.action = parsed.action[: self.max_actions_per_step]
220217
self._log_response(parsed)
221218
self.n_steps += 1
222-
219+
223220
return parsed
224221

225222
@time_execution_async("--step")

0 commit comments

Comments
 (0)