@@ -47,6 +47,10 @@ def convert_action_to_message(action: OSWorldInteractiveAction) -> Message:
4747 output_ids = getattr (llm_response .choices [0 ], 'output_ids' , None )
4848 logprobs = getattr (llm_response .choices [0 ], 'logprobs' , None )
4949
50+ text_content = assistant_msg .content
51+ if text_content is None :
52+ text_content = ''
53+
5054 return Message (
5155 role = getattr (assistant_msg , 'role' , 'assistant' ),
5256 content = [TextContent (text = assistant_msg .content )],
@@ -63,11 +67,19 @@ def convert_message_action_to_message(
6367 ) -> Message :
6468 text_content = action .content
6569 if include_a11y_tree :
66- accessibility_tree = linearize_accessibility_tree (action .accessibility_tree )
67- text_content += f"\n \n Accessibility Tree:\n { accessibility_tree } "
70+ accessibility_tree = action .accessibility_tree
71+ if accessibility_tree is None or len (accessibility_tree ) < 1 :
72+ logger .error ('Accessibility tree is None or empty, skipping' )
73+ else :
74+ accessibility_tree = linearize_accessibility_tree (accessibility_tree )
75+ text_content += f"\n \n Accessibility Tree:\n { accessibility_tree } "
6876 content = [TextContent (text = text_content )]
6977 if include_screenshot :
70- content .append (ImageContent (image_urls = action .image_urls ))
78+ image_urls = action .image_urls
79+ if image_urls is None or len (image_urls ) < 1 :
80+ logger .error ('Image urls is None or empty, skipping' )
81+ else :
82+ content .append (ImageContent (image_urls = image_urls ))
7183 return Message (
7284 role = 'user' ,
7385 content = content ,
@@ -82,11 +94,19 @@ def convert_observation_to_message(
8294 if isinstance (observation , OSWorldOutputObservation ):
8395 prompt_text = OSWORLD_OBSERVATION_FEEDBACK_PROMPT .format (instruction = instruction )
8496 if include_a11y_tree :
85- accessibility_tree = linearize_accessibility_tree (observation .accessibility_tree )
86- prompt_text += f"\n \n Accessibility Tree:\n { accessibility_tree } "
97+ accessibility_tree = observation .accessibility_tree
98+ if accessibility_tree and len (accessibility_tree ) >= 1 :
99+ logger .error ('Accessibility tree is None or empty, skipping' )
100+ else :
101+ accessibility_tree = linearize_accessibility_tree (accessibility_tree )
102+ prompt_text += f"\n \n Accessibility Tree:\n { accessibility_tree } "
87103 content = [TextContent (text = prompt_text )]
88104 if include_screenshot :
89- content .append (ImageContent (image_urls = observation .image_urls ))
105+ image_url = observation .image_urls
106+ if image_url is None or len (image_url ) < 1 :
107+ logger .error ('Image urls is None or empty, skipping' )
108+ else :
109+ content .append (ImageContent (image_urls = image_url ))
90110 return Message (
91111 role = 'tool' , # or user?
92112 content = content ,
@@ -106,11 +126,13 @@ def convert_message_action_to_message_full_state(
106126 action : MessageAction ,
107127 include_a11y_tree : bool = True ,
108128 ) -> Message :
109- test_content = action .content
129+ text_content = action .content
110130 if include_a11y_tree :
111- accessibility_tree = linearize_accessibility_tree (action .accessibility_tree )
112- test_content += f"\n \n Accessibility Tree:\n { accessibility_tree } "
113- content = [TextContent (text = action .content )]
131+ accessibility_tree = action .accessibility_tree
132+ if accessibility_tree and len (accessibility_tree ) > 0 :
133+ accessibility_tree = linearize_accessibility_tree (action .accessibility_tree )
134+ text_content += f"\n \n Accessibility Tree:\n { accessibility_tree } "
135+ content = [TextContent (text = text_content )]
114136 content .append (ImageContent (image_urls = action .image_urls ))
115137 content .append (TextContent (text = action .accessibility_tree ))
116138 return Message (
@@ -126,8 +148,10 @@ def convert_observation_to_message_full_state(
126148 if isinstance (observation , OSWorldOutputObservation ):
127149 prompt_text = OSWORLD_OBSERVATION_FEEDBACK_PROMPT .format (instruction = instruction )
128150 if include_a11y_tree :
129- accessibility_tree = linearize_accessibility_tree (observation .accessibility_tree )
130- prompt_text += f"\n \n Accessibility Tree:\n { accessibility_tree } "
151+ accessibility_tree = observation .accessibility_tree
152+ if accessibility_tree and len (accessibility_tree ) > 0 :
153+ accessibility_tree = linearize_accessibility_tree (accessibility_tree )
154+ prompt_text += f"\n \n Accessibility Tree:\n { accessibility_tree } "
131155 content = [TextContent (text = prompt_text )]
132156
133157 # We always add screenshot and accessibility tree to the message
@@ -168,6 +192,7 @@ def __init__(
168192 """
169193 super ().__init__ (llm , config )
170194
195+ self .pause_time = 0.0
171196 self .system_prompt = os .path .join (os .path .dirname (__file__ ), 'prompts' , 'system_prompt_osworld.j2' )
172197 with open (self .system_prompt , 'r' ) as file :
173198 self .system_prompt = file .read ()
@@ -296,10 +321,14 @@ def step(self, state: State) -> Action:
296321 }
297322 params ['tools' ] = self .tools
298323 params ['extra_body' ] = {'metadata' : state .to_llm_metadata (agent_name = self .name )}
324+ import pdb ; pdb .set_trace ()
299325 response = self .llm .completion (** params )
300326 import pdb ; pdb .set_trace ()
301327 logger .debug (f'Response from LLM: { response } ' )
302328 action = codeact_function_calling .response_to_actions (response , timeout = self .config .action_timeout )
329+ if self .pause_time > 0.5 :
330+ logger .info (f'Setting pause time to { self .pause_time } seconds for agentic action' )
331+ action .pause_time = self .pause_time
303332 logger .debug (f'Actions after response_to_actions: { action } ' )
304333 return action
305334
0 commit comments