Skip to content

Commit 468c8fb

Browse files
authored
Merge pull request #110 from microsoft/pre-release
New Release for v1.0.0
2 parents 91ae4a8 + b46cb89 commit 468c8fb

3 files changed

Lines changed: 31 additions & 23 deletions

File tree

README.md

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -26,29 +26,30 @@
2626
<b>UFO</b> <img src="./assets/ufo_blue.png" alt="UFO Image" width="24"> operates as a multi-agent framework, encompassing:
2727
- <b>HostAgent 🤖</b>, tasked with choosing an application for fulfilling user requests. This agent may also switch to a different application when a request spans multiple applications, and the task is partially completed in the preceding application.
2828
- <b>AppAgent 👾</b>, responsible for iteratively executing actions on the selected applications until the task is successfully concluded within a specific application.
29-
- <b>Control Interaction 🎮</b>, is tasked with translating actions from HostAgent and AppAgent into interactions with the application and its UI controls. It's essential that the targeted controls are compatible with the Windows **UI Automation** or **Win32** API.
29+
- <b>Application Automator 🎮</b>, is tasked with translating actions from HostAgent and AppAgent into interactions with the application and through UI controls, native APIs or AI tools. Check out more details [here](https://microsoft.github.io/UFO/automator/overview/).
3030

31-
Both agents leverage the multi-modal capabilities of GPT-Vision to comprehend the application UI and fulfill the user's request. For more details, please consult our [technical report](https://arxiv.org/abs/2402.07939) and [Documentation](https://microsoft.github.io/UFO/).
31+
Both agents leverage the multi-modal capabilities of GPT-Vision to comprehend the application UI and fulfill the user's request. For more details, please consult our [technical report](https://arxiv.org/abs/2402.07939) and [documentation](https://microsoft.github.io/UFO/).
3232
<h1 align="center">
3333
<img src="./assets/framework_v2.png"/>
3434
</h1>
3535

3636

3737
## 📢 News
38-
- 📅 2024-06-28: We are thrilled to announce that our official introduction video is now available on [YouTube](https://www.youtube.com/watch?v=QT_OhygMVXU)! Additionally, you can check out the early version of our [documentation](https://microsoft.github.io/UFO/). We welcome your contributions and feedback!
38+
- 📅 2024-07-06: We have a **New Release for v1.0.0!**. You can check out our [documentation](https://microsoft.github.io/UFO/). We welcome your contributions and feedback!
39+
- 📅 2024-06-28: We are thrilled to announce that our official introduction video is now available on [YouTube](https://www.youtube.com/watch?v=QT_OhygMVXU)!
3940
- 📅 2024-06-25: **New Release for v0.2.1!** We are excited to announce the release of version 0.2.1! This update includes several new features and improvements:
4041
1. **HostAgent Refactor:** We've refactored the HostAgent to enhance its efficiency in managing AppAgents within UFO.
4142
2. **Evaluation Agent:** Introducing an evaluation agent that assesses task completion and provides real-time feedback.
42-
3. **Google Gemini Support:** UFO now supports Google Gemini as the inference engine. Refer to our detailed guide in [Documentation](https://microsoft.github.io/UFO/supported_models/gemini/).
43+
3. **Google Gemini Support:** UFO now supports Google Gemini as the inference engine. Refer to our detailed guide in [documentation](https://microsoft.github.io/UFO/supported_models/gemini/).
4344
4. **Customized User Agents:** Users can now create customized agents by simply answering a few questions.
4445
- 📅 2024-05-21: We have reached 5K stars!✨
4546
- 📅 2024-05-08: **New Release for v0.1.1!** We've made some significant updates! Previously known as AppAgent and ActAgent, we've rebranded them to HostAgent and AppAgent to better align with their functionalities. Explore the latest enhancements:
46-
1. **Learning from Human Demonstration:** UFO now supports learning from human demonstration! Utilize the [Windows Step Recorder](https://support.microsoft.com/en-us/windows/record-steps-to-reproduce-a-problem-46582a9b-620f-2e36-00c9-04e25d784e47) to record your steps and demonstrate them for UFO. Refer to our detailed guide in [README.md](/record_processor/README.md) for more information.
47+
1. **Learning from Human Demonstration:** UFO now supports learning from human demonstration! Utilize the [Windows Step Recorder](https://support.microsoft.com/en-us/windows/record-steps-to-reproduce-a-problem-46582a9b-620f-2e36-00c9-04e25d784e47) to record your steps and demonstrate them for UFO. Refer to our detailed guide in [README.md](https://microsoft.github.io/UFO/creating_app_agent/demonstration_provision/) for more information.
4748
2. **Win32 Support:** We've incorporated support for [Win32](https://learn.microsoft.com/en-us/windows/win32/controls/window-controls) as a control backend, enhancing our UI automation capabilities.
4849
3. **Extended Application Interaction:** UFO now goes beyond UI controls, allowing interaction with your application through keyboard inputs and native APIs! Presently, we support Word ([examples](/ufo/prompts/apps/word/api.yaml)), with more to come soon. Customize and build your own interactions.
4950
4. **Control Filtering:** Streamline LLM's action process by using control filters to remove irrelevant control items. Enable them in [config_dev.yaml](/ufo/config/config_dev.yaml) under the `control filtering` section at the bottom.
5051
- 📅 2024-03-25: **New Release for v0.0.1!** Check out our exciting new features.
51-
1. We now support creating your help documents for each Windows application to become an app expert. Check the [README](./learner/README.md) for more details!
52+
1. We now support creating your help documents for each Windows application to become an app expert. Check the [README](https://microsoft.github.io/UFO/creating_app_agent/help_document_provision/) for more details!
5253
2. UFO now supports RAG from offline documents and online Bing search.
5354
3. You can save the task completion trajectory into its memory for UFO's reference, improving its future success rate!
5455
4. You can customize different GPT models for AppAgent and ActAgent. Text-only models (e.g., GPT-4) are now supported!
@@ -99,7 +100,7 @@ pip install -r requirements.txt
99100
```
100101

101102
### ⚙️ Step 2: Configure the LLMs
102-
Before running UFO, you need to provide your LLM configurations **individually for HostAgent and AppAgent**. You can create your own config file `ufo/config/config.yaml`, by copying the `ufo/config/config.yaml.template` and editing config for **APP_AGENT** and **ACTION_AGENT** as follows:
103+
Before running UFO, you need to provide your LLM configurations **individually for HostAgent and AppAgent**. You can create your own config file `ufo/config/config.yaml`, by copying the `ufo/config/config.yaml.template` and editing config for **HOST_AGENT** and **APP_AGENT** as follows:
103104

104105

105106
#### OpenAI
@@ -140,10 +141,10 @@ UFO also supports other LLMs and advanced configurations, such as customize your
140141
If you want to enhance UFO's ability with external knowledge, you can optionally configure it with an external database for retrieval augmented generation (RAG) in the `ufo/config/config.yaml` file.
141142

142143
We provide the following options for RAG to enhance UFO's capabilities:
143-
- **[Offline Help Document](https://microsoft.github.io/UFO/advanced_usage/reinforce_appagent/learning_from_help_document/)**: Enable UFO to retrieve information from offline help documents.
144-
- **[Online Bing Search Engine](https://microsoft.github.io/UFO/advanced_usage/reinforce_appagent/learning_from_bing_search/)**: Enhance UFO's capabilities by utilizing the most up-to-date online search results.
145-
- **[Self-Experience](https://microsoft.github.io/UFO/advanced_usage/reinforce_appagent/experience_learning/)**: Save task completion trajectories into UFO's memory for future reference.
146-
- **[User-Demonstration](https://microsoft.github.io/UFO/advanced_usage/reinforce_appagent/learning_from_demonstration/)**: Boost UFO's capabilities through user demonstration.
144+
- [Offline Help Document](https://microsoft.github.io/UFO/advanced_usage/reinforce_appagent/learning_from_help_document/)* Enable UFO to retrieve information from offline help documents.
145+
- [Online Bing Search Engine](https://microsoft.github.io/UFO/advanced_usage/reinforce_appagent/learning_from_bing_search/): Enhance UFO's capabilities by utilizing the most up-to-date online search results.
146+
- [Self-Experience](https://microsoft.github.io/UFO/advanced_usage/reinforce_appagent/experience_learning/): Save task completion trajectories into UFO's memory for future reference.
147+
- [User-Demonstration](https://microsoft.github.io/UFO/advanced_usage/reinforce_appagent/learning_from_demonstration/): Boost UFO's capabilities through user demonstration.
147148

148149
Consult their respective documentation for more information on how to configure these settings.
149150

@@ -256,7 +257,6 @@ https://github.com/microsoft/UFO/assets/11352048/aa41ad47-fae7-4334-8e0b-ba71c4f
256257

257258

258259

259-
260260
## 📊 Evaluation
261261

262262
Please consult the [WindowsBench](https://arxiv.org/pdf/2402.07939.pdf) provided in Section A of the Appendix within our technical report. Here are some tips (and requirements) to aid in completing your request:

documents/docs/automator/overview.md

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ You can find the reference for a basic `Command` class below:
5151
...
5252

5353

54-
## Invoker
54+
## Invoker (AppPuppeteer)
5555

5656
The `AppPuppeteer` plays the role of the invoker in the Automator application. It triggers the commands to be executed by the receivers. The `AppPuppeteer` equips the `AppAgent` with the capability to interact with the application's UI controls. It provides functionalities to translate action strings into specific actions and execute them. All available actions are registered in the `Puppeteer` with the `ReceiverManager` class.
5757

@@ -61,4 +61,12 @@ You can find the implementation of the `AppPuppeteer` class in the `ufo/automato
6161

6262
<br>
6363

64+
65+
## Receiver Manager
66+
The `ReceiverManager` manages all the receivers and commands in the Automator application. It provides functionalities to register and retrieve receivers and commands. It is a complementary component to the `AppPuppeteer`.
67+
68+
::: automator.puppeteer.ReceiverManager
69+
70+
<br>
71+
6472
For further details, refer to the specific documentation for each component and class in the Automator module.

documents/docs/creating_app_agent/warpping_app_native_api.md

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -12,16 +12,16 @@ The `Receiver` is a class that receives the native API calls from the `AppAgent`
1212

1313
To create a `Receiver` class, follow these steps:
1414

15-
**1. Create a Folder for Your Application:**
15+
#### 1. Create a Folder for Your Application
1616

1717
- Navigate to the `ufo/automator/app_api/` directory.
1818
- Create a folder named after your application.
1919

20-
**2. Create a Python File:**
20+
#### 2. Create a Python File
2121

2222
- Inside the folder you just created, add a Python file named after your application, for example, `{your_application}_client.py`.
2323

24-
**3. Define the Receiver Class:**
24+
#### 3. Define the Receiver Class
2525

2626
- In the Python file, define a class named `{Your_Receiver}`, inheriting from the `ReceiverBasic` class located in `ufo/automator/basic.py`.
2727
- Initialize the `Your_Receiver` class with the object that executes the native API calls. For example, if your API is based on a `com` object, initialize the `com` object in the `__init__` method of the `Your_Receiver` class.
@@ -52,7 +52,7 @@ class WinCOMReceiverBasic(ReceiverBasic):
5252
```
5353
---
5454

55-
**4. Define Methods to Execute Native API Calls:**
55+
#### 4. Define Methods to Execute Native API Calls
5656

5757
- Define the methods in the `Your_Receiver` class to execute the native API calls.
5858

@@ -77,7 +77,7 @@ def table2markdown(self, sheet_name: str) -> str:
7777
---
7878

7979

80-
**5. Create a Factory Class:**
80+
#### 5. Create a Factory Class
8181

8282
- Create your Factory class inheriting from the `APIReceiverFactory` class to manage multiple `Receiver` classes that share the same API type.
8383
- Implement the `create_receiver` and `name` methods in the `ReceiverFactory` class. The `create_receiver` method should return the `Receiver` class.
@@ -134,7 +134,7 @@ The `Receiver` class is now ready to receive the native API calls from the `AppA
134134

135135
Commands are the actions that the `AppAgent` can execute on the application. To create a command for the native API, you need to create a `Command` class that contains the method to execute the native API calls.
136136

137-
**1. Create a Command Class:**
137+
#### 1. Create a Command Class
138138

139139
- Create a `Command` class in the same Python file where the `Receiver` class is located. The `Command` class should inherit from the `CommandBasic` class located in `ufo/automator/basic.py`.
140140

@@ -167,7 +167,7 @@ class WinCOMCommand(CommandBasic):
167167
```
168168
---
169169

170-
**2. Define the Execute Method:**
170+
#### 2. Define the Execute Method
171171

172172
- Define the `execute` method in the `Command` class to call the receiver to execute the native API calls.
173173

@@ -204,11 +204,11 @@ The `Command` class is now registered in the `Receiver` class and available for
204204

205205
To let the `AppAgent` know the usage of the native API calls, you need to provide prompt descriptions.
206206

207-
**1. Create an api.yaml File:**
207+
#### 1. Create an api.yaml File
208208

209209
- Create an `api.yaml` file in the `ufo/prompts/apps/{your_app_name}` directory.
210210

211-
**2. Define Prompt Descriptions:**
211+
#### 2. Define Prompt Descriptions
212212

213213
- Define the prompt descriptions for the native API calls in the `api.yaml` file.
214214

@@ -234,7 +234,7 @@ usage: |-
234234
The `table2markdown` is the name of the native API call. It `MUST` match the `name()` defined in the corresponding `Command` class!
235235

236236

237-
**3. Register the Prompt Address in config_dev.yaml:**
237+
#### 3. Register the Prompt Address in `config_dev.yaml`
238238

239239
- Register the prompt address by adding to the `APP_API_PROMPT_ADDRESS` field of `config_dev.yaml` file with the application program name as the key and the prompt file address as the value.
240240

0 commit comments

Comments
 (0)