From 26ed70ef705dcfe404b09ee9e5ebc7e29c11e4b6 Mon Sep 17 00:00:00 2001
From: Timothyxxx <384084775@qq.com>
Date: Wed, 27 Mar 2024 16:21:49 +0800
Subject: [PATCH] Clean Code; Refactor README
---
CONTRIBUTION.md | 0
README.md | 87 +++++++++++++++++-------------------------
desktop_env/README.md | 0
mm_agents/README.md | 65 +++++++++++++++++++++++++++++++
mm_agents/agent.py | 67 +++++++++++++-------------------
mm_agents/desktop.png | Bin 1579705 -> 0 bytes
6 files changed, 128 insertions(+), 91 deletions(-)
create mode 100644 CONTRIBUTION.md
create mode 100644 desktop_env/README.md
create mode 100644 mm_agents/README.md
delete mode 100644 mm_agents/desktop.png
diff --git a/CONTRIBUTION.md b/CONTRIBUTION.md
new file mode 100644
index 0000000..e69de29
diff --git a/README.md b/README.md
index 44d8517..53f98ac 100644
--- a/README.md
+++ b/README.md
@@ -1,10 +1,4 @@
-# OSWorld: Open-Ended Tasks in Real Computer Environments
-
-
-
-
- SLOGAN
-
+# OSWorld: Benchmarking Multimodal Agents for Open-Ended Tasks in Real Computer Environments
Website •
@@ -14,74 +8,65 @@
![Overview]()
## Updates
-- 2024-03-01: We released our [paper](), [environment code](), [dataset](), and [project page](). Check it out!
+- 2024-03-28: We released our [paper](), [environment and benchmark](), and [project page](https://os-world.github.io/). Check it out!
## Install
-1. Install VMWare and configure `vmrun` command:
-Please refer to [guidance](https://docs.google.com/document/d/1KBdeZwmZs2Vi_Wsnngb3Wf1-RiwMMpXTftwMqP2Ztak/edit#heading=h.uh0x0tkl7fuw)
+1. Install VMWare and configure `vmrun` command, and verify by:
+```bash
+vmrun -T ws list
+```
2. Install the environment package, download the examples and the virtual machine image.
-For x86_64 Linux or Windows, you can install the environment package and download the examples and the virtual machine image by running the following commands:
+For x86_64 CPU Linux or Windows, you can install the environment package and download the examples and the virtual machine image by running the following commands:
+Remove the `nogui` parameter if you want to see what happens in the virtual machine.
```bash
-git clone https://github.com/xlang-ai/DesktopEnv
-cd DesktopEnv
+git clone https://github.com/xlang-ai/OSWorld
+cd OSWorld
pip install -r requirements.txt
-gdown https://drive.google.com/drive/folders/1HX5gcf7UeyR-2UmiA15Q9U-
-Wr6E6Gio8 -O Ubuntu --folder
+gdown https://drive.google.com/drive/folders/1HX5gcf7UeyR-2UmiA15Q9U-Wr6E6Gio8 -O Ubuntu --folder
vmrun -T ws start "Ubuntu/Ubuntu.vmx" nogui
vmrun -T ws snapshot "Ubuntu/Ubuntu.vmx" "init_state"
```
+For Apple-chip macOS, you should install the specially prepared virtual machine image by running the following commands:
+```bash
+gdown https://drive.google.com/drive/folders/xxx -O Ubuntu --folder
+vmrun -T fusion start "Ubuntu/Ubuntu.vmx"
+vmrun -T fusion snapshot "Ubuntu/Ubuntu.vmx" "init_state"
+```
+
## Quick Start
Run the following minimal example to interact with the environment:
```python
-import json
from desktop_env.envs.desktop_env import DesktopEnv
-with open("evaluation_examples/examples/gimp/f723c744-e62c-4ae6-98d1-750d3cd7d79d.json", "r", encoding="utf-8") as f:
- example = json.load(f)
-
+example = {
+ "id": "94d95f96-9699-4208-98ba-3c3119edf9c2",
+ "instruction": "I want to install Spotify on my current system. Could you please help me?",
+ "config": [{"type": "execute", "parameters": {"command": ["python","-c","import pyautogui; import time; pyautogui.click(960, 540); time.sleep(0.5);"]}}], "evaluator": {"func": "check_include_exclude", "result": {"type": "vm_command_line","command": "which spotify"}, "expected": {"type": "rule","rules": {"include": ["spotify"], "exclude": ["not found"]}}}
+}
env = DesktopEnv(
- path_to_vm=r"path_to_vm",
- action_space="computer_13",
+ path_to_vm="Ubuntu/Ubuntu.vmx",
+ action_space="pyautogui",
task_config=example
)
-observation = env.reset()
-
-observation, reward, done, info = env.step({"action_type": "CLICK", "parameters": {"button": "right", "num_clicks": 1}})
+obs = env.reset()
+obs, reward, done, info = env.step("pyautogui.rightClick()")
```
-## Annotation Tool Usage
-We provide an annotation tool to help you annotate the examples.
+## Run Benchmark
+### Run the Baseline Agent
+If you want to run the baseline agent we use in our paper, you can run the following command as an example:
+```bash
-## Agent Usage
-We provide a simple agent to interact with the environment. You can use it as a starting point to build your own agent.
+```
-## Road map of infra (Proposed)
+### Run Evaluation of Your Agent
+Please first read through the [agent interface](https://github.com/xlang-ai/OSWorld/mm_agents/README.md) and the [environment interface](https://github.com/xlang-ai/OSWorld/desktop_env/README.md).
+And implement the agent interface correctly and import you customized one in the `run.py` file.
+Then, you can run the following command to evaluate your agent:
-- [x] Explore VMWare, and whether it can be connected and control through mouse package
-- [x] Explore Windows and MacOS, whether it can be installed
- - MacOS is closed source and cannot be legally installed
- - Windows is available legally and can be installed
-- [x] Build gym-like python interface for controlling the VM
-- [x] Recording of actions (mouse movement, click, keyboard) for humans to annotate, and we can replay it and compress it
-- [x] Build a simple task, e.g. open a browser, open a website, click on a button, and close the browser
-- [x] Set up a pipeline and build agents implementation (zero-shot) for the task
-- [x] Start to design on which tasks inside the DesktopENv to focus on, start to wrap up the environment to be public
-- [x] Start to annotate the examples for ~~training~~ and testing
-- [x] Error handling during file passing and file opening, etc.
-- [x] Add accessibility tree from the OS into the observation space
-- [x] Add pre-process and post-process action support for benchmarking setup and evaluation
-- [ ] Multiprocess support, this can enable the reinforcement learning to be more efficient
-- [ ] Experiment logging and visualization system
-- [ ] Add more tasks, maybe scale to 300 for v1.0.0, and create a dynamic leaderboard
-## Road map of benchmark, tools and resources (Proposed)
-- [ ] Improve the annotation tool base on DuckTrack, make it more robust which align on accessibility tree
-- [ ] Annotate the steps of doing the task
-- [ ] Build a website for the project
-- [ ] Crawl all resources we explored from the internet, and make it easy to access
-- [ ] Set up ways for community to contribute new examples
## Citation
If you find this environment useful, please consider citing our work:
diff --git a/desktop_env/README.md b/desktop_env/README.md
new file mode 100644
index 0000000..e69de29
diff --git a/mm_agents/README.md b/mm_agents/README.md
new file mode 100644
index 0000000..ff97c2a
--- /dev/null
+++ b/mm_agents/README.md
@@ -0,0 +1,65 @@
+# Agent
+## Prompt-based Agents
+
+### Supported Models
+We currently support the following models as the foundation models for the agents:
+- `GPT-3.5` (gpt-3.5-turbo-16k, ...)
+- `GPT-4` (gpt-4-0125-preview, gpt-4-1106-preview, ...)
+- `GPT-4V` (gpt-4-vision-preview, ...)
+- `Gemini-Pro`
+- `Gemini-Pro-Vision`
+- `Claude-3, 2` (claude-3-haiku-2024030, claude-3-sonnet-2024022, ...)
+- ...
+
+And those from open-source community:
+- `Mixtral 8x7B`
+- `QWEN`, `QWEN-VL`
+- `CogAgent`
+- ...
+
+And we will integrate and support more foundation models to support digital agent in the future, stay tuned.
+
+### How to use
+
+```python
+from mm_agents.agent import PromptAgent
+
+agent = PromptAgent(
+ model="gpt-4-0125-preview",
+ observation_type="screenshot",
+)
+agent.reset()
+# say we have a instruction and observation
+instruction = "Please help me to find the nearest restaurant."
+obs = {"screenshot": "path/to/observation.jpg"}
+response, actions = agent.predict(
+ instruction,
+ obs
+)
+```
+
+### Observation Space and Action Space
+We currently support the following observation spaces:
+- `a11y_tree`: the a11y tree of the current screen
+- `screenshot`: a screenshot of the current screen
+- `screenshot_a11y_tree`: a screenshot of the current screen with a11y tree
+- `som`: the set-of-mark trick on the current screen, with a table metadata
+
+And the following action spaces:
+- `pyautogui`: valid python code with `pyauotgui` code valid
+- `computer_13`: a set of enumerated actions designed by us
+
+To use feed an observation into the agent, you have to keep the obs variable as a dict with the corresponding information:
+```python
+obs = {
+ "screenshot": "path/to/observation.jpg",
+ "a11y_tree": "" # [a11y_tree data]
+}
+response, actions = agent.predict(
+ instruction,
+ obs
+)
+```
+
+## Efficient Agents, Q* Agents, and more
+Stay tuned for more updates.
diff --git a/mm_agents/agent.py b/mm_agents/agent.py
index a4b1b3a..b1c6de1 100644
--- a/mm_agents/agent.py
+++ b/mm_agents/agent.py
@@ -180,6 +180,7 @@ def trim_accessibility_tree(linearized_accessibility_tree, max_tokens):
linearized_accessibility_tree += "[...]\n"
return linearized_accessibility_tree
+
class PromptAgent:
def __init__(
self,
@@ -572,22 +573,10 @@ class PromptAgent:
logger.debug("CLAUDE MESSAGE: %s", repr(claude_messages))
- # headers = {
- # "x-api-key": os.environ["ANTHROPIC_API_KEY"],
- # "anthropic-version": "2023-06-01",
- # "content-type": "application/json"
- # }
-
- # headers = {
- # "Accept": "application / json",
- # "Authorization": "Bearer " + os.environ["ANTHROPIC_API_KEY"],
- # "User-Agent": "Apifox/1.0.0 (https://apifox.com)",
- # "Content-Type": "application/json"
- # }
-
headers = {
- "Authorization": os.environ["ANTHROPIC_API_KEY"],
- "Content-Type": "application/json"
+ "x-api-key": os.environ["ANTHROPIC_API_KEY"],
+ "anthropic-version": "2023-06-01",
+ "content-type": "application/json"
}
payload = {
@@ -598,28 +587,21 @@ class PromptAgent:
"top_p": top_p
}
- max_attempts = 20
- attempt = 0
- while attempt < max_attempts:
- # response = requests.post("https://api.aigcbest.top/v1/chat/completions", headers=headers, json=payload)
- response = requests.post("https://token.cluade-chat.top/v1/chat/completions", headers=headers,
- json=payload)
- if response.status_code == 200:
- result = response.json()['choices'][0]['message']['content']
- break
- else:
- logger.error(f"Failed to call LLM: {response.text}")
- time.sleep(10)
- attempt += 1
+ response = requests.post(
+ "https://api.anthropic.com/v1/messages",
+ headers=headers,
+ json=payload
+ )
+
+ if response.status_code != 200:
+
+ logger.error("Failed to call LLM: " + response.text)
+ time.sleep(5)
+ return ""
else:
- print("Exceeded maximum attempts to call LLM.")
- result = ""
-
- return result
-
+ return response.json()['content'][0]['text']
elif self.model.startswith("mistral"):
- print("Call mistral")
messages = payload["messages"]
max_tokens = payload["max_tokens"]
top_p = payload["top_p"]
@@ -652,7 +634,9 @@ class PromptAgent:
response = client.chat.completions.create(
messages=mistral_messages,
model=self.model,
- max_tokens=max_tokens
+ max_tokens=max_tokens,
+ top_p=top_p,
+ temperature=temperature
)
break
except:
@@ -670,7 +654,6 @@ class PromptAgent:
elif self.model.startswith("THUDM"):
# THUDM/cogagent-chat-hf
- print("Call CogAgent")
messages = payload["messages"]
max_tokens = payload["max_tokens"]
top_p = payload["top_p"]
@@ -703,7 +686,9 @@ class PromptAgent:
payload = {
"model": self.model,
"max_tokens": max_tokens,
- "messages": cog_messages
+ "messages": cog_messages,
+ "temperature": temperature,
+ "top_p": top_p
}
base_url = "http://127.0.0.1:8000"
@@ -717,7 +702,6 @@ class PromptAgent:
print("Failed to call LLM: ", response.status_code)
return ""
-
elif self.model.startswith("gemini"):
def encoded_img_to_pil_img(data_str):
base64_str = data_str.replace("data:image/png;base64,", "")
@@ -802,7 +786,8 @@ class PromptAgent:
messages = payload["messages"]
max_tokens = payload["max_tokens"]
top_p = payload["top_p"]
- temperature = payload["temperature"]
+ if payload["temperature"]:
+ logger.warning("Qwen model does not support temperature parameter, it will be ignored.")
qwen_messages = []
@@ -821,7 +806,9 @@ class PromptAgent:
response = dashscope.MultiModalConversation.call(
model='qwen-vl-plus',
- messages=messages, # todo: add the hyperparameters
+ messages=messages,
+ max_length=max_tokens,
+ top_p=top_p,
)
# The response status_code is HTTPStatus.OK indicate success,
# otherwise indicate request is failed, you can get error code
diff --git a/mm_agents/desktop.png b/mm_agents/desktop.png
deleted file mode 100644
index 17c8885861a56bd5fb04148c432c5f03b4caa28d..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 1579705
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Т@xcMQPW&-jOa$7lYN-~X-0>v2xp{DvQSF`zLXUd+`?AU1=8?uRUWbG@w~q@!gA_>Ht&
zeAb@EXfR(sxJC~9Bj=~O0Xg@$PHly-*kd34-nC%(O_y7pj6Ailv9;mGLT}=Y`g`$f
zgR?#I6yDyxZmBxL3eRbvG&B7tT%?*y0u#P@ZfX2RTw!^DlO31!yP#CD*4G7wY`7&U
z2t+p04OAg0HD&kL62|B+yIHfPK?w8hyY4cF6U}n`)IO7ma6gV0ndNoTnWw%I@Et$4
zE=F07CD)kQztRJ8rLo}rB$Csk7JMe9leGI&Bs$WDGH0F8|8_f%|I^bBS6muV~i*Sy1;
zsxm_s^g|}sVmkWUv}h!YA%+}7pasC0A=y$B#eBv5UYe5TQH)wNZOq`fQYfFru2yt&
z7kH(6X;+Id*Zir5;z|q79|RSvC3AnvIyxyC_>4{
zw2F|4jUiMLWmYPcRt`vn+JV64sw?4*p>w_wptkHVlz$KrlPF5bW|JbIc&jq7srW*C
zn$1v8E_ZX`0^1KjXhf-OVozpmPD-XH6PaWsDLe(veG8Y^w>NI%wi;!zq)ZDL{(tar|gi<$`zA;7O_31!yPSbf_0XFhyG>=7V
zIYmLGR*O?x;$yGxKY>vxs-*dXpKv_(J0P0P%_O^>pS`-+NUvLB;{3|W1v?E%@EFIl
z<9L1?qfaZ*+47#I3?53qmHAah63iWnrEpgNu!%{geUtO!vyy=syW5G>+uW05)3sX%
zyL+WQhE!grX11qGtDWiE0Ly<@KbfAjlofZVx}d0i=|gLsch=7NCuo_p^d~5VBLoFH
z8*_y3D2&C|(==tyb6iBh`w~)Uj{0zorw(MbKetVx)%Se7Xq1R*>BACOOK&6pmHL#I
z*E811)uDyDH_^asDy$_kyUr}@QrN3I12D@q-nIiPZ9>kpFov7WpZnS`e)aWB^_J_(
ztM?HmKx)qoa8v7SqgcCH_&XT@OFS2xUUae)gn8qshaMF_niAZ+=%j4_f1S(mV
z1xXprOGQ*&r?a+-QyRq4{MAcp3eTr$Jnc%<@lIEWl_56j+i1%teYkLC8emun(J6IL
zho1q%o#~(Zp)-uSNG!yi9>k-zYzd4A*vK1Y1;8Xvrh9Q0Q`0e!>k8*Vq%K?8XH{I7lf
zzxi)}?%({Ezx(g|^&fvCNaw3eMKiALPF*XP>_~XJzGvTti_ozGh17Q
U=`a_BbPc4)VdX^rmo2K}z-
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