XythicK commited on
Commit
0127d89
·
verified ·
1 Parent(s): c83ea30

Create README.md

Browse files
Files changed (1) hide show
  1. README.md +303 -0
README.md ADDED
@@ -0,0 +1,303 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ license: mit
3
+ language:
4
+ - en
5
+ base_model:
6
+ - microsoft/Fara-7B
7
+ pipeline_tag: image-text-to-text
8
+ ---
9
+ # Fara-7B: An Efficient Agentic Model for Computer Use
10
+
11
+ [![Microsoft](https://img.shields.io/badge/Microsoft-Project-0078D4?logo=microsoft)](https://aka.ms/msaif/fara)
12
+ [![Hugging Face Dataset](https://img.shields.io/badge/🤗-Dataset-yellow)](https://huggingface.co/datasets/microsoft/WebTailBench)
13
+ [![Foundry](https://img.shields.io/badge/Azure-Foundry-0089D6)](https://aka.ms/foundry-fara-7b)
14
+ [![Github](https://img.shields.io/badge/Github-181717?logo=github&logoColor=white)](https://github.com/microsoft/fara)
15
+ [![Paper](https://img.shields.io/badge/Paper-2511.19663-red)](https://huggingface.co/papers/2511.19663)
16
+
17
+ [Official Microsoft Blog](https://www.microsoft.com/en-us/research/?p=1155843&preview=1&_ppp=0a22f3e916)<br>
18
+ [Technical Report](https://aka.ms/fara-techreport)<br>
19
+ [Paper](https://huggingface.co/papers/2511.19663)<br>
20
+ [Github](https://github.com/microsoft/fara)<br>
21
+ [Try Fara-7B on Microsoft Foundry](https://ai.azure.com/explore/models/Fara-7B/version/1/registry/azureml-msr?tid=72f988bf-86f1-41af-91ab-2d7cd011db47)<br>
22
+
23
+ ## Model Summary
24
+
25
+ **Developer:** Microsoft Research
26
+
27
+ **Description:**
28
+ Fara-7B is Microsoft's first agentic small language model (SLM) designed specifically for computer use. With only 7 billion parameters, Fara-7B is an ultra-compact Computer Use Agent (CUA) that achieves state-of-the-art performance within its size class and is competitive with larger, more resource-intensive agentic systems.
29
+
30
+ **Model Architecture:**
31
+ Multimodal decoder-only language model that takes an image (screenshot) + text context. It directly predicts thoughts and actions with grounded arguments. Current production baselines leverage Qwen 2.5-VL (7B).
32
+
33
+ **Parameters:** 7 Billion
34
+
35
+ **Inputs:** User goal (text), current screenshot(s), history of previous outputs (thoughts + actions text) from the agent.
36
+
37
+ **Context Length:** 128k
38
+
39
+ **Outputs:** Generated text in response to the input, with a chain-of-thought block followed by a tool call block to indicate the action.
40
+
41
+ **GPUs:** 64 H100s
42
+
43
+ **Training Time:** 2.5 days
44
+
45
+ **Public Data Summary:** N/A
46
+
47
+ **Dates:** Trained between 26th October 2025 to 29th October 2025
48
+
49
+ **Status:** Static model trained on public and private data
50
+
51
+ **Release Date:** November 24th, 2025
52
+
53
+ **License:** MIT
54
+
55
+ **Model Dependencies:** Qwen 2.5 VL
56
+
57
+ **Additional Assets:** N/A
58
+
59
+ **Acceptable Use Policy:** N/A
60
+
61
+ ---
62
+
63
+ ## 1. Model Overview
64
+
65
+ Fara is a 7B Computer Use Agent (CUA) model specialized for taking actions on the web to accomplish high-level user tasks. Beyond understanding webpage layout and basic action mechanics, it plans and executes high-level goals like booking restaurants, applying for jobs, planning trips, and buying shopping lists. Its training relies on a large-scale, fully synthetic dataset of action trajectories generated and verified by a multi-agent pipeline.
66
+
67
+ Fara perceives browser inputs via screenshots, while internal reasoning and state history are recorded textually. Based on recent screenshots and a full history of actions, it predicts the next action with necessary arguments (e.g., coordinates for clicks).
68
+
69
+ ### 1.1 Alignment Approach
70
+
71
+ Fara-7B uses a robust post-training safety approach leveraging open-source and in-house synthetic datasets. It incorporates critical point recognition—situations requiring user permission or sensitive information—to safely halt actions. The model is trained to refuse harmful tasks and undergoes automated red teaming to assess risks, including grounding, jailbreaks, harmful content, and copyright violations.
72
+
73
+ ### 1.2 Safeguards
74
+
75
+ Fara-7B is trained to refuse tasks in categories that violate usage policy:
76
+
77
+ | Type | Description | Examples |
78
+ |------|------------|---------|
79
+ | Illegal Activities | Tasks requiring unlawful actions | Terrorism-related searches, piracy, unauthorized access, weapons creation |
80
+ | Deceptive Tasks | Tasks misleading or impersonating | Fake forms, fraudulent listings, phishing |
81
+ | High-Risk/Regulated Domains | Tasks requiring professional oversight | Medical, legal, financial advice or approvals |
82
+ | Harassment, Exploitation, Hate | Tasks harming or discriminating | Harassment content, stalking, sexualizing minors |
83
+ | Unsafe Technical Use | Misuse of automation | Large-scale scraping, spam, system disruption |
84
+ | Misinformation | Spreading false claims | Publishing unverified claims |
85
+ | Sexual | Erotic or pornographic tasks | Erotic roleplay, porn searches |
86
+
87
+ Critical points where the agent stops include entering personal info, completing purchases, making calls, sending emails, submitting applications, and signing into accounts.
88
+
89
+ ---
90
+
91
+ ## 2. Usage
92
+
93
+ ### Sample Usage
94
+
95
+ You can try Fara-7B locally by setting up the environment and hosting the model. For full instructions, refer to the [GitHub repository](https://github.com/microsoft/fara#installation).
96
+
97
+ ```bash
98
+ # 1. Clone repository
99
+ git clone https://github.com/microsoft/fara.git
100
+ cd fara
101
+
102
+ # 2. Setup environment
103
+ python3 -m venv .venv
104
+ source .venv/bin/activate
105
+ pip install -e .
106
+ playwright install
107
+ ```
108
+
109
+ Then in one process, host the model:
110
+ ```bash
111
+ vllm serve "microsoft/Fara-7B" --port 5000 --dtype auto
112
+ ```
113
+ Then you can iterative query it with:
114
+ ```bash
115
+ fara-cli --task "whats the weather in new york now"
116
+ ```
117
+
118
+ Hint: might need to do `--tensor-parallel-size 2` with vllm command if you run out of memory
119
+
120
+ ### 2.1 Primary Use Cases
121
+
122
+ - Automating web tasks such as shopping, booking travel, restaurant reservations, info-seeking, or account workflows.
123
+ - Performs actions step-by-step using multimodal understanding from browser screenshots.
124
+ - On-device execution provides privacy guarantees and lower latency.
125
+
126
+ ### 2.2 Out-of-Scope Use Cases
127
+
128
+ - Model not evaluated for all downstream purposes; consider limitations of LLMs for accuracy, safety, and fairness.
129
+ - Must adhere to applicable laws and regulations.
130
+ - English-only support.
131
+
132
+ ### 2.3 Distribution Channels
133
+
134
+ - Hugging Face
135
+ - Azure AI Foundry
136
+
137
+ ### 2.4 Input Formats
138
+
139
+ Given the nature of the training data, always use the ChatML template with the following system prompt for inference:
140
+
141
+ ---
142
+
143
+ **System Prompt:**
144
+
145
+ You are a web automation agent that performs actions on websites to fulfill user requests by calling various tools.
146
+
147
+ You should stop execution at **Critical Points**. A Critical Point occurs in tasks like:
148
+
149
+ - Checkout
150
+ - Book
151
+ - Purchase
152
+ - Call
153
+ - Email
154
+ - Order
155
+
156
+ A Critical Point requires the user's permission or personal/sensitive information (name, email, credit card, address, payment information, resume, etc.) to complete a transaction (purchase, reservation, sign-up, etc.), or to communicate as a human would (call, email, apply to a job, etc.).
157
+
158
+ **Guideline:** Solve the task as far as possible **up until a Critical Point**.
159
+
160
+ **Examples:**
161
+
162
+ - If the task is to "call a restaurant to make a reservation," do **not** actually make the call. Instead, navigate to the restaurant's page and find the phone number.
163
+ - If the task is to "order new size 12 running shoes," do **not** place the order. Instead, search for the right shoes that meet the criteria and add them to the cart.
164
+
165
+ Some tasks, like answering questions, may not encounter a Critical Point at all.
166
+
167
+ ---
168
+
169
+ **Function Signatures:**
170
+
171
+ You are provided with function signatures within XML tags:
172
+
173
+ ```json
174
+ {
175
+ "type": "function",
176
+ "function": {
177
+ "name": "computer_use",
178
+ "description": "Use a mouse and keyboard to interact with a computer, and take screenshots.\
179
+ * This is an interface to a desktop GUI. You do not have access to a terminal or applications menu. You must click on desktop icons to start applications.\
180
+ * Some applications may take time to start or process actions, so you may need to wait and take successive screenshots to see the results of your actions. E.g. if you click on Firefox and a window doesn't open, try wait and taking another screenshot.\
181
+ * The screen's resolution is 1428x896.\
182
+ * Whenever you intend to move the cursor to click on an element like an icon, you should consult a screenshot to determine the coordinates of the element before moving the cursor.\
183
+ * If you tried clicking on a program or link but it failed to load, even after waiting, try adjusting your cursor position so that the tip of the cursor visually falls on the element that you want to click.\
184
+ * Make sure to click any buttons, links, icons, etc with the cursor tip in the center of the element. Don't click boxes on their edges unless asked.\
185
+ * When a separate scrollable container prominently overlays the webpage, if you want to scroll within it, you typically need to mouse_move() over it first and then scroll().\
186
+ * If a popup window appears that you want to close, if left_click() on the 'X' or close button doesn't work, try key(keys=['Escape']) to close it.\
187
+ * On some search bars, when you type(), you may need to press_enter=False and instead separately call left_click() on the search button to submit the search query. This is especially true of search bars that have auto-suggest popups for e.g. locations\
188
+ * For calendar widgets, you usually need to left_click() on arrows to move between months and left_click() on dates to select them; type() is not typically used to input dates there.",
189
+ "parameters": {
190
+ "properties": {
191
+ "action": {
192
+ "description": "The action to perform. The available actions are:\
193
+ * key: Performs key down presses on the arguments passed in order, then performs key releases in reverse order. Includes 'Enter', 'Alt', 'Shift', 'Tab', 'Control', 'Backspace', 'Delete', 'Escape', 'ArrowUp', 'ArrowDown', 'ArrowLeft', 'ArrowRight', 'PageDown', 'PageUp', 'Shift', etc.\
194
+ * type: Type a string of text on the keyboard.\
195
+ * mouse_move: Move the cursor to a specified (x, y) pixel coordinate on the screen.\
196
+ * left_click: Click the left mouse button.\
197
+ * scroll: Performs a scroll of the mouse scroll wheel.\
198
+ * visit_url: Visit a specified URL.\
199
+ * web_search: Perform a web search with a specified query.\
200
+ * history_back: Go back to the previous page in the browser history.\
201
+ * pause_and_memorize_fact: Pause and memorize a fact for future reference.\
202
+ * wait: Wait specified seconds for the change to happen.\
203
+ * terminate: Terminate the current task and report its completion status.",
204
+ "enum": ["key", "type", "mouse_move", "left_click", "scroll", "visit_url", "web_search", "history_back", "pause_and_memorize_fact", "wait", "terminate"],
205
+ "type": "string"
206
+ },
207
+ "keys": {"description": "Required only by action=key.", "type": "array"},
208
+ "text": {"description": "Required only by action=type.", "type": "string"},
209
+ "coordinate": {"description": "(x, y) coordinates for mouse actions. Required only by action=left_click, action=mouse_move, and action=type.", "type": "array"},
210
+ "pixels": {"description": "Amount of scrolling. Positive = up, Negative = down. Required only by action=scroll.", "type": "number"},
211
+ "url": {"description": "The URL to visit. Required only by action=visit_url.", "type": "string"},
212
+ "query": {"description": "The query to search for. Required only by action=web_search.", "type": "string"},
213
+ "fact": {"description": "The fact to remember for the future. Required only by action=pause_and_memorize_fact.", "type": "string"},
214
+ "time": {"description": "Seconds to wait. Required only by action=wait.", "type": "number"},
215
+ "status": {"description": "Status of the task. Required only by action=terminate.", "type": "string", "enum": ["success", "failure"]}
216
+ },
217
+ "required": ["action"],
218
+ "type": "object"
219
+ }
220
+ }
221
+ }
222
+
223
+ For each function call, return a JSON object with the function name and arguments within XML tags:
224
+
225
+ ```json
226
+ {
227
+ "name": "<function-name>",
228
+ "arguments": <args-json-object>
229
+ }
230
+
231
+ ```
232
+
233
+ - Function signatures provided for all actions (`key`, `type`, `mouse_move`, `left_click`, `scroll`, `visit_url`, `web_search`, `history_back`, `pause_and_memorize_fact`, `wait`, `terminate`).
234
+
235
+
236
+ ### 2.5 Technical Requirements & Integration
237
+
238
+ - Required packages: `torch >=2.7.1`, `transformers >=4.53.3`, `vllm >=0.10.0`
239
+ - Tested on NVIDIA A6000, A100, H100 GPUs (Ubuntu 24.04.3 LTS)
240
+ - Recommended on vLLM server with bf16 precision
241
+ - Provided implementation via Magentic-UI in Docker sandbox for safe web execution
242
+
243
+ ### 2.6 Responsible AI Considerations
244
+
245
+ - English-only; other languages may have degraded performance
246
+ - Potential stereotype reinforcement or inappropriate content
247
+ - Verify outputs, especially in high-stakes or regulated domains
248
+ - Misuse includes fraud, spam, malware generation
249
+ - Use safety services like Azure AI Content Safety where possible
250
+ - Recommended: human-in-the-loop, sandboxing, access control, output verification
251
+
252
+ ---
253
+
254
+ ## 3. Data Overview
255
+
256
+ ### 3.1 Training, Testing, Validation Datasets
257
+
258
+ - Multi-agent data generation pipeline produces synthetic trajectories from seed URLs and open-source tasks
259
+ - Records screenshots, thoughts, action traces, and verification via verifier agents
260
+ - Includes high-quality public datasets: image and text modalities
261
+ - Specialized data: grounding, UI understanding (VQA, captioning, OCR), safety/refusal datasets
262
+
263
+ ---
264
+
265
+ ## 4. Quality and Performance Evaluation
266
+ ### Table: Online Agent Evaluation Results
267
+
268
+ | Model | Params | WebVoyager | Online-M2W | DeepShop | WebTailBench |
269
+ |------------------------------|--------|------------|------------|----------|---------------|
270
+ | **SoM Agents** | | | | | |
271
+ | SoM Agent (GPT-5) | - | 90.6 | 57.7 | 49.1 | 60.4 |
272
+ | SoM Agent (o3) | - | 79.3 | 55.4 | 49.7 | 52.7 |
273
+ | SoM Agent (GPT-4o) | - | 65.1 | 34.6 | 16.0 | 30.8 |
274
+ | GLM-4.1V-9B-Thinking | 9B | 66.8 | 33.9 | 32.0 | 22.4 |
275
+ | **Computer Use Models** | | | | | |
276
+ | OpenAI computer-use-preview | - | 70.9 | 42.9 | 24.7 | 25.7 |
277
+ | UI-TARS-1.5-7B | 7B | 66.4 | 31.3 | 11.6 | 19.5 |
278
+ | Fara-7B | 7B | 73.5 | 34.1 | 26.2 | 38.4 |
279
+
280
+ The table reports task completion success rates on WebVoyager, Online-Mind2Web, DeepShop, and WebTailBench for both SoM agents and native computer-use agents.
281
+ Scores are averaged over 3 runs.
282
+
283
+ ### 4.2 Safety Evaluation & Red-Teaming
284
+
285
+ - Post-training safety with critical point design
286
+ - Red-teaming on Azure: grounding, jailbreaks, harmful content, copyright
287
+
288
+ ### Guidelines for Safe Use
289
+
290
+ - Human-in-the-loop monitoring recommended
291
+ - Do not share sensitive data
292
+ - Run in sandboxed environments
293
+ - Limit internet access via allow-lists/block-lists
294
+ - Avoid use in commercial, high-stakes, or regulated domains
295
+
296
+ **Security Considerations:**
297
+ - Automates interactions across websites, apps, OS; requires strict access control, sandboxing, and monitoring
298
+
299
+
300
+ **Attribution:** Our model is based on Qwen 2.5 VL. Qwen 2.5 VL has an Apache 2.0 license. Fara-7B is released with an MIT License. Apache 2.0 and MIT are compatible licenses.
301
+
302
+
303
+ ---