Merge branch 'zdy'
This commit is contained in:
@@ -160,6 +160,7 @@ class GPT4v_Agent:
|
|||||||
"Authorization": f"Bearer {api_key}"
|
"Authorization": f"Bearer {api_key}"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
self.thoughts = []
|
||||||
self.actions = []
|
self.actions = []
|
||||||
self.observations = []
|
self.observations = []
|
||||||
|
|
||||||
@@ -224,17 +225,21 @@ class GPT4v_Agent:
|
|||||||
})
|
})
|
||||||
|
|
||||||
# Append trajectory
|
# Append trajectory
|
||||||
assert len(self.observations) == len(self.actions), "The number of observations and actions should be the same."
|
assert len(self.observations) == len(self.actions) and len(self.actions) == len(self.thoughts)\
|
||||||
|
, "The number of observations and actions should be the same."
|
||||||
|
|
||||||
if len(self.observations) > self.max_trajectory_length:
|
if len(self.observations) > self.max_trajectory_length:
|
||||||
_observations = self.observations[-self.max_trajectory_length:]
|
_observations = self.observations[-self.max_trajectory_length:]
|
||||||
_actions = self.actions[-self.max_trajectory_length:]
|
_actions = self.actions[-self.max_trajectory_length:]
|
||||||
|
_thoughts = self.thoughts[-self.max_trajectory_length:]
|
||||||
else:
|
else:
|
||||||
_observations = self.observations
|
_observations = self.observations
|
||||||
_actions = self.actions
|
_actions = self.actions
|
||||||
|
_thoughts = self.thoughts
|
||||||
|
|
||||||
for previous_obs, previous_action in zip(_observations, _actions):
|
for previous_obs, previous_action, previous_thought in zip(_observations, _actions, _thoughts):
|
||||||
|
|
||||||
|
# {{{1
|
||||||
if self.exp == "both":
|
if self.exp == "both":
|
||||||
_screenshot = previous_obs["screenshot"]
|
_screenshot = previous_obs["screenshot"]
|
||||||
_linearized_accessibility_tree = previous_obs["accessibility_tree"]
|
_linearized_accessibility_tree = previous_obs["accessibility_tree"]
|
||||||
@@ -310,18 +315,19 @@ class GPT4v_Agent:
|
|||||||
]
|
]
|
||||||
})
|
})
|
||||||
else:
|
else:
|
||||||
raise ValueError("Invalid experiment type: " + self.exp)
|
raise ValueError("Invalid experiment type: " + self.exp) # 1}}}
|
||||||
|
|
||||||
messages.append({
|
messages.append({
|
||||||
"role": "assistant",
|
"role": "assistant",
|
||||||
"content": [
|
"content": [
|
||||||
{
|
{
|
||||||
"type": "text",
|
"type": "text",
|
||||||
"text": "\n".join(previous_action) if len(previous_action) > 0 else "No valid action"
|
"text": previous_thought.stip() if len(previous_thought)>0 else "No valid action"
|
||||||
},
|
},
|
||||||
]
|
]
|
||||||
})
|
})
|
||||||
|
|
||||||
|
# {{{1
|
||||||
if self.exp in ["screenshot", "both"]:
|
if self.exp in ["screenshot", "both"]:
|
||||||
base64_image = encode_image(obs["screenshot"])
|
base64_image = encode_image(obs["screenshot"])
|
||||||
linearized_accessibility_tree = linearize_accessibility_tree(accessibility_tree=obs["accessibility_tree"])
|
linearized_accessibility_tree = linearize_accessibility_tree(accessibility_tree=obs["accessibility_tree"])
|
||||||
@@ -430,7 +436,7 @@ class GPT4v_Agent:
|
|||||||
]
|
]
|
||||||
})
|
})
|
||||||
else:
|
else:
|
||||||
raise ValueError("Invalid experiment type: " + self.exp)
|
raise ValueError("Invalid experiment type: " + self.exp) # 1}}}
|
||||||
|
|
||||||
with open("messages.json", "w") as f:
|
with open("messages.json", "w") as f:
|
||||||
f.write(json.dumps(messages, indent=4))
|
f.write(json.dumps(messages, indent=4))
|
||||||
@@ -474,9 +480,11 @@ class GPT4v_Agent:
|
|||||||
|
|
||||||
try:
|
try:
|
||||||
actions = self.parse_actions(response, masks)
|
actions = self.parse_actions(response, masks)
|
||||||
|
self.thoughts.append(response)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
print("Failed to parse action from response", e)
|
print("Failed to parse action from response", e)
|
||||||
actions = None
|
actions = None
|
||||||
|
self.thoughts.append("")
|
||||||
|
|
||||||
return actions
|
return actions
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user