diff --git a/vision_agent/agent/vision_agent.py b/vision_agent/agent/vision_agent.py index 1e1abbe6..72727f49 100644 --- a/vision_agent/agent/vision_agent.py +++ b/vision_agent/agent/vision_agent.py @@ -218,6 +218,7 @@ def chat_with_code( ) as code_interpreter: orig_chat = copy.deepcopy(chat) int_chat = copy.deepcopy(chat) + last_user_message = chat[-1] media_list = [] for chat_i in int_chat: if "media" in chat_i: @@ -266,6 +267,24 @@ def chat_with_code( orig_chat.append({"role": "observation", "content": artifacts_loaded}) self.streaming_message({"role": "observation", "content": artifacts_loaded}) + user_code_action = parse_execution(last_user_message.get("content"), False) + + if user_code_action is not None: + user_result, user_obs = run_code_action( + user_code_action, code_interpreter, str(remote_artifacts_path) + ) + if self.verbosity >= 1: + _LOGGER.info(user_obs) + self.streaming_message( + { + "role": "observation", + "content": user_obs, + "execution": user_result, + "finished": True, + } + ) + finished = True + while not finished and iterations < self.max_iterations: response = run_conversation(self.agent, int_chat) if self.verbosity >= 1: diff --git a/vision_agent/tools/meta_tools.py b/vision_agent/tools/meta_tools.py index 9012e9d4..0d20cb28 100644 --- a/vision_agent/tools/meta_tools.py +++ b/vision_agent/tools/meta_tools.py @@ -250,6 +250,7 @@ def edit_code_artifact( total_lines = len(artifacts[name].splitlines()) if start < 0 or end < 0 or start > end or end > total_lines: + print("[Invalid line range]") return "[Invalid line range]" if start == end: end += 1