Buckets:
| import{s as kn,n as $n,o as Wn}from"../chunks/scheduler.2b22cead.js";import{S as En,i as Rn,e as c,s as n,c as i,h as Gn,a as m,d as l,b as a,f as Bn,g as r,j as y,k as An,l as Sn,m as s,n as M,t as o,o as d,p}from"../chunks/index.1a0e8013.js";import{C as Nn,H as T,E as Zn}from"../chunks/MermaidChart.svelte_svelte_type_style_lang.7f73f2f2.js";import{C as u}from"../chunks/CodeBlock.2e3ed464.js";function Qn(Cs){let J,he,je,fe,U,ge,w,Ie,j,Bs="BrowserGym is a unified framework for web-based agent tasks that provides access to multiple benchmarks under a single Gymnasium-compatible API. This integration brings the complete training-to-evaluation pipeline for web agents into OpenEnv.",ve,b,Ce,h,As="BrowserGym provides a complete pipeline for developing web agents: train on simple tasks, then evaluate on realistic websites.",Be,f,ks="<strong>What are these benchmarks?</strong>",Ae,g,$s="<li><p><strong>MiniWoB++ (Training)</strong>: 100+ synthetic web tasks like “click this button”, “fill out this form”, “select from dropdown”. Each task is a simple webpage with a clear objective. Fast resets, randomized variations, dense rewards. Perfect for learning basic web navigation skills. <strong>No external setup needed</strong> - tasks run in isolated browser sessions.</p></li> <li><p><strong>WebArena (Evaluation)</strong>: 812 tasks on real websites (e-commerce, forums, GitLab, Wikipedia). Tasks like “find the cheapest laptop and add to cart” or “create a merge request for bug #123”. Multistep, requires reasoning, sparse rewards. Tests if your agent can handle actual websites. <strong>Requires running 7 backend services</strong> (shopping site, GitLab instance, etc.).</p></li> <li><p><strong>VisualWebArena</strong>: Similar to WebArena but requires visual understanding - agents need to interpret images, identify UI elements visually, handle multimodal content.</p></li> <li><p><strong>WorkArena</strong>: Enterprise software tasks (CRM, project management, business workflows). Tests automation on corporate-style applications.</p></li>",ke,I,Ws="<strong>The training → evaluation pipeline:</strong>",$e,v,Es="<li>Train on MiniWoB (simple, controlled, fast iterations)</li> <li>Evaluate on WebArena (complex, realistic, measures real-world capability)</li>",We,C,Rs="<strong>Key advantage</strong>: You can start training immediately with MiniWoB. No need to set up infrastructure just to test if your code works.",Ee,B,Re,A,Ge,k,Se,$,Ne,W,Gs=`If you want BrowserGym to participate in a tool-driven harness instead of a | |
| hand-written <code>env.reset()</code> / <code>env.step()</code> loop, use the BrowserGym session | |
| factory:`,Ze,E,Qe,R,Ss=`BrowserGym exposes <code>click</code>, <code>fill</code>, <code>send_keys</code>, <code>scroll</code>, and <code>noop</code> as MCP-style | |
| tools while still translating them back into the underlying <code>BrowserGymAction</code> | |
| strings. See <a href="https://github.com/huggingface/OpenEnv/blob/main/examples/browsergym_harness.py" rel="nofollow">examples/browsergym_harness.py</a> | |
| for a full TRL-oriented example.`,Ve,G,Ye,S,He,N,Ns="MiniWoB tasks are organized by difficulty and type. Here are the main categories:",_e,Z,Zs="<strong>Click Tasks</strong> (Basic interaction)",Xe,Q,Qs="<thead><tr><th>Task Name</th> <th>Description</th> <th>Difficulty</th></tr></thead> <tbody><tr><td><code>click-test</code></td> <td>Click a single button</td> <td>⭐ Easy</td></tr> <tr><td><code>click-button</code></td> <td>Click button with specific text</td> <td>⭐ Easy</td></tr> <tr><td><code>click-button-sequence</code></td> <td>Click buttons in order</td> <td>⭐⭐ Medium</td></tr> <tr><td><code>click-checkboxes</code></td> <td>Select specific checkboxes</td> <td>⭐⭐ Medium</td></tr> <tr><td><code>click-checkboxes-soft</code></td> <td>Select checkboxes (multiple valid)</td> <td>⭐⭐ Medium</td></tr> <tr><td><code>click-checkboxes-large</code></td> <td>Many checkboxes to select from</td> <td>⭐⭐ Medium</td></tr> <tr><td><code>click-checkboxes-transfer</code></td> <td>Transfer learning variation</td> <td>⭐⭐ Medium</td></tr> <tr><td><code>click-dialog</code></td> <td>Click correct button in dialog</td> <td>⭐ Easy</td></tr> <tr><td><code>click-dialog-2</code></td> <td>More complex dialog</td> <td>⭐⭐ Medium</td></tr> <tr><td><code>click-link</code></td> <td>Click on a link</td> <td>⭐ Easy</td></tr> <tr><td><code>click-option</code></td> <td>Select from dropdown</td> <td>⭐⭐ Medium</td></tr> <tr><td><code>click-pie</code></td> <td>Click on pie chart slice</td> <td>⭐⭐ Medium</td></tr> <tr><td><code>click-scroll-list</code></td> <td>Click item in scrollable list</td> <td>⭐⭐⭐ Hard</td></tr> <tr><td><code>click-shades</code></td> <td>Click on specific color shade</td> <td>⭐⭐ Medium</td></tr> <tr><td><code>click-shape</code></td> <td>Click on specific shape</td> <td>⭐⭐ Medium</td></tr> <tr><td><code>click-tab</code></td> <td>Switch between tabs</td> <td>⭐⭐ Medium</td></tr> <tr><td><code>click-tab-2</code></td> <td>More complex tab switching</td> <td>⭐⭐⭐ Hard</td></tr> <tr><td><code>click-widget</code></td> <td>Click on UI widget</td> <td>⭐⭐ Medium</td></tr></tbody>",Fe,V,Vs="<strong>Text Entry Tasks</strong> (Typing and forms)",qe,Y,Ys="<thead><tr><th>Task Name</th> <th>Description</th> <th>Difficulty</th></tr></thead> <tbody><tr><td><code>enter-text</code></td> <td>Type text into input field</td> <td>⭐ Easy</td></tr> <tr><td><code>enter-text-dynamic</code></td> <td>Dynamic text entry</td> <td>⭐⭐ Medium</td></tr> <tr><td><code>enter-text-2</code></td> <td>Multiple text fields</td> <td>⭐⭐ Medium</td></tr> <tr><td><code>enter-password</code></td> <td>Fill password field</td> <td>⭐ Easy</td></tr> <tr><td><code>enter-date</code></td> <td>Enter a date</td> <td>⭐⭐ Medium</td></tr> <tr><td><code>enter-time</code></td> <td>Enter a time</td> <td>⭐⭐ Medium</td></tr> <tr><td><code>login-user</code></td> <td>Complete login form</td> <td>⭐⭐ Medium</td></tr> <tr><td><code>login-user-popup</code></td> <td>Login via popup</td> <td>⭐⭐⭐ Hard</td></tr></tbody>",xe,H,Hs="<strong>Navigation Tasks</strong> (Multi-step interaction)",ze,_,_s="<thead><tr><th>Task Name</th> <th>Description</th> <th>Difficulty</th></tr></thead> <tbody><tr><td><code>navigate-tree</code></td> <td>Navigate through tree structure</td> <td>⭐⭐⭐ Hard</td></tr> <tr><td><code>search-engine</code></td> <td>Use search interface</td> <td>⭐⭐ Medium</td></tr> <tr><td><code>use-autocomplete</code></td> <td>Interact with autocomplete</td> <td>⭐⭐⭐ Hard</td></tr> <tr><td><code>book-flight</code></td> <td>Book a flight (complex form)</td> <td>⭐⭐⭐⭐ Very Hard</td></tr> <tr><td><code>choose-date</code></td> <td>Pick date from calendar</td> <td>⭐⭐⭐ Hard</td></tr> <tr><td><code>choose-date-easy</code></td> <td>Simplified date picker</td> <td>⭐⭐ Medium</td></tr> <tr><td><code>choose-date-medium</code></td> <td>Medium difficulty date picker</td> <td>⭐⭐⭐ Hard</td></tr> <tr><td><code>choose-list</code></td> <td>Select from long list</td> <td>⭐⭐ Medium</td></tr></tbody>",Le,X,Xs="<strong>Visual/Spatial Tasks</strong> (Requires visual understanding)",De,F,Fs="<thead><tr><th>Task Name</th> <th>Description</th> <th>Difficulty</th></tr></thead> <tbody><tr><td><code>count-sides</code></td> <td>Count sides of shape</td> <td>⭐⭐ Medium</td></tr> <tr><td><code>count-shape</code></td> <td>Count specific shapes</td> <td>⭐⭐ Medium</td></tr> <tr><td><code>find-word</code></td> <td>Find word in text</td> <td>⭐⭐ Medium</td></tr> <tr><td><code>focus-text</code></td> <td>Focus on text element</td> <td>⭐ Easy</td></tr> <tr><td><code>focus-text-2</code></td> <td>More complex focus task</td> <td>⭐⭐ Medium</td></tr> <tr><td><code>grid-coordinate</code></td> <td>Click grid coordinate</td> <td>⭐⭐ Medium</td></tr> <tr><td><code>guess-number</code></td> <td>Guess a number game</td> <td>⭐⭐⭐ Hard</td></tr> <tr><td><code>identify-shape</code></td> <td>Identify shape type</td> <td>⭐⭐ Medium</td></tr> <tr><td><code>read-table</code></td> <td>Extract info from table</td> <td>⭐⭐⭐ Hard</td></tr> <tr><td><code>read-table-2</code></td> <td>More complex table reading</td> <td>⭐⭐⭐ Hard</td></tr></tbody>",Oe,q,qs="<strong>Email/Social Tasks</strong> (Realistic scenarios)",Pe,x,xs="<thead><tr><th>Task Name</th> <th>Description</th> <th>Difficulty</th></tr></thead> <tbody><tr><td><code>email-inbox</code></td> <td>Manage email inbox</td> <td>⭐⭐⭐⭐ Very Hard</td></tr> <tr><td><code>email-inbox-forward</code></td> <td>Forward emails</td> <td>⭐⭐⭐⭐ Very Hard</td></tr> <tr><td><code>email-inbox-nl</code></td> <td>Natural language email task</td> <td>⭐⭐⭐⭐ Very Hard</td></tr> <tr><td><code>email-inbox-star-reply</code></td> <td>Star and reply to emails</td> <td>⭐⭐⭐⭐ Very Hard</td></tr> <tr><td><code>social-media</code></td> <td>Social media interaction</td> <td>⭐⭐⭐⭐ Very Hard</td></tr> <tr><td><code>social-media-some</code></td> <td>Partial social media task</td> <td>⭐⭐⭐ Hard</td></tr></tbody>",Ke,z,zs="<strong>Total:</strong> 100+ tasks across all categories",tl,L,Ls="<strong>Usage:</strong>",el,D,ll,O,sl,P,Ds="WebArena tasks are organized by website and difficulty. Tasks are numbered 0-811.",nl,K,Os="<strong>By Website:</strong>",al,tt,Ps="<thead><tr><th>Website</th> <th>Task Count</th> <th>Description</th> <th>Example Tasks</th></tr></thead> <tbody><tr><td>Shopping</td> <td>~200</td> <td>E-commerce site</td> <td>Search products, add to cart, checkout</td></tr> <tr><td>Shopping Admin</td> <td>~150</td> <td>Admin panel</td> <td>Manage products, orders, customers</td></tr> <tr><td>Reddit</td> <td>~150</td> <td>Forum/social</td> <td>Post, comment, search discussions</td></tr> <tr><td>GitLab</td> <td>~200</td> <td>Code repository</td> <td>Create issues, merge requests, review code</td></tr> <tr><td>Wikipedia</td> <td>~100</td> <td>Knowledge base</td> <td>Search, read, extract information</td></tr> <tr><td>Map</td> <td>~12</td> <td>Location service</td> <td>Find places, get directions</td></tr></tbody>",il,et,Ks="<strong>By Difficulty:</strong>",rl,lt,tn="<thead><tr><th>Difficulty</th> <th>Task Count</th> <th>Steps Required</th> <th>Example</th></tr></thead> <tbody><tr><td>Easy</td> <td>~200</td> <td>1-5 steps</td> <td>“Find the price of product X”</td></tr> <tr><td>Medium</td> <td>~400</td> <td>5-15 steps</td> <td>“Add cheapest laptop to cart”</td></tr> <tr><td>Hard</td> <td>~212</td> <td>15+ steps</td> <td>“Create merge request for bug fix”</td></tr></tbody>",Ml,st,en="<strong>Usage:</strong>",ol,nt,dl,at,ln='<strong>Note:</strong> WebArena tasks require the full backend infrastructure. See <a href="https://github.com/web-arena-x/webarena/tree/main/environment_docker" rel="nofollow">WebArena setup guide</a>.',pl,it,cl,rt,sn="Similar to WebArena but requires visual understanding. Tasks involve:",ml,Mt,nn="<li>Image-based reasoning</li> <li>Visual element identification</li> <li>Multimodal interaction (text + images)</li>",yl,ot,Tl,dt,an="Enterprise software automation tasks:",ul,pt,rn="<li>CRM operations</li> <li>Project management</li> <li>Business workflows</li>",Jl,ct,Mn="<strong>Full task lists:</strong>",Ul,mt,on='<li><a href="https://github.com/Farama-Foundation/miniwob-plusplus/tree/master/miniwob/environment" rel="nofollow">MiniWoB++ tasks</a></li> <li><a href="https://github.com/web-arena-x/webarena/blob/main/config_files/" rel="nofollow">WebArena tasks</a></li> <li><a href="https://github.com/ServiceNow/BrowserGym" rel="nofollow">BrowserGym documentation</a></li>',wl,yt,jl,Tt,bl,ut,dn='WebArena requires setting up backend infrastructure. See the <a href="https://github.com/web-arena-x/webarena/tree/main/environment_docker" rel="nofollow">WebArena documentation</a>.',hl,Jt,fl,Ut,gl,wt,Il,jt,vl,bt,pn="<li><strong>Base Image</strong>: Build the OpenEnv base image first:</li>",Cl,ht,Bl,ft,Al,gt,kl,It,$l,vt,Wl,Ct,El,Bt,Rl,At,Gl,kt,Sl,$t,Nl,Wt,cn="Actions in BrowserGym are natural language strings that describe browser operations:",Zl,Et,Ql,Rt,Vl,Gt,mn="Observations contain multiple modalities:",Yl,St,Hl,Nt,_l,Zt,yn="For VisualWebArena or custom training, you may need additional data like timestamps or browser state. The full BrowserGym observation and info dicts are preserved in <code>metadata</code>:",Xl,Qt,Fl,Vt,ql,Yt,Tn="The environment state tracks progress:",xl,Ht,zl,_t,Ll,Xt,un="Environment variables:",Dl,Ft,Ol,qt,Jn="<li><code>BROWSERGYM_BENCHMARK</code>: Benchmark to use (<code>miniwob</code>, <code>webarena</code>, <code>visualwebarena</code>, <code>workarena</code>)</li> <li><code>BROWSERGYM_TASK_NAME</code>: Specific task name (optional, will use first available if not set)</li> <li><code>BROWSERGYM_HEADLESS</code>: Run browser in headless mode (default: <code>true</code>)</li> <li><code>BROWSERGYM_VIEWPORT_WIDTH</code>: Browser viewport width (default: <code>1280</code>)</li> <li><code>BROWSERGYM_VIEWPORT_HEIGHT</code>: Browser viewport height (default: <code>720</code>)</li> <li><code>BROWSERGYM_TIMEOUT</code>: Action timeout in milliseconds (default: <code>10000</code>)</li>",Pl,xt,Kl,zt,Un="<li><code>SHOPPING</code>: Shopping website URL</li> <li><code>SHOPPING_ADMIN</code>: Shopping admin panel URL</li> <li><code>REDDIT</code>: Reddit-like forum URL</li> <li><code>GITLAB</code>: GitLab instance URL</li> <li><code>MAP</code>: Map service URL</li> <li><code>WIKIPEDIA</code>: Wikipedia instance URL</li> <li><code>HOMEPAGE</code>: Homepage URL</li>",ts,Lt,es,Dt,ls,Ot,wn="<li><strong>100+ tasks</strong> ranging from simple (click buttons) to complex (form filling, navigation)</li> <li><strong>Fast</strong>: Instant resets, quick episodes</li> <li><strong>Randomized</strong>: Task variations for generalization</li> <li><strong>No setup</strong>: Works out-of-the-box</li> <li><strong>Dense rewards</strong>: Immediate feedback for learning</li>",ss,Pt,jn="<strong>Use Case</strong>: Train agents on fundamental web navigation skills",ns,Kt,as,te,bn="<li><strong>812 realistic tasks</strong> across 6 websites</li> <li><strong>Complex</strong>: Multi-step reasoning, real web interfaces</li> <li><strong>Requires setup</strong>: Need to run 7 backend services</li> <li><strong>Sparse rewards</strong>: Binary success/failure</li> <li><strong>Evaluation-focused</strong>: Test real-world performance</li>",is,ee,hn="<strong>Use Case</strong>: Evaluate agents on realistic web tasks",rs,le,Ms,se,fn="<li><strong>910 tasks</strong> requiring visual understanding</li> <li><strong>Multimodal</strong>: Both text and visual observations</li> <li><strong>Requires setup</strong>: Similar to WebArena</li> <li><strong>Challenging</strong>: Requires visual reasoning</li>",os,ne,gn="<strong>Use Case</strong>: Test visual web navigation capabilities",ds,ae,ps,ie,In="<li><strong>Enterprise tasks</strong>: CRM, project management, etc.</li> <li><strong>Realistic workflows</strong>: Real enterprise software</li> <li><strong>Requires setup</strong>: Enterprise software instances</li>",cs,re,vn="<strong>Use Case</strong>: Evaluate on business automation tasks",ms,Me,ys,oe,Ts,de,us,pe,Js,ce,Us,me,ws,ye,js,Te,bs,ue,hs,Je,fs,Ue,Cn='<li><a href="https://github.com/ServiceNow/BrowserGym" rel="nofollow">BrowserGym GitHub</a></li> <li><a href="https://arxiv.org/abs/1802.08802" rel="nofollow">MiniWoB++ Paper</a></li> <li><a href="https://arxiv.org/abs/2307.13854" rel="nofollow">WebArena Paper</a></li> <li><a href="https://webarena.dev/" rel="nofollow">WebArena Website</a></li> <li><a href="https://jykoh.com/vwa" rel="nofollow">VisualWebArena Paper</a></li> <li><a href="https://github.com/huggingface/OpenEnv" rel="nofollow">OpenEnv Documentation</a></li>',gs,we,Is,be,vs;return U=new Nn({props:{containerStyle:"float: right; margin-left: 10px; display: inline-flex; position: relative; z-index: 10;"}}),w=new T({props:{title:"BrowserGym Environment",local:"browsergym-environment",headingTag:"h1"}}),b=new T({props:{title:"Why BrowserGym?",local:"why-browsergym",headingTag:"h2"}}),B=new T({props:{title:"Quick Start - Training (MiniWoB)",local:"quick-start---training-miniwob",headingTag:"h2"}}),A=new T({props:{title:"No Setup Required! 🎉",local:"no-setup-required-",headingTag:"h3"}}),k=new u({props:{code:"ZnJvbSUyMGJyb3dzZXJneW1fZW52JTIwaW1wb3J0JTIwQnJvd3Nlckd5bUVudiUyQyUyMEJyb3dzZXJHeW1BY3Rpb24lMEElMEElMjMlMjBDcmVhdGUlMjBlbnZpcm9ubWVudCUyMGZvciUyME1pbmlXb0IlMjB0cmFpbmluZyUyMHRhc2slMEFlbnYlMjAlM0QlMjBCcm93c2VyR3ltRW52LmZyb21fZG9ja2VyX2ltYWdlKCUwQSUyMCUyMCUyMCUyMCUyMmdoY3IuaW8lMkZvcGVuZW52JTJGYnJvd3Nlcmd5bS1lbnYlM0FsYXRlc3QlMjIlMkMlMEElMjAlMjAlMjAlMjBlbnZpcm9ubWVudCUzRCU3QiUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMkJST1dTRVJHWU1fQkVOQ0hNQVJLJTIyJTNBJTIwJTIybWluaXdvYiUyMiUyQyUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMkJST1dTRVJHWU1fVEFTS19OQU1FJTIyJTNBJTIwJTIyY2xpY2stdGVzdCUyMiUyQyUyMCUyMCUyMyUyMG9yJTIwJTIyY2xpY2stYnV0dG9uJTIyJTJDJTIwJTIyY2xpY2stZGlhbG9nJTIyJTJDJTIwZXRjLiUwQSUyMCUyMCUyMCUyMCU3RCUwQSklMEElMEElMjMlMjBUcmFpbiUyMHlvdXIlMjBhZ2VudCElMEFmb3IlMjBlcGlzb2RlJTIwaW4lMjByYW5nZSgxMDAwKSUzQSUwQSUyMCUyMCUyMCUyMHJlc3VsdCUyMCUzRCUyMGVudi5yZXNldCgpJTBBJTIwJTIwJTIwJTIwcHJpbnQoZiUyMkdvYWwlM0ElMjAlN0JyZXN1bHQub2JzZXJ2YXRpb24uZ29hbCU3RCUyMiklMEElMEElMjAlMjAlMjAlMjBkb25lJTIwJTNEJTIwRmFsc2UlMEElMjAlMjAlMjAlMjB3aGlsZSUyMG5vdCUyMGRvbmUlM0ElMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjMlMjBZb3VyJTIwYWdlbnQlMjBkZWNpZGVzJTIwd2hhdCUyMHRvJTIwZG8lMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBhY3Rpb25fc3RyJTIwJTNEJTIwYWdlbnQuZ2V0X2FjdGlvbihyZXN1bHQub2JzZXJ2YXRpb24udGV4dCklMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBhY3Rpb24lMjAlM0QlMjBCcm93c2VyR3ltQWN0aW9uKGFjdGlvbl9zdHIlM0RhY3Rpb25fc3RyKSUwQSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMHJlc3VsdCUyMCUzRCUyMGVudi5zdGVwKGFjdGlvbiklMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBkb25lJTIwJTNEJTIwcmVzdWx0LmRvbmUlMEElMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBwcmludChmJTIyUmV3YXJkJTNBJTIwJTdCcmVzdWx0LnJld2FyZCU3RCUyMiklMEElMEFlbnYuY2xvc2UoKQ==",highlighted:`<span class="hljs-keyword">from</span> browsergym_env <span class="hljs-keyword">import</span> BrowserGymEnv, BrowserGymAction | |
| <span class="hljs-comment"># Create environment for MiniWoB training task</span> | |
| env = BrowserGymEnv.from_docker_image( | |
| <span class="hljs-string">"ghcr.io/openenv/browsergym-env:latest"</span>, | |
| environment={ | |
| <span class="hljs-string">"BROWSERGYM_BENCHMARK"</span>: <span class="hljs-string">"miniwob"</span>, | |
| <span class="hljs-string">"BROWSERGYM_TASK_NAME"</span>: <span class="hljs-string">"click-test"</span>, <span class="hljs-comment"># or "click-button", "click-dialog", etc.</span> | |
| } | |
| ) | |
| <span class="hljs-comment"># Train your agent!</span> | |
| <span class="hljs-keyword">for</span> episode <span class="hljs-keyword">in</span> <span class="hljs-built_in">range</span>(<span class="hljs-number">1000</span>): | |
| result = env.reset() | |
| <span class="hljs-built_in">print</span>(<span class="hljs-string">f"Goal: <span class="hljs-subst">{result.observation.goal}</span>"</span>) | |
| done = <span class="hljs-literal">False</span> | |
| <span class="hljs-keyword">while</span> <span class="hljs-keyword">not</span> done: | |
| <span class="hljs-comment"># Your agent decides what to do</span> | |
| action_str = agent.get_action(result.observation.text) | |
| action = BrowserGymAction(action_str=action_str) | |
| result = env.step(action) | |
| done = result.done | |
| <span class="hljs-built_in">print</span>(<span class="hljs-string">f"Reward: <span class="hljs-subst">{result.reward}</span>"</span>) | |
| env.close()`,lang:"python",wrap:!1}}),$=new T({props:{title:"Harness Sessions for TRL",local:"harness-sessions-for-trl",headingTag:"h2"}}),E=new u({props:{code:"ZnJvbSUyMGJyb3dzZXJneW1fZW52JTIwaW1wb3J0JTIwQnJvd3Nlckd5bUVudiUwQWZyb20lMjBicm93c2VyZ3ltX2Vudi5oYXJuZXNzJTIwaW1wb3J0JTIwQnJvd3Nlckd5bVNlc3Npb25GYWN0b3J5JTBBZnJvbSUyMG9wZW5lbnYuY29yZS5oYXJuZXNzJTIwaW1wb3J0JTIwKCUwQSUyMCUyMCUyMCUyMEhhcm5lc3NSdW5MaW1pdHMlMkMlMEElMjAlMjAlMjAlMjBNQ1BIYXJuZXNzQWRhcHRlciUyQyUwQSUyMCUyMCUyMCUyMGJ1aWxkX2hhcm5lc3Nfcm9sbG91dF9mdW5jJTJDJTBBKSUwQSUwQXNlc3Npb25fZmFjdG9yeSUyMCUzRCUyMEJyb3dzZXJHeW1TZXNzaW9uRmFjdG9yeSglMEElMjAlMjAlMjAlMjBjbGllbnRfZmFjdG9yeSUzRGxhbWJkYSUzQSUyMEJyb3dzZXJHeW1FbnYoYmFzZV91cmwlM0QlMjJodHRwcyUzQSUyRiUyRm9wZW5lbnYtYnJvd3Nlcmd5bS1lbnYuaGYuc3BhY2UlMjIpJTJDJTBBKSUwQSUwQXJvbGxvdXRfZnVuYyUyMCUzRCUyMGJ1aWxkX2hhcm5lc3Nfcm9sbG91dF9mdW5jKCUwQSUyMCUyMCUyMCUyMHNlc3Npb25fZmFjdG9yeSUzRHNlc3Npb25fZmFjdG9yeSUyQyUwQSUyMCUyMCUyMCUyMGhhcm5lc3NfYWRhcHRlciUzRE1DUEhhcm5lc3NBZGFwdGVyKCklMkMlMEElMjAlMjAlMjAlMjBtb2RlbF9zdGVwX2J1aWxkZXIlM0QuLi4lMkMlMjAlMjAlMjMlMjB0cmFpbmVyLW93bmVkJTIwbW9kZWwlMjBzYW1wbGluZyUwQSUyMCUyMCUyMCUyMGxpbWl0cyUzREhhcm5lc3NSdW5MaW1pdHMobWF4X3R1cm5zJTNEMTApJTJDJTBBKQ==",highlighted:`<span class="hljs-keyword">from</span> browsergym_env <span class="hljs-keyword">import</span> BrowserGymEnv | |
| <span class="hljs-keyword">from</span> browsergym_env.harness <span class="hljs-keyword">import</span> BrowserGymSessionFactory | |
| <span class="hljs-keyword">from</span> openenv.core.harness <span class="hljs-keyword">import</span> ( | |
| HarnessRunLimits, | |
| MCPHarnessAdapter, | |
| build_harness_rollout_func, | |
| ) | |
| session_factory = BrowserGymSessionFactory( | |
| client_factory=<span class="hljs-keyword">lambda</span>: BrowserGymEnv(base_url=<span class="hljs-string">"https://openenv-browsergym-env.hf.space"</span>), | |
| ) | |
| rollout_func = build_harness_rollout_func( | |
| session_factory=session_factory, | |
| harness_adapter=MCPHarnessAdapter(), | |
| model_step_builder=..., <span class="hljs-comment"># trainer-owned model sampling</span> | |
| limits=HarnessRunLimits(max_turns=<span class="hljs-number">10</span>), | |
| )`,lang:"python",wrap:!1}}),G=new T({props:{title:"Available Tasks by Benchmark",local:"available-tasks-by-benchmark",headingTag:"h3"}}),S=new T({props:{title:"MiniWoB++ Tasks (Training - 100+ tasks)",local:"miniwob-tasks-training---100-tasks",headingTag:"h4"}}),D=new u({props:{code:"JTIzJTIwRWFzeSUyMHRhc2slMjBmb3IlMjBxdWljayUyMHRlc3RpbmclMEFlbnYlMjAlM0QlMjBCcm93c2VyR3ltRW52KGVudmlyb25tZW50JTNEJTdCJTIyQlJPV1NFUkdZTV9UQVNLX05BTUUlMjIlM0ElMjAlMjJjbGljay10ZXN0JTIyJTdEKSUwQSUwQSUyMyUyME1lZGl1bSUyMGRpZmZpY3VsdHklMjBmb3IlMjB0cmFpbmluZyUwQWVudiUyMCUzRCUyMEJyb3dzZXJHeW1FbnYoZW52aXJvbm1lbnQlM0QlN0IlMjJCUk9XU0VSR1lNX1RBU0tfTkFNRSUyMiUzQSUyMCUyMmNsaWNrLWNoZWNrYm94ZXMlMjIlN0QpJTBBJTBBJTIzJTIwSGFyZCUyMHRhc2slMjBmb3IlMjBldmFsdWF0aW9uJTBBZW52JTIwJTNEJTIwQnJvd3Nlckd5bUVudihlbnZpcm9ubWVudCUzRCU3QiUyMkJST1dTRVJHWU1fVEFTS19OQU1FJTIyJTNBJTIwJTIyZW1haWwtaW5ib3glMjIlN0Qp",highlighted:`<span class="hljs-comment"># Easy task for quick testing</span> | |
| env = BrowserGymEnv(environment={<span class="hljs-string">"BROWSERGYM_TASK_NAME"</span>: <span class="hljs-string">"click-test"</span>}) | |
| <span class="hljs-comment"># Medium difficulty for training</span> | |
| env = BrowserGymEnv(environment={<span class="hljs-string">"BROWSERGYM_TASK_NAME"</span>: <span class="hljs-string">"click-checkboxes"</span>}) | |
| <span class="hljs-comment"># Hard task for evaluation</span> | |
| env = BrowserGymEnv(environment={<span class="hljs-string">"BROWSERGYM_TASK_NAME"</span>: <span class="hljs-string">"email-inbox"</span>})`,lang:"python",wrap:!1}}),O=new T({props:{title:"WebArena Tasks (Evaluation - 812 tasks)",local:"webarena-tasks-evaluation---812-tasks",headingTag:"h4"}}),nt=new u({props:{code:"JTIzJTIwVGFzayUyMDAlMjAodXN1YWxseSUyMGVhc3kpJTBBZW52JTIwJTNEJTIwQnJvd3Nlckd5bUVudihlbnZpcm9ubWVudCUzRCU3QiUwQSUyMCUyMCUyMCUyMCUyMkJST1dTRVJHWU1fQkVOQ0hNQVJLJTIyJTNBJTIwJTIyd2ViYXJlbmElMjIlMkMlMEElMjAlMjAlMjAlMjAlMjJCUk9XU0VSR1lNX1RBU0tfTkFNRSUyMiUzQSUyMCUyMjAlMjIlMkMlMEElMjAlMjAlMjAlMjAlMjJTSE9QUElORyUyMiUzQSUyMCUyMmh0dHAlM0ElMkYlMkZ5b3VyLXNlcnZlciUzQTc3NzAlMjIlMkMlMEElMjAlMjAlMjAlMjAlMjMlMjAuLi4lMjBvdGhlciUyMFVSTHMlMEElN0QpJTBBJTBBJTIzJTIwVGFzayUyMDE1NiUyMChHaXRMYWIlMjBtZXJnZSUyMHJlcXVlc3QpJTBBZW52JTIwJTNEJTIwQnJvd3Nlckd5bUVudihlbnZpcm9ubWVudCUzRCU3QiUwQSUyMCUyMCUyMCUyMCUyMkJST1dTRVJHWU1fQkVOQ0hNQVJLJTIyJTNBJTIwJTIyd2ViYXJlbmElMjIlMkMlMEElMjAlMjAlMjAlMjAlMjJCUk9XU0VSR1lNX1RBU0tfTkFNRSUyMiUzQSUyMCUyMjE1NiUyMiUyQyUwQSUyMCUyMCUyMCUyMCUyMyUyMC4uLiUyMFVSTHMlMEElN0Qp",highlighted:`<span class="hljs-comment"># Task 0 (usually easy)</span> | |
| env = BrowserGymEnv(environment={ | |
| <span class="hljs-string">"BROWSERGYM_BENCHMARK"</span>: <span class="hljs-string">"webarena"</span>, | |
| <span class="hljs-string">"BROWSERGYM_TASK_NAME"</span>: <span class="hljs-string">"0"</span>, | |
| <span class="hljs-string">"SHOPPING"</span>: <span class="hljs-string">"http://your-server:7770"</span>, | |
| <span class="hljs-comment"># ... other URLs</span> | |
| }) | |
| <span class="hljs-comment"># Task 156 (GitLab merge request)</span> | |
| env = BrowserGymEnv(environment={ | |
| <span class="hljs-string">"BROWSERGYM_BENCHMARK"</span>: <span class="hljs-string">"webarena"</span>, | |
| <span class="hljs-string">"BROWSERGYM_TASK_NAME"</span>: <span class="hljs-string">"156"</span>, | |
| <span class="hljs-comment"># ... URLs</span> | |
| })`,lang:"python",wrap:!1}}),it=new T({props:{title:"VisualWebArena Tasks (910 tasks)",local:"visualwebarena-tasks-910-tasks",headingTag:"h4"}}),ot=new T({props:{title:"WorkArena Tasks",local:"workarena-tasks",headingTag:"h4"}}),yt=new T({props:{title:"Evaluation (WebArena)",local:"evaluation-webarena",headingTag:"h2"}}),Tt=new T({props:{title:"Prerequisites",local:"prerequisites",headingTag:"h3"}}),Jt=new T({props:{title:"Usage",local:"usage",headingTag:"h3"}}),Ut=new u({props:{code:"ZnJvbSUyMGVudnMuYnJvd3Nlcmd5bV9lbnYlMjBpbXBvcnQlMjBCcm93c2VyR3ltRW52JTJDJTIwQnJvd3Nlckd5bUFjdGlvbiUwQSUwQSUyMyUyMENyZWF0ZSUyMGVudmlyb25tZW50JTIwZm9yJTIwV2ViQXJlbmElMjBldmFsdWF0aW9uJTBBZW52JTIwJTNEJTIwQnJvd3Nlckd5bUVudi5mcm9tX2RvY2tlcl9pbWFnZSglMEElMjAlMjAlMjAlMjAlMjJnaGNyLmlvJTJGb3BlbmVudiUyRmJyb3dzZXJneW0tZW52JTNBbGF0ZXN0JTIyJTJDJTBBJTIwJTIwJTIwJTIwZW52aXJvbm1lbnQlM0QlN0IlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjJCUk9XU0VSR1lNX0JFTkNITUFSSyUyMiUzQSUyMCUyMndlYmFyZW5hJTIyJTJDJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIyQlJPV1NFUkdZTV9UQVNLX05BTUUlMjIlM0ElMjAlMjIwJTIyJTJDJTIwJTIwJTIzJTIwVGFzayUyMElEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIzJTIwV2ViQXJlbmElMjBiYWNrZW5kJTIwVVJMcyUyMChyZXF1aXJlZCklMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjJTSE9QUElORyUyMiUzQSUyMCUyMmh0dHAlM0ElMkYlMkZ5b3VyLXNlcnZlciUzQTc3NzAlMjIlMkMlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjJTSE9QUElOR19BRE1JTiUyMiUzQSUyMCUyMmh0dHAlM0ElMkYlMkZ5b3VyLXNlcnZlciUzQTc3ODAlMkZhZG1pbiUyMiUyQyUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMlJFRERJVCUyMiUzQSUyMCUyMmh0dHAlM0ElMkYlMkZ5b3VyLXNlcnZlciUzQTk5OTklMjIlMkMlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjJHSVRMQUIlMjIlM0ElMjAlMjJodHRwJTNBJTJGJTJGeW91ci1zZXJ2ZXIlM0E4MDIzJTIyJTJDJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIyTUFQJTIyJTNBJTIwJTIyaHR0cCUzQSUyRiUyRnlvdXItc2VydmVyJTNBMzAwMCUyMiUyQyUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMldJS0lQRURJQSUyMiUzQSUyMCUyMmh0dHAlM0ElMkYlMkZ5b3VyLXNlcnZlciUzQTg4ODglMkZ3aWtpcGVkaWFfZW5fYWxsX21heGlfMjAyMi0wNSUyRkElMkZVc2VyJTNBVGhlX290aGVyX0tpd2l4X2d1eSUyRkxhbmRpbmclMjIlMkMlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjJIT01FUEFHRSUyMiUzQSUyMCUyMmh0dHAlM0ElMkYlMkZ5b3VyLXNlcnZlciUzQTQzOTklMjIlMkMlMEElMjAlMjAlMjAlMjAlN0QlMEEpJTBBJTBBJTIzJTIwRXZhbHVhdGUlMjB5b3VyJTIwdHJhaW5lZCUyMGFnZW50JTBBcmVzdWx0JTIwJTNEJTIwZW52LnJlc2V0KCklMEF3aGlsZSUyMG5vdCUyMHJlc3VsdC5kb25lJTNBJTBBJTIwJTIwJTIwJTIwYWN0aW9uX3N0ciUyMCUzRCUyMGFnZW50LmdldF9hY3Rpb24ocmVzdWx0Lm9ic2VydmF0aW9uKSUwQSUyMCUyMCUyMCUyMGFjdGlvbiUyMCUzRCUyMEJyb3dzZXJHeW1BY3Rpb24oYWN0aW9uX3N0ciUzRGFjdGlvbl9zdHIpJTBBJTIwJTIwJTIwJTIwcmVzdWx0JTIwJTNEJTIwZW52LnN0ZXAoYWN0aW9uKSUwQSUwQXByaW50KGYlMjJTdWNjZXNzJTNBJTIwJTdCcmVzdWx0LnJld2FyZCU3RCUyMiklMEFlbnYuY2xvc2UoKQ==",highlighted:`<span class="hljs-keyword">from</span> envs.browsergym_env <span class="hljs-keyword">import</span> BrowserGymEnv, BrowserGymAction | |
| <span class="hljs-comment"># Create environment for WebArena evaluation</span> | |
| env = BrowserGymEnv.from_docker_image( | |
| <span class="hljs-string">"ghcr.io/openenv/browsergym-env:latest"</span>, | |
| environment={ | |
| <span class="hljs-string">"BROWSERGYM_BENCHMARK"</span>: <span class="hljs-string">"webarena"</span>, | |
| <span class="hljs-string">"BROWSERGYM_TASK_NAME"</span>: <span class="hljs-string">"0"</span>, <span class="hljs-comment"># Task ID</span> | |
| <span class="hljs-comment"># WebArena backend URLs (required)</span> | |
| <span class="hljs-string">"SHOPPING"</span>: <span class="hljs-string">"http://your-server:7770"</span>, | |
| <span class="hljs-string">"SHOPPING_ADMIN"</span>: <span class="hljs-string">"http://your-server:7780/admin"</span>, | |
| <span class="hljs-string">"REDDIT"</span>: <span class="hljs-string">"http://your-server:9999"</span>, | |
| <span class="hljs-string">"GITLAB"</span>: <span class="hljs-string">"http://your-server:8023"</span>, | |
| <span class="hljs-string">"MAP"</span>: <span class="hljs-string">"http://your-server:3000"</span>, | |
| <span class="hljs-string">"WIKIPEDIA"</span>: <span class="hljs-string">"http://your-server:8888/wikipedia_en_all_maxi_2022-05/A/User:The_other_Kiwix_guy/Landing"</span>, | |
| <span class="hljs-string">"HOMEPAGE"</span>: <span class="hljs-string">"http://your-server:4399"</span>, | |
| } | |
| ) | |
| <span class="hljs-comment"># Evaluate your trained agent</span> | |
| result = env.reset() | |
| <span class="hljs-keyword">while</span> <span class="hljs-keyword">not</span> result.done: | |
| action_str = agent.get_action(result.observation) | |
| action = BrowserGymAction(action_str=action_str) | |
| result = env.step(action) | |
| <span class="hljs-built_in">print</span>(<span class="hljs-string">f"Success: <span class="hljs-subst">{result.reward}</span>"</span>) | |
| env.close()`,lang:"python",wrap:!1}}),wt=new T({props:{title:"Building the Docker Image",local:"building-the-docker-image",headingTag:"h2"}}),jt=new T({props:{title:"Prerequisites",local:"prerequisites",headingTag:"h3"}}),ht=new u({props:{code:"JTIzJTIwRnJvbSUyMHRoZSUyME9wZW5FbnYlMjByZXBvc2l0b3J5JTIwcm9vdCUwQWRvY2tlciUyMGJ1aWxkJTIwLXQlMjBvcGVuZW52LWJhc2UlM0FsYXRlc3QlMjAtZiUyMHNyYyUyRm9wZW5lbnYlMkZjb3JlJTJGY29udGFpbmVycyUyRmltYWdlcyUyRkRvY2tlcmZpbGUlMjAu",highlighted:`<span class="hljs-comment"># From the OpenEnv repository root</span> | |
| docker build -t openenv-base:latest -f src/openenv/core/containers/images/Dockerfile .`,lang:"bash",wrap:!1}}),ft=new T({props:{title:"Build the BrowserGym Environment",local:"build-the-browsergym-environment",headingTag:"h3"}}),gt=new u({props:{code:"JTIzJTIwRnJvbSUyMHRoZSUyMGJyb3dzZXJneW1fZW52JTIwZGlyZWN0b3J5JTBBY2QlMjBlbnZzJTJGYnJvd3Nlcmd5bV9lbnYlMEFkb2NrZXIlMjBidWlsZCUyMC10JTIwYnJvd3Nlcmd5bS1lbnYlM0FsYXRlc3QlMjAtZiUyMHNlcnZlciUyRkRvY2tlcmZpbGUlMjAu",highlighted:`<span class="hljs-comment"># From the browsergym_env directory</span> | |
| <span class="hljs-built_in">cd</span> envs/browsergym_env | |
| docker build -t browsergym-env:latest -f server/Dockerfile .`,lang:"bash",wrap:!1}}),It=new T({props:{title:"Run the Server",local:"run-the-server",headingTag:"h3"}}),vt=new T({props:{title:"For MiniWoB (Training):",local:"for-miniwob-training",headingTag:"h4"}}),Ct=new u({props:{code:"ZG9ja2VyJTIwcnVuJTIwLXAlMjA4MDAwJTNBODAwMCUyMCU1QyUwQSUyMCUyMC1lJTIwQlJPV1NFUkdZTV9CRU5DSE1BUkslM0QlMjJtaW5pd29iJTIyJTIwJTVDJTBBJTIwJTIwLWUlMjBCUk9XU0VSR1lNX1RBU0tfTkFNRSUzRCUyMmNsaWNrLXRlc3QlMjIlMjAlNUMlMEElMjAlMjBicm93c2VyZ3ltLWVudiUzQWxhdGVzdA==",highlighted:`docker run -p 8000:8000 \\ | |
| -e BROWSERGYM_BENCHMARK=<span class="hljs-string">"miniwob"</span> \\ | |
| -e BROWSERGYM_TASK_NAME=<span class="hljs-string">"click-test"</span> \\ | |
| browsergym-env:latest`,lang:"bash",wrap:!1}}),Bt=new T({props:{title:"For WebArena (Evaluation):",local:"for-webarena-evaluation",headingTag:"h4"}}),At=new u({props:{code:"ZG9ja2VyJTIwcnVuJTIwLXAlMjA4MDAwJTNBODAwMCUyMCU1QyUwQSUyMCUyMC1lJTIwQlJPV1NFUkdZTV9CRU5DSE1BUkslM0QlMjJ3ZWJhcmVuYSUyMiUyMCU1QyUwQSUyMCUyMC1lJTIwQlJPV1NFUkdZTV9UQVNLX05BTUUlM0QlMjIwJTIyJTIwJTVDJTBBJTIwJTIwLWUlMjBTSE9QUElORyUzRCUyMmh0dHAlM0ElMkYlMkZ5b3VyLXNlcnZlciUzQTc3NzAlMjIlMjAlNUMlMEElMjAlMjAtZSUyMFNIT1BQSU5HX0FETUlOJTNEJTIyaHR0cCUzQSUyRiUyRnlvdXItc2VydmVyJTNBNzc4MCUyRmFkbWluJTIyJTIwJTVDJTBBJTIwJTIwLWUlMjBSRURESVQlM0QlMjJodHRwJTNBJTJGJTJGeW91ci1zZXJ2ZXIlM0E5OTk5JTIyJTIwJTVDJTBBJTIwJTIwLWUlMjBHSVRMQUIlM0QlMjJodHRwJTNBJTJGJTJGeW91ci1zZXJ2ZXIlM0E4MDIzJTIyJTIwJTVDJTBBJTIwJTIwLWUlMjBNQVAlM0QlMjJodHRwJTNBJTJGJTJGeW91ci1zZXJ2ZXIlM0EzMDAwJTIyJTIwJTVDJTBBJTIwJTIwLWUlMjBXSUtJUEVESUElM0QlMjJodHRwJTNBJTJGJTJGeW91ci1zZXJ2ZXIlM0E4ODg4JTJGd2lraXBlZGlhX2VuX2FsbF9tYXhpXzIwMjItMDUlMkZBJTJGVXNlciUzQVRoZV9vdGhlcl9LaXdpeF9ndXklMkZMYW5kaW5nJTIyJTIwJTVDJTBBJTIwJTIwLWUlMjBIT01FUEFHRSUzRCUyMmh0dHAlM0ElMkYlMkZ5b3VyLXNlcnZlciUzQTQzOTklMjIlMjAlNUMlMEElMjAlMjBicm93c2VyZ3ltLWVudiUzQWxhdGVzdA==",highlighted:`docker run -p 8000:8000 \\ | |
| -e BROWSERGYM_BENCHMARK=<span class="hljs-string">"webarena"</span> \\ | |
| -e BROWSERGYM_TASK_NAME=<span class="hljs-string">"0"</span> \\ | |
| -e SHOPPING=<span class="hljs-string">"http://your-server:7770"</span> \\ | |
| -e SHOPPING_ADMIN=<span class="hljs-string">"http://your-server:7780/admin"</span> \\ | |
| -e REDDIT=<span class="hljs-string">"http://your-server:9999"</span> \\ | |
| -e GITLAB=<span class="hljs-string">"http://your-server:8023"</span> \\ | |
| -e MAP=<span class="hljs-string">"http://your-server:3000"</span> \\ | |
| -e WIKIPEDIA=<span class="hljs-string">"http://your-server:8888/wikipedia_en_all_maxi_2022-05/A/User:The_other_Kiwix_guy/Landing"</span> \\ | |
| -e HOMEPAGE=<span class="hljs-string">"http://your-server:4399"</span> \\ | |
| browsergym-env:latest`,lang:"bash",wrap:!1}}),kt=new T({props:{title:"Environment Details",local:"environment-details",headingTag:"h2"}}),$t=new T({props:{title:"Action",local:"action",headingTag:"h3"}}),Et=new u({props:{code:"ZnJvbSUyMGVudnMuYnJvd3Nlcmd5bV9lbnYlMjBpbXBvcnQlMjBCcm93c2VyR3ltQWN0aW9uJTBBJTBBJTIzJTIwQ2xpY2slMjBhY3Rpb25zJTBBYWN0aW9uJTIwJTNEJTIwQnJvd3Nlckd5bUFjdGlvbihhY3Rpb25fc3RyJTNEJTIyY2xpY2soJ1N1Ym1pdCUyMGJ1dHRvbicpJTIyKSUwQWFjdGlvbiUyMCUzRCUyMEJyb3dzZXJHeW1BY3Rpb24oYWN0aW9uX3N0ciUzRCUyMmNsaWNrKCdlbGVtZW50X2lkXzEyMycpJTIyKSUwQSUwQSUyMyUyMFR5cGUlMjBhY3Rpb25zJTBBYWN0aW9uJTIwJTNEJTIwQnJvd3Nlckd5bUFjdGlvbihhY3Rpb25fc3RyJTNEJTIyZmlsbCgndXNlcm5hbWUnJTJDJTIwJ2pvaG4lNDBleGFtcGxlLmNvbScpJTIyKSUwQWFjdGlvbiUyMCUzRCUyMEJyb3dzZXJHeW1BY3Rpb24oYWN0aW9uX3N0ciUzRCUyMmZpbGwoJ3Bhc3N3b3JkJyUyQyUyMCdzZWNyZXQxMjMnKSUyMiklMEElMEElMjMlMjBOYXZpZ2F0ZSUyMGFjdGlvbnMlMEFhY3Rpb24lMjAlM0QlMjBCcm93c2VyR3ltQWN0aW9uKGFjdGlvbl9zdHIlM0QlMjJnb3RvKCdodHRwcyUzQSUyRiUyRmV4YW1wbGUuY29tJyklMjIpJTBBJTBBJTIzJTIwS2V5Ym9hcmQlMjBhY3Rpb25zJTBBYWN0aW9uJTIwJTNEJTIwQnJvd3Nlckd5bUFjdGlvbihhY3Rpb25fc3RyJTNEJTIycHJlc3MoJ0VudGVyJyklMjIpJTBBYWN0aW9uJTIwJTNEJTIwQnJvd3Nlckd5bUFjdGlvbihhY3Rpb25fc3RyJTNEJTIycHJlc3MoJ1RhYicpJTIyKSUwQSUwQSUyMyUyMFNjcm9sbCUyMGFjdGlvbnMlMEFhY3Rpb24lMjAlM0QlMjBCcm93c2VyR3ltQWN0aW9uKGFjdGlvbl9zdHIlM0QlMjJzY3JvbGwoJ2Rvd24nKSUyMik=",highlighted:`<span class="hljs-keyword">from</span> envs.browsergym_env <span class="hljs-keyword">import</span> BrowserGymAction | |
| <span class="hljs-comment"># Click actions</span> | |
| action = BrowserGymAction(action_str=<span class="hljs-string">"click('Submit button')"</span>) | |
| action = BrowserGymAction(action_str=<span class="hljs-string">"click('element_id_123')"</span>) | |
| <span class="hljs-comment"># Type actions</span> | |
| action = BrowserGymAction(action_str=<span class="hljs-string">"fill('username', 'john@example.com')"</span>) | |
| action = BrowserGymAction(action_str=<span class="hljs-string">"fill('password', 'secret123')"</span>) | |
| <span class="hljs-comment"># Navigate actions</span> | |
| action = BrowserGymAction(action_str=<span class="hljs-string">"goto('https://example.com')"</span>) | |
| <span class="hljs-comment"># Keyboard actions</span> | |
| action = BrowserGymAction(action_str=<span class="hljs-string">"press('Enter')"</span>) | |
| action = BrowserGymAction(action_str=<span class="hljs-string">"press('Tab')"</span>) | |
| <span class="hljs-comment"># Scroll actions</span> | |
| action = BrowserGymAction(action_str=<span class="hljs-string">"scroll('down')"</span>)`,lang:"python",wrap:!1}}),Rt=new T({props:{title:"Observation",local:"observation",headingTag:"h3"}}),St=new u({props:{code:"cmVzdWx0JTIwJTNEJTIwZW52LnN0ZXAoYWN0aW9uKSUwQW9icyUyMCUzRCUyMHJlc3VsdC5vYnNlcnZhdGlvbiUwQSUwQSUyMyUyMFRleHQlMjBvYnNlcnZhdGlvbnMlMEFwcmludChvYnMudGV4dCklMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjMlMjBQcmltYXJ5JTIwdGV4dCUyMHJlcHJlc2VudGF0aW9uJTIwKEFYVHJlZSUyMG9yJTIwRE9NKSUwQXByaW50KG9icy5heHRyZWVfdHh0KSUyMCUyMCUyMCUyMCUyMyUyMEFjY2Vzc2liaWxpdHklMjB0cmVlJTBBcHJpbnQob2JzLnBydW5lZF9odG1sKSUyMCUyMCUyMCUyMyUyMFBydW5lZCUyMEhUTUwlMjAoaW50ZXJhY3RpdmUlMjBlbGVtZW50cyUyMG9ubHkpJTBBJTBBJTIzJTIwUGFnZSUyMG1ldGFkYXRhJTBBcHJpbnQob2JzLnVybCklMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjMlMjBDdXJyZW50JTIwVVJMJTBBcHJpbnQob2JzLmdvYWwpJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIzJTIwVGFzayUyMGdvYWwlMkZpbnN0cnVjdGlvbiUwQSUwQSUyMyUyMFZpc3VhbCUyMChpZiUyMGVuYWJsZWQpJTBBaWYlMjBvYnMuc2NyZWVuc2hvdCUyMGlzJTIwbm90JTIwTm9uZSUzQSUwQSUyMCUyMCUyMCUyMHByaW50KG9icy5zY3JlZW5zaG90LnNoYXBlKSUyMCUyMCUyMyUyMCU1QmhlaWdodCUyQyUyMHdpZHRoJTJDJTIwY2hhbm5lbHMlNUQlMEElMEElMjMlMjBFcnJvciUyMGhhbmRsaW5nJTBBaWYlMjBvYnMubGFzdF9hY3Rpb25fZXJyb3IlM0ElMEElMjAlMjAlMjAlMjBwcmludChmJTIyQWN0aW9uJTIwZmFpbGVkJTNBJTIwJTdCb2JzLmVycm9yJTdEJTIyKSUwQSUwQSUyMyUyMEVwaXNvZGUlMjBzdGF0dXMlMEFwcmludChvYnMuZG9uZSklMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjMlMjBUcnVlJTIwaWYlMjBlcGlzb2RlJTIwZW5kZWQlMEFwcmludChvYnMucmV3YXJkKSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMyUyMFJld2FyZCUyMGZvciUyMHRoZSUyMHN0ZXAlMEElMEElMjMlMjBBY2Nlc3MlMjBmdWxsJTIwQnJvd3Nlckd5bSUyMGRhdGElMjAoaW5jbHVkZXMlMjB0aW1lc3RhbXBzJTJDJTIwZXRjLiklMEFwcmludChvYnMubWV0YWRhdGElNUIlMjJicm93c2VyZ3ltX29icyUyMiU1RCklMjAlMjAlMjMlMjBGdWxsJTIwb2JzZXJ2YXRpb24lMjBkaWN0JTIwZnJvbSUyMEJyb3dzZXJHeW0lMEFwcmludChvYnMubWV0YWRhdGElNUIlMjJicm93c2VyZ3ltX2luZm8lMjIlNUQpJTIwJTIzJTIwRnVsbCUyMGluZm8lMjBkaWN0JTIwKHRpbWVzdGFtcHMlMkMlMjBwYWdlJTIwc3RhdGUlMkMlMjBldGMuKQ==",highlighted:`result = env.step(action) | |
| obs = result.observation | |
| <span class="hljs-comment"># Text observations</span> | |
| <span class="hljs-built_in">print</span>(obs.text) <span class="hljs-comment"># Primary text representation (AXTree or DOM)</span> | |
| <span class="hljs-built_in">print</span>(obs.axtree_txt) <span class="hljs-comment"># Accessibility tree</span> | |
| <span class="hljs-built_in">print</span>(obs.pruned_html) <span class="hljs-comment"># Pruned HTML (interactive elements only)</span> | |
| <span class="hljs-comment"># Page metadata</span> | |
| <span class="hljs-built_in">print</span>(obs.url) <span class="hljs-comment"># Current URL</span> | |
| <span class="hljs-built_in">print</span>(obs.goal) <span class="hljs-comment"># Task goal/instruction</span> | |
| <span class="hljs-comment"># Visual (if enabled)</span> | |
| <span class="hljs-keyword">if</span> obs.screenshot <span class="hljs-keyword">is</span> <span class="hljs-keyword">not</span> <span class="hljs-literal">None</span>: | |
| <span class="hljs-built_in">print</span>(obs.screenshot.shape) <span class="hljs-comment"># [height, width, channels]</span> | |
| <span class="hljs-comment"># Error handling</span> | |
| <span class="hljs-keyword">if</span> obs.last_action_error: | |
| <span class="hljs-built_in">print</span>(<span class="hljs-string">f"Action failed: <span class="hljs-subst">{obs.error}</span>"</span>) | |
| <span class="hljs-comment"># Episode status</span> | |
| <span class="hljs-built_in">print</span>(obs.done) <span class="hljs-comment"># True if episode ended</span> | |
| <span class="hljs-built_in">print</span>(obs.reward) <span class="hljs-comment"># Reward for the step</span> | |
| <span class="hljs-comment"># Access full BrowserGym data (includes timestamps, etc.)</span> | |
| <span class="hljs-built_in">print</span>(obs.metadata[<span class="hljs-string">"browsergym_obs"</span>]) <span class="hljs-comment"># Full observation dict from BrowserGym</span> | |
| <span class="hljs-built_in">print</span>(obs.metadata[<span class="hljs-string">"browsergym_info"</span>]) <span class="hljs-comment"># Full info dict (timestamps, page state, etc.)</span>`,lang:"python",wrap:!1}}),Nt=new T({props:{title:"Advanced: Accessing Raw BrowserGym Data",local:"advanced-accessing-raw-browsergym-data",headingTag:"h4"}}),Qt=new u({props:{code:"cmVzdWx0JTIwJTNEJTIwZW52LnN0ZXAoYWN0aW9uKSUwQSUwQSUyMyUyMEFjY2VzcyUyMHRpbWVzdGFtcHMlMjAoaWYlMjBhdmFpbGFibGUpJTBBaW5mbyUyMCUzRCUyMHJlc3VsdC5vYnNlcnZhdGlvbi5tZXRhZGF0YSU1QiUyMmJyb3dzZXJneW1faW5mbyUyMiU1RCUwQWlmJTIwJTIydGltZXN0YW1wJTIyJTIwaW4lMjBpbmZvJTNBJTBBJTIwJTIwJTIwJTIwcHJpbnQoZiUyMkFjdGlvbiUyMHRpbWVzdGFtcCUzQSUyMCU3QmluZm8lNUIndGltZXN0YW1wJyU1RCU3RCUyMiklMEElMEElMjMlMjBBY2Nlc3MlMjBhZGRpdGlvbmFsJTIwb2JzZXJ2YXRpb24lMjBmaWVsZHMlMEFvYnNfZGljdCUyMCUzRCUyMHJlc3VsdC5vYnNlcnZhdGlvbi5tZXRhZGF0YSU1QiUyMmJyb3dzZXJneW1fb2JzJTIyJTVEJTBBaWYlMjAlMjJkb21fb2JqZWN0JTIyJTIwaW4lMjBvYnNfZGljdCUzQSUwQSUyMCUyMCUyMCUyMGRvbSUyMCUzRCUyMG9ic19kaWN0JTVCJTIyZG9tX29iamVjdCUyMiU1RCUwQSUyMCUyMCUyMCUyMCUyMyUyMFdvcmslMjB3aXRoJTIwcmF3JTIwRE9NJTIwb2JqZWN0JTBBJTBBJTIzJTIwQWNjZXNzJTIwcGFnZSUyMHBlcmZvcm1hbmNlJTIwZGF0YSUwQWlmJTIwJTIycGVyZm9ybWFuY2UlMjIlMjBpbiUyMGluZm8lM0ElMEElMjAlMjAlMjAlMjBwcmludChmJTIyUGFnZSUyMGxvYWQlMjB0aW1lJTNBJTIwJTdCaW5mbyU1QidwZXJmb3JtYW5jZSclNUQlN0QlMjIp",highlighted:`result = env.step(action) | |
| <span class="hljs-comment"># Access timestamps (if available)</span> | |
| info = result.observation.metadata[<span class="hljs-string">"browsergym_info"</span>] | |
| <span class="hljs-keyword">if</span> <span class="hljs-string">"timestamp"</span> <span class="hljs-keyword">in</span> info: | |
| <span class="hljs-built_in">print</span>(<span class="hljs-string">f"Action timestamp: <span class="hljs-subst">{info[<span class="hljs-string">'timestamp'</span>]}</span>"</span>) | |
| <span class="hljs-comment"># Access additional observation fields</span> | |
| obs_dict = result.observation.metadata[<span class="hljs-string">"browsergym_obs"</span>] | |
| <span class="hljs-keyword">if</span> <span class="hljs-string">"dom_object"</span> <span class="hljs-keyword">in</span> obs_dict: | |
| dom = obs_dict[<span class="hljs-string">"dom_object"</span>] | |
| <span class="hljs-comment"># Work with raw DOM object</span> | |
| <span class="hljs-comment"># Access page performance data</span> | |
| <span class="hljs-keyword">if</span> <span class="hljs-string">"performance"</span> <span class="hljs-keyword">in</span> info: | |
| <span class="hljs-built_in">print</span>(<span class="hljs-string">f"Page load time: <span class="hljs-subst">{info[<span class="hljs-string">'performance'</span>]}</span>"</span>)`,lang:"python",wrap:!1}}),Vt=new T({props:{title:"State",local:"state",headingTag:"h3"}}),Ht=new u({props:{code:"c3RhdGUlMjAlM0QlMjBlbnYuc3RhdGUoKSUwQSUwQXByaW50KGYlMjJCZW5jaG1hcmslM0ElMjAlN0JzdGF0ZS5iZW5jaG1hcmslN0QlMjIpJTIwJTIwJTIwJTIwJTIwJTIzJTIwJ21pbml3b2InJTJDJTIwJ3dlYmFyZW5hJyUyQyUyMGV0Yy4lMEFwcmludChmJTIyVGFzayUzQSUyMCU3QnN0YXRlLnRhc2tfbmFtZSU3RCUyMiklMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjMlMjBUYXNrJTIwbmFtZSUyRklEJTBBcHJpbnQoZiUyMkVwaXNvZGUlM0ElMjAlN0JzdGF0ZS5lcGlzb2RlX2lkJTdEJTIyKSUyMCUyMCUyMCUyMCUyMCUyMCUyMyUyMFVuaXF1ZSUyMGVwaXNvZGUlMjBJRCUwQXByaW50KGYlMjJTdGVwcyUzQSUyMCU3QnN0YXRlLnN0ZXBfY291bnQlN0QlMjIpJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIzJTIwTnVtYmVyJTIwb2YlMjBzdGVwcyUyMHRha2VuJTBBcHJpbnQoZiUyMlRvdGFsJTIwUmV3YXJkJTNBJTIwJTdCc3RhdGUuY3VtX3Jld2FyZCU3RCUyMiklMjAlMjMlMjBDdW11bGF0aXZlJTIwcmV3YXJkJTBBcHJpbnQoZiUyMkdvYWwlM0ElMjAlN0JzdGF0ZS5nb2FsJTdEJTIyKSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMyUyMFRhc2slMjBpbnN0cnVjdGlvbiUwQXByaW50KGYlMjJVUkwlM0ElMjAlN0JzdGF0ZS5jdXJyZW50X3VybCU3RCUyMiklMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjMlMjBDdXJyZW50JTIwcGFnZSUyMFVSTA==",highlighted:`state = env.state() | |
| <span class="hljs-built_in">print</span>(<span class="hljs-string">f"Benchmark: <span class="hljs-subst">{state.benchmark}</span>"</span>) <span class="hljs-comment"># 'miniwob', 'webarena', etc.</span> | |
| <span class="hljs-built_in">print</span>(<span class="hljs-string">f"Task: <span class="hljs-subst">{state.task_name}</span>"</span>) <span class="hljs-comment"># Task name/ID</span> | |
| <span class="hljs-built_in">print</span>(<span class="hljs-string">f"Episode: <span class="hljs-subst">{state.episode_id}</span>"</span>) <span class="hljs-comment"># Unique episode ID</span> | |
| <span class="hljs-built_in">print</span>(<span class="hljs-string">f"Steps: <span class="hljs-subst">{state.step_count}</span>"</span>) <span class="hljs-comment"># Number of steps taken</span> | |
| <span class="hljs-built_in">print</span>(<span class="hljs-string">f"Total Reward: <span class="hljs-subst">{state.cum_reward}</span>"</span>) <span class="hljs-comment"># Cumulative reward</span> | |
| <span class="hljs-built_in">print</span>(<span class="hljs-string">f"Goal: <span class="hljs-subst">{state.goal}</span>"</span>) <span class="hljs-comment"># Task instruction</span> | |
| <span class="hljs-built_in">print</span>(<span class="hljs-string">f"URL: <span class="hljs-subst">{state.current_url}</span>"</span>) <span class="hljs-comment"># Current page URL</span>`,lang:"python",wrap:!1}}),_t=new T({props:{title:"Configuration",local:"configuration",headingTag:"h2"}}),Ft=new T({props:{title:"Common Settings",local:"common-settings",headingTag:"h3"}}),xt=new T({props:{title:"WebArena-Specific (only needed for WebArena benchmark)",local:"webarena-specific-only-needed-for-webarena-benchmark",headingTag:"h3"}}),Lt=new T({props:{title:"Supported Benchmarks",local:"supported-benchmarks",headingTag:"h2"}}),Dt=new T({props:{title:"1. MiniWoB++ (Training) ✅ Recommended for Training",local:"1-miniwob-training--recommended-for-training",headingTag:"h3"}}),Kt=new T({props:{title:"2. WebArena (Evaluation) 📊 Benchmark",local:"2-webarena-evaluation--benchmark",headingTag:"h3"}}),le=new T({props:{title:"3. VisualWebArena (Evaluation) 👁️ Visual Benchmark",local:"3-visualwebarena-evaluation--visual-benchmark",headingTag:"h3"}}),ae=new T({props:{title:"4. WorkArena (Evaluation) 💼 Enterprise Benchmark",local:"4-workarena-evaluation--enterprise-benchmark",headingTag:"h3"}}),Me=new T({props:{title:"Typical Training Pipeline",local:"typical-training-pipeline",headingTag:"h2"}}),oe=new u({props:{code:"ZnJvbSUyMGVudnMuYnJvd3Nlcmd5bV9lbnYlMjBpbXBvcnQlMjBCcm93c2VyR3ltRW52JTJDJTIwQnJvd3Nlckd5bUFjdGlvbiUwQSUwQSUyMyUyMFN0YWdlJTIwMSUzQSUyMFRyYWluJTIwb24lMjBNaW5pV29CJTIwKHNpbXBsZSUyMHRhc2tzJTJDJTIwZmFzdCklMEF0cmFpbl9lbnYlMjAlM0QlMjBCcm93c2VyR3ltRW52LmZyb21fZG9ja2VyX2ltYWdlKCUwQSUyMCUyMCUyMCUyMCUyMmJyb3dzZXJneW0tZW52JTNBbGF0ZXN0JTIyJTJDJTBBJTIwJTIwJTIwJTIwZW52aXJvbm1lbnQlM0QlN0IlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjJCUk9XU0VSR1lNX0JFTkNITUFSSyUyMiUzQSUyMCUyMm1pbml3b2IlMjIlMkMlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjJCUk9XU0VSR1lNX1RBU0tfTkFNRSUyMiUzQSUyMCUyMmNsaWNrLWJ1dHRvbiUyMiUyQyUwQSUyMCUyMCUyMCUyMCU3RCUwQSklMEElMEElMjMlMjBUcmFpbiUyMHlvdXIlMjBhZ2VudCUyMChSTCUyQyUyMGltaXRhdGlvbiUyMGxlYXJuaW5nJTJDJTIwZXRjLiklMEFhZ2VudC50cmFpbih0cmFpbl9lbnYlMkMlMjBudW1fZXBpc29kZXMlM0QxMDAwMCklMEF0cmFpbl9lbnYuY2xvc2UoKSUwQSUwQSUyMyUyMFN0YWdlJTIwMiUzQSUyMEV2YWx1YXRlJTIwb24lMjBXZWJBcmVuYSUyMChjb21wbGV4JTIwdGFza3MlMkMlMjByZWFsaXN0aWMpJTBBZXZhbF9lbnYlMjAlM0QlMjBCcm93c2VyR3ltRW52LmZyb21fZG9ja2VyX2ltYWdlKCUwQSUyMCUyMCUyMCUyMCUyMmJyb3dzZXJneW0tZW52JTNBbGF0ZXN0JTIyJTJDJTBBJTIwJTIwJTIwJTIwZW52aXJvbm1lbnQlM0QlN0IlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjJCUk9XU0VSR1lNX0JFTkNITUFSSyUyMiUzQSUyMCUyMndlYmFyZW5hJTIyJTJDJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIyQlJPV1NFUkdZTV9UQVNLX05BTUUlMjIlM0ElMjAlMjIwJTIyJTJDJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIzJTIwLi4uJTIwV2ViQXJlbmElMjBVUkxzJTBBJTIwJTIwJTIwJTIwJTdEJTBBKSUwQSUwQSUyMyUyMFRlc3QlMjBwZXJmb3JtYW5jZSUwQXN1Y2Nlc3NfcmF0ZSUyMCUzRCUyMGFnZW50LmV2YWx1YXRlKGV2YWxfZW52JTJDJTIwbnVtX3Rhc2tzJTNEODEyKSUwQXByaW50KGYlMjJXZWJBcmVuYSUyMFN1Y2Nlc3MlMjBSYXRlJTNBJTIwJTdCc3VjY2Vzc19yYXRlJTNBLjIlMjUlN0QlMjIpJTBBZXZhbF9lbnYuY2xvc2UoKQ==",highlighted:`<span class="hljs-keyword">from</span> envs.browsergym_env <span class="hljs-keyword">import</span> BrowserGymEnv, BrowserGymAction | |
| <span class="hljs-comment"># Stage 1: Train on MiniWoB (simple tasks, fast)</span> | |
| train_env = BrowserGymEnv.from_docker_image( | |
| <span class="hljs-string">"browsergym-env:latest"</span>, | |
| environment={ | |
| <span class="hljs-string">"BROWSERGYM_BENCHMARK"</span>: <span class="hljs-string">"miniwob"</span>, | |
| <span class="hljs-string">"BROWSERGYM_TASK_NAME"</span>: <span class="hljs-string">"click-button"</span>, | |
| } | |
| ) | |
| <span class="hljs-comment"># Train your agent (RL, imitation learning, etc.)</span> | |
| agent.train(train_env, num_episodes=<span class="hljs-number">10000</span>) | |
| train_env.close() | |
| <span class="hljs-comment"># Stage 2: Evaluate on WebArena (complex tasks, realistic)</span> | |
| eval_env = BrowserGymEnv.from_docker_image( | |
| <span class="hljs-string">"browsergym-env:latest"</span>, | |
| environment={ | |
| <span class="hljs-string">"BROWSERGYM_BENCHMARK"</span>: <span class="hljs-string">"webarena"</span>, | |
| <span class="hljs-string">"BROWSERGYM_TASK_NAME"</span>: <span class="hljs-string">"0"</span>, | |
| <span class="hljs-comment"># ... WebArena URLs</span> | |
| } | |
| ) | |
| <span class="hljs-comment"># Test performance</span> | |
| success_rate = agent.evaluate(eval_env, num_tasks=<span class="hljs-number">812</span>) | |
| <span class="hljs-built_in">print</span>(<span class="hljs-string">f"WebArena Success Rate: <span class="hljs-subst">{success_rate:<span class="hljs-number">.2</span>%}</span>"</span>) | |
| eval_env.close()`,lang:"python",wrap:!1}}),de=new T({props:{title:"Development & Testing",local:"development--testing",headingTag:"h2"}}),pe=new T({props:{title:"Running Tests",local:"running-tests",headingTag:"h3"}}),ce=new u({props:{code:"JTIzJTIwRnJvbSUyMHRoZSUyME9wZW5FbnYlMjByZXBvc2l0b3J5JTIwcm9vdCUwQXB5dGVzdCUyMHRlc3RzJTJGZW52cyUyRnRlc3RfYnJvd3Nlcmd5bV9lbnYucHk=",highlighted:`<span class="hljs-comment"># From the OpenEnv repository root</span> | |
| pytest tests/envs/test_browsergym_env.py`,lang:"bash",wrap:!1}}),me=new T({props:{title:"Local Development",local:"local-development",headingTag:"h3"}}),ye=new u({props:{code:"JTIzJTIwSW5zdGFsbCUyMGluJTIwZGV2ZWxvcG1lbnQlMjBtb2RlJTBBY2QlMjAlMkZwYXRoJTJGdG8lMkZPcGVuRW52JTBBcGlwJTIwaW5zdGFsbCUyMC1lJTIwLiUwQSUwQSUyMyUyMEluc3RhbGwlMjBCcm93c2VyR3ltJTBBcGlwJTIwaW5zdGFsbCUyMGJyb3dzZXJneW0lMjBicm93c2VyZ3ltLW1pbml3b2IlMjBicm93c2VyZ3ltLXdlYmFyZW5hJTBBJTBBJTIzJTIwUnVuJTIwdGhlJTIwc2VydmVyJTIwbG9jYWxseSUwQWNkJTIwZW52cyUyRmJyb3dzZXJneW1fZW52JTJGc2VydmVyJTBBZXhwb3J0JTIwQlJPV1NFUkdZTV9CRU5DSE1BUkslM0RtaW5pd29iJTBBZXhwb3J0JTIwQlJPV1NFUkdZTV9UQVNLX05BTUUlM0RjbGljay10ZXN0JTBBcHl0aG9uJTIwYXBwLnB5",highlighted:`<span class="hljs-comment"># Install in development mode</span> | |
| <span class="hljs-built_in">cd</span> /path/to/OpenEnv | |
| pip install -e . | |
| <span class="hljs-comment"># Install BrowserGym</span> | |
| pip install browsergym browsergym-miniwob browsergym-webarena | |
| <span class="hljs-comment"># Run the server locally</span> | |
| <span class="hljs-built_in">cd</span> envs/browsergym_env/server | |
| <span class="hljs-built_in">export</span> BROWSERGYM_BENCHMARK=miniwob | |
| <span class="hljs-built_in">export</span> BROWSERGYM_TASK_NAME=click-test | |
| python app.py`,lang:"bash",wrap:!1}}),Te=new T({props:{title:"Project Structure",local:"project-structure",headingTag:"h2"}}),ue=new u({props:{code:"YnJvd3Nlcmd5bV9lbnYlMkYlMEElRTIlOTQlOUMlRTIlOTQlODAlRTIlOTQlODAlMjBfX2luaXRfXy5weSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMyUyME1vZHVsZSUyMGV4cG9ydHMlMEElRTIlOTQlOUMlRTIlOTQlODAlRTIlOTQlODAlMjBtb2RlbHMucHklMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjMlMjBBY3Rpb24lMkMlMjBPYnNlcnZhdGlvbiUyQyUyMFN0YXRlJTIwZGF0YWNsYXNzZXMlMEElRTIlOTQlOUMlRTIlOTQlODAlRTIlOTQlODAlMjBjbGllbnQucHklMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjMlMjBIVFRQRW52Q2xpZW50JTIwaW1wbGVtZW50YXRpb24lMEElRTIlOTQlOUMlRTIlOTQlODAlRTIlOTQlODAlMjBSRUFETUUubWQlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjMlMjBUaGlzJTIwZmlsZSUwQSVFMiU5NCU5NCVFMiU5NCU4MCVFMiU5NCU4MCUyMHNlcnZlciUyRiUwQSUyMCUyMCUyMCUyMCVFMiU5NCU5QyVFMiU5NCU4MCVFMiU5NCU4MCUyMF9faW5pdF9fLnB5JTBBJTIwJTIwJTIwJTIwJUUyJTk0JTlDJUUyJTk0JTgwJUUyJTk0JTgwJTIwYXBwLnB5JTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIzJTIwRmFzdEFQSSUyMGFwcGxpY2F0aW9uJTBBJTIwJTIwJTIwJTIwJUUyJTk0JTlDJUUyJTk0JTgwJUUyJTk0JTgwJTIwYnJvd3Nlcmd5bV9lbnZpcm9ubWVudC5weSUyMCUyMCUyMyUyMEVudmlyb25tZW50JTIwaW1wbGVtZW50YXRpb24lMEElMjAlMjAlMjAlMjAlRTIlOTQlOUMlRTIlOTQlODAlRTIlOTQlODAlMjBEb2NrZXJmaWxlJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIzJTIwQ29udGFpbmVyJTIwc3BlY2lmaWNhdGlvbiUwQSUyMCUyMCUyMCUyMCVFMiU5NCU5NCVFMiU5NCU4MCVFMiU5NCU4MCUyMHJlcXVpcmVtZW50cy50eHQlMjAlMjAlMjAlMjAlMjAlMjMlMjBQeXRob24lMjBkZXBlbmRlbmNpZXM=",highlighted:`browsergym_env/ | |
| ├── __init__.py <span class="hljs-meta"># Module exports</span> | |
| ├── models.py <span class="hljs-meta"># Action, Observation, State dataclasses</span> | |
| ├── <span class="hljs-keyword">client</span>.py <span class="hljs-meta"># HTTPEnvClient implementation</span> | |
| ├── README.md <span class="hljs-meta"># This file</span> | |
| └── <span class="hljs-keyword">server</span>/ | |
| ├── __init__.py | |
| ├── app.py <span class="hljs-meta"># FastAPI application</span> | |
| ├── browsergym_environment.py <span class="hljs-meta"># Environment implementation</span> | |
| ├── Dockerfile <span class="hljs-meta"># Container specification</span> | |
| └── requirements.txt <span class="hljs-meta"># Python dependencies</span>`,lang:"",wrap:!1}}),Je=new T({props:{title:"References",local:"references",headingTag:"h2"}}),we=new Zn({props:{source:"https://github.com/huggingface/openenv/blob/main/docs/source/environments/browsergym.md"}}),{c(){J=c("meta"),he=n(),je=c("p"),fe=n(),i(U.$$.fragment),ge=n(),i(w.$$.fragment),Ie=n(),j=c("p"),j.textContent=Bs,ve=n(),i(b.$$.fragment),Ce=n(),h=c("p"),h.textContent=As,Be=n(),f=c("p"),f.innerHTML=ks,Ae=n(),g=c("ul"),g.innerHTML=$s,ke=n(),I=c("p"),I.innerHTML=Ws,$e=n(),v=c("ol"),v.innerHTML=Es,We=n(),C=c("p"),C.innerHTML=Rs,Ee=n(),i(B.$$.fragment),Re=n(),i(A.$$.fragment),Ge=n(),i(k.$$.fragment),Se=n(),i($.$$.fragment),Ne=n(),W=c("p"),W.innerHTML=Gs,Ze=n(),i(E.$$.fragment),Qe=n(),R=c("p"),R.innerHTML=Ss,Ve=n(),i(G.$$.fragment),Ye=n(),i(S.$$.fragment),He=n(),N=c("p"),N.textContent=Ns,_e=n(),Z=c("p"),Z.innerHTML=Zs,Xe=n(),Q=c("table"),Q.innerHTML=Qs,Fe=n(),V=c("p"),V.innerHTML=Vs,qe=n(),Y=c("table"),Y.innerHTML=Ys,xe=n(),H=c("p"),H.innerHTML=Hs,ze=n(),_=c("table"),_.innerHTML=_s,Le=n(),X=c("p"),X.innerHTML=Xs,De=n(),F=c("table"),F.innerHTML=Fs,Oe=n(),q=c("p"),q.innerHTML=qs,Pe=n(),x=c("table"),x.innerHTML=xs,Ke=n(),z=c("p"),z.innerHTML=zs,tl=n(),L=c("p"),L.innerHTML=Ls,el=n(),i(D.$$.fragment),ll=n(),i(O.$$.fragment),sl=n(),P=c("p"),P.textContent=Ds,nl=n(),K=c("p"),K.innerHTML=Os,al=n(),tt=c("table"),tt.innerHTML=Ps,il=n(),et=c("p"),et.innerHTML=Ks,rl=n(),lt=c("table"),lt.innerHTML=tn,Ml=n(),st=c("p"),st.innerHTML=en,ol=n(),i(nt.$$.fragment),dl=n(),at=c("p"),at.innerHTML=ln,pl=n(),i(it.$$.fragment),cl=n(),rt=c("p"),rt.textContent=sn,ml=n(),Mt=c("ul"),Mt.innerHTML=nn,yl=n(),i(ot.$$.fragment),Tl=n(),dt=c("p"),dt.textContent=an,ul=n(),pt=c("ul"),pt.innerHTML=rn,Jl=n(),ct=c("p"),ct.innerHTML=Mn,Ul=n(),mt=c("ul"),mt.innerHTML=on,wl=n(),i(yt.$$.fragment),jl=n(),i(Tt.$$.fragment),bl=n(),ut=c("p"),ut.innerHTML=dn,hl=n(),i(Jt.$$.fragment),fl=n(),i(Ut.$$.fragment),gl=n(),i(wt.$$.fragment),Il=n(),i(jt.$$.fragment),vl=n(),bt=c("ol"),bt.innerHTML=pn,Cl=n(),i(ht.$$.fragment),Bl=n(),i(ft.$$.fragment),Al=n(),i(gt.$$.fragment),kl=n(),i(It.$$.fragment),$l=n(),i(vt.$$.fragment),Wl=n(),i(Ct.$$.fragment),El=n(),i(Bt.$$.fragment),Rl=n(),i(At.$$.fragment),Gl=n(),i(kt.$$.fragment),Sl=n(),i($t.$$.fragment),Nl=n(),Wt=c("p"),Wt.textContent=cn,Zl=n(),i(Et.$$.fragment),Ql=n(),i(Rt.$$.fragment),Vl=n(),Gt=c("p"),Gt.textContent=mn,Yl=n(),i(St.$$.fragment),Hl=n(),i(Nt.$$.fragment),_l=n(),Zt=c("p"),Zt.innerHTML=yn,Xl=n(),i(Qt.$$.fragment),Fl=n(),i(Vt.$$.fragment),ql=n(),Yt=c("p"),Yt.textContent=Tn,xl=n(),i(Ht.$$.fragment),zl=n(),i(_t.$$.fragment),Ll=n(),Xt=c("p"),Xt.textContent=un,Dl=n(),i(Ft.$$.fragment),Ol=n(),qt=c("ul"),qt.innerHTML=Jn,Pl=n(),i(xt.$$.fragment),Kl=n(),zt=c("ul"),zt.innerHTML=Un,ts=n(),i(Lt.$$.fragment),es=n(),i(Dt.$$.fragment),ls=n(),Ot=c("ul"),Ot.innerHTML=wn,ss=n(),Pt=c("p"),Pt.innerHTML=jn,ns=n(),i(Kt.$$.fragment),as=n(),te=c("ul"),te.innerHTML=bn,is=n(),ee=c("p"),ee.innerHTML=hn,rs=n(),i(le.$$.fragment),Ms=n(),se=c("ul"),se.innerHTML=fn,os=n(),ne=c("p"),ne.innerHTML=gn,ds=n(),i(ae.$$.fragment),ps=n(),ie=c("ul"),ie.innerHTML=In,cs=n(),re=c("p"),re.innerHTML=vn,ms=n(),i(Me.$$.fragment),ys=n(),i(oe.$$.fragment),Ts=n(),i(de.$$.fragment),us=n(),i(pe.$$.fragment),Js=n(),i(ce.$$.fragment),Us=n(),i(me.$$.fragment),ws=n(),i(ye.$$.fragment),js=n(),i(Te.$$.fragment),bs=n(),i(ue.$$.fragment),hs=n(),i(Je.$$.fragment),fs=n(),Ue=c("ul"),Ue.innerHTML=Cn,gs=n(),i(we.$$.fragment),Is=n(),be=c("p"),this.h()},l(t){const e=Gn("svelte-u9bgzb",document.head);J=m(e,"META",{name:!0,content:!0}),e.forEach(l),he=a(t),je=m(t,"P",{}),Bn(je).forEach(l),fe=a(t),r(U.$$.fragment,t),ge=a(t),r(w.$$.fragment,t),Ie=a(t),j=m(t,"P",{"data-svelte-h":!0}),y(j)!=="svelte-rr0x3y"&&(j.textContent=Bs),ve=a(t),r(b.$$.fragment,t),Ce=a(t),h=m(t,"P",{"data-svelte-h":!0}),y(h)!=="svelte-zm5un5"&&(h.textContent=As),Be=a(t),f=m(t,"P",{"data-svelte-h":!0}),y(f)!=="svelte-ehewbv"&&(f.innerHTML=ks),Ae=a(t),g=m(t,"UL",{"data-svelte-h":!0}),y(g)!=="svelte-1kpfgs9"&&(g.innerHTML=$s),ke=a(t),I=m(t,"P",{"data-svelte-h":!0}),y(I)!=="svelte-q81ays"&&(I.innerHTML=Ws),$e=a(t),v=m(t,"OL",{"data-svelte-h":!0}),y(v)!=="svelte-lpvt5n"&&(v.innerHTML=Es),We=a(t),C=m(t,"P",{"data-svelte-h":!0}),y(C)!=="svelte-khdmf9"&&(C.innerHTML=Rs),Ee=a(t),r(B.$$.fragment,t),Re=a(t),r(A.$$.fragment,t),Ge=a(t),r(k.$$.fragment,t),Se=a(t),r($.$$.fragment,t),Ne=a(t),W=m(t,"P",{"data-svelte-h":!0}),y(W)!=="svelte-4qgzdv"&&(W.innerHTML=Gs),Ze=a(t),r(E.$$.fragment,t),Qe=a(t),R=m(t,"P",{"data-svelte-h":!0}),y(R)!=="svelte-qidu5g"&&(R.innerHTML=Ss),Ve=a(t),r(G.$$.fragment,t),Ye=a(t),r(S.$$.fragment,t),He=a(t),N=m(t,"P",{"data-svelte-h":!0}),y(N)!=="svelte-1mytbch"&&(N.textContent=Ns),_e=a(t),Z=m(t,"P",{"data-svelte-h":!0}),y(Z)!=="svelte-r5kqxs"&&(Z.innerHTML=Zs),Xe=a(t),Q=m(t,"TABLE",{"data-svelte-h":!0}),y(Q)!=="svelte-1w9h2nl"&&(Q.innerHTML=Qs),Fe=a(t),V=m(t,"P",{"data-svelte-h":!0}),y(V)!=="svelte-1wl97ou"&&(V.innerHTML=Vs),qe=a(t),Y=m(t,"TABLE",{"data-svelte-h":!0}),y(Y)!=="svelte-o8bbvh"&&(Y.innerHTML=Ys),xe=a(t),H=m(t,"P",{"data-svelte-h":!0}),y(H)!=="svelte-16p4sli"&&(H.innerHTML=Hs),ze=a(t),_=m(t,"TABLE",{"data-svelte-h":!0}),y(_)!=="svelte-b1tfo6"&&(_.innerHTML=_s),Le=a(t),X=m(t,"P",{"data-svelte-h":!0}),y(X)!=="svelte-ez6cur"&&(X.innerHTML=Xs),De=a(t),F=m(t,"TABLE",{"data-svelte-h":!0}),y(F)!=="svelte-u8s9ay"&&(F.innerHTML=Fs),Oe=a(t),q=m(t,"P",{"data-svelte-h":!0}),y(q)!=="svelte-4td4c3"&&(q.innerHTML=qs),Pe=a(t),x=m(t,"TABLE",{"data-svelte-h":!0}),y(x)!=="svelte-1umko5b"&&(x.innerHTML=xs),Ke=a(t),z=m(t,"P",{"data-svelte-h":!0}),y(z)!=="svelte-hg7net"&&(z.innerHTML=zs),tl=a(t),L=m(t,"P",{"data-svelte-h":!0}),y(L)!=="svelte-qbjyqk"&&(L.innerHTML=Ls),el=a(t),r(D.$$.fragment,t),ll=a(t),r(O.$$.fragment,t),sl=a(t),P=m(t,"P",{"data-svelte-h":!0}),y(P)!=="svelte-gm1lnx"&&(P.textContent=Ds),nl=a(t),K=m(t,"P",{"data-svelte-h":!0}),y(K)!=="svelte-cfbovv"&&(K.innerHTML=Os),al=a(t),tt=m(t,"TABLE",{"data-svelte-h":!0}),y(tt)!=="svelte-xu9t75"&&(tt.innerHTML=Ps),il=a(t),et=m(t,"P",{"data-svelte-h":!0}),y(et)!=="svelte-vx8nuh"&&(et.innerHTML=Ks),rl=a(t),lt=m(t,"TABLE",{"data-svelte-h":!0}),y(lt)!=="svelte-chdtdt"&&(lt.innerHTML=tn),Ml=a(t),st=m(t,"P",{"data-svelte-h":!0}),y(st)!=="svelte-qbjyqk"&&(st.innerHTML=en),ol=a(t),r(nt.$$.fragment,t),dl=a(t),at=m(t,"P",{"data-svelte-h":!0}),y(at)!=="svelte-lykok9"&&(at.innerHTML=ln),pl=a(t),r(it.$$.fragment,t),cl=a(t),rt=m(t,"P",{"data-svelte-h":!0}),y(rt)!=="svelte-p1wnan"&&(rt.textContent=sn),ml=a(t),Mt=m(t,"UL",{"data-svelte-h":!0}),y(Mt)!=="svelte-13gv6ez"&&(Mt.innerHTML=nn),yl=a(t),r(ot.$$.fragment,t),Tl=a(t),dt=m(t,"P",{"data-svelte-h":!0}),y(dt)!=="svelte-p5p2p5"&&(dt.textContent=an),ul=a(t),pt=m(t,"UL",{"data-svelte-h":!0}),y(pt)!=="svelte-1aj3gtp"&&(pt.innerHTML=rn),Jl=a(t),ct=m(t,"P",{"data-svelte-h":!0}),y(ct)!=="svelte-ghrv68"&&(ct.innerHTML=Mn),Ul=a(t),mt=m(t,"UL",{"data-svelte-h":!0}),y(mt)!=="svelte-1qj28u4"&&(mt.innerHTML=on),wl=a(t),r(yt.$$.fragment,t),jl=a(t),r(Tt.$$.fragment,t),bl=a(t),ut=m(t,"P",{"data-svelte-h":!0}),y(ut)!=="svelte-1bru0hy"&&(ut.innerHTML=dn),hl=a(t),r(Jt.$$.fragment,t),fl=a(t),r(Ut.$$.fragment,t),gl=a(t),r(wt.$$.fragment,t),Il=a(t),r(jt.$$.fragment,t),vl=a(t),bt=m(t,"OL",{"data-svelte-h":!0}),y(bt)!=="svelte-17xzk8o"&&(bt.innerHTML=pn),Cl=a(t),r(ht.$$.fragment,t),Bl=a(t),r(ft.$$.fragment,t),Al=a(t),r(gt.$$.fragment,t),kl=a(t),r(It.$$.fragment,t),$l=a(t),r(vt.$$.fragment,t),Wl=a(t),r(Ct.$$.fragment,t),El=a(t),r(Bt.$$.fragment,t),Rl=a(t),r(At.$$.fragment,t),Gl=a(t),r(kt.$$.fragment,t),Sl=a(t),r($t.$$.fragment,t),Nl=a(t),Wt=m(t,"P",{"data-svelte-h":!0}),y(Wt)!=="svelte-8z6dvw"&&(Wt.textContent=cn),Zl=a(t),r(Et.$$.fragment,t),Ql=a(t),r(Rt.$$.fragment,t),Vl=a(t),Gt=m(t,"P",{"data-svelte-h":!0}),y(Gt)!=="svelte-1ciua9u"&&(Gt.textContent=mn),Yl=a(t),r(St.$$.fragment,t),Hl=a(t),r(Nt.$$.fragment,t),_l=a(t),Zt=m(t,"P",{"data-svelte-h":!0}),y(Zt)!=="svelte-700vob"&&(Zt.innerHTML=yn),Xl=a(t),r(Qt.$$.fragment,t),Fl=a(t),r(Vt.$$.fragment,t),ql=a(t),Yt=m(t,"P",{"data-svelte-h":!0}),y(Yt)!=="svelte-onfcfm"&&(Yt.textContent=Tn),xl=a(t),r(Ht.$$.fragment,t),zl=a(t),r(_t.$$.fragment,t),Ll=a(t),Xt=m(t,"P",{"data-svelte-h":!0}),y(Xt)!=="svelte-oyf8l6"&&(Xt.textContent=un),Dl=a(t),r(Ft.$$.fragment,t),Ol=a(t),qt=m(t,"UL",{"data-svelte-h":!0}),y(qt)!=="svelte-1hnemjt"&&(qt.innerHTML=Jn),Pl=a(t),r(xt.$$.fragment,t),Kl=a(t),zt=m(t,"UL",{"data-svelte-h":!0}),y(zt)!=="svelte-6prvrb"&&(zt.innerHTML=Un),ts=a(t),r(Lt.$$.fragment,t),es=a(t),r(Dt.$$.fragment,t),ls=a(t),Ot=m(t,"UL",{"data-svelte-h":!0}),y(Ot)!=="svelte-7w8uv4"&&(Ot.innerHTML=wn),ss=a(t),Pt=m(t,"P",{"data-svelte-h":!0}),y(Pt)!=="svelte-1af4vl4"&&(Pt.innerHTML=jn),ns=a(t),r(Kt.$$.fragment,t),as=a(t),te=m(t,"UL",{"data-svelte-h":!0}),y(te)!=="svelte-1bfjgwe"&&(te.innerHTML=bn),is=a(t),ee=m(t,"P",{"data-svelte-h":!0}),y(ee)!=="svelte-1x459lg"&&(ee.innerHTML=hn),rs=a(t),r(le.$$.fragment,t),Ms=a(t),se=m(t,"UL",{"data-svelte-h":!0}),y(se)!=="svelte-161rl0i"&&(se.innerHTML=fn),os=a(t),ne=m(t,"P",{"data-svelte-h":!0}),y(ne)!=="svelte-1yu5tgm"&&(ne.innerHTML=gn),ds=a(t),r(ae.$$.fragment,t),ps=a(t),ie=m(t,"UL",{"data-svelte-h":!0}),y(ie)!=="svelte-12jyl0y"&&(ie.innerHTML=In),cs=a(t),re=m(t,"P",{"data-svelte-h":!0}),y(re)!=="svelte-1ehpgyd"&&(re.innerHTML=vn),ms=a(t),r(Me.$$.fragment,t),ys=a(t),r(oe.$$.fragment,t),Ts=a(t),r(de.$$.fragment,t),us=a(t),r(pe.$$.fragment,t),Js=a(t),r(ce.$$.fragment,t),Us=a(t),r(me.$$.fragment,t),ws=a(t),r(ye.$$.fragment,t),js=a(t),r(Te.$$.fragment,t),bs=a(t),r(ue.$$.fragment,t),hs=a(t),r(Je.$$.fragment,t),fs=a(t),Ue=m(t,"UL",{"data-svelte-h":!0}),y(Ue)!=="svelte-ezss8r"&&(Ue.innerHTML=Cn),gs=a(t),r(we.$$.fragment,t),Is=a(t),be=m(t,"P",{}),Bn(be).forEach(l),this.h()},h(){An(J,"name","hf:doc:metadata"),An(J,"content",Vn)},m(t,e){Sn(document.head,J),s(t,he,e),s(t,je,e),s(t,fe,e),M(U,t,e),s(t,ge,e),M(w,t,e),s(t,Ie,e),s(t,j,e),s(t,ve,e),M(b,t,e),s(t,Ce,e),s(t,h,e),s(t,Be,e),s(t,f,e),s(t,Ae,e),s(t,g,e),s(t,ke,e),s(t,I,e),s(t,$e,e),s(t,v,e),s(t,We,e),s(t,C,e),s(t,Ee,e),M(B,t,e),s(t,Re,e),M(A,t,e),s(t,Ge,e),M(k,t,e),s(t,Se,e),M($,t,e),s(t,Ne,e),s(t,W,e),s(t,Ze,e),M(E,t,e),s(t,Qe,e),s(t,R,e),s(t,Ve,e),M(G,t,e),s(t,Ye,e),M(S,t,e),s(t,He,e),s(t,N,e),s(t,_e,e),s(t,Z,e),s(t,Xe,e),s(t,Q,e),s(t,Fe,e),s(t,V,e),s(t,qe,e),s(t,Y,e),s(t,xe,e),s(t,H,e),s(t,ze,e),s(t,_,e),s(t,Le,e),s(t,X,e),s(t,De,e),s(t,F,e),s(t,Oe,e),s(t,q,e),s(t,Pe,e),s(t,x,e),s(t,Ke,e),s(t,z,e),s(t,tl,e),s(t,L,e),s(t,el,e),M(D,t,e),s(t,ll,e),M(O,t,e),s(t,sl,e),s(t,P,e),s(t,nl,e),s(t,K,e),s(t,al,e),s(t,tt,e),s(t,il,e),s(t,et,e),s(t,rl,e),s(t,lt,e),s(t,Ml,e),s(t,st,e),s(t,ol,e),M(nt,t,e),s(t,dl,e),s(t,at,e),s(t,pl,e),M(it,t,e),s(t,cl,e),s(t,rt,e),s(t,ml,e),s(t,Mt,e),s(t,yl,e),M(ot,t,e),s(t,Tl,e),s(t,dt,e),s(t,ul,e),s(t,pt,e),s(t,Jl,e),s(t,ct,e),s(t,Ul,e),s(t,mt,e),s(t,wl,e),M(yt,t,e),s(t,jl,e),M(Tt,t,e),s(t,bl,e),s(t,ut,e),s(t,hl,e),M(Jt,t,e),s(t,fl,e),M(Ut,t,e),s(t,gl,e),M(wt,t,e),s(t,Il,e),M(jt,t,e),s(t,vl,e),s(t,bt,e),s(t,Cl,e),M(ht,t,e),s(t,Bl,e),M(ft,t,e),s(t,Al,e),M(gt,t,e),s(t,kl,e),M(It,t,e),s(t,$l,e),M(vt,t,e),s(t,Wl,e),M(Ct,t,e),s(t,El,e),M(Bt,t,e),s(t,Rl,e),M(At,t,e),s(t,Gl,e),M(kt,t,e),s(t,Sl,e),M($t,t,e),s(t,Nl,e),s(t,Wt,e),s(t,Zl,e),M(Et,t,e),s(t,Ql,e),M(Rt,t,e),s(t,Vl,e),s(t,Gt,e),s(t,Yl,e),M(St,t,e),s(t,Hl,e),M(Nt,t,e),s(t,_l,e),s(t,Zt,e),s(t,Xl,e),M(Qt,t,e),s(t,Fl,e),M(Vt,t,e),s(t,ql,e),s(t,Yt,e),s(t,xl,e),M(Ht,t,e),s(t,zl,e),M(_t,t,e),s(t,Ll,e),s(t,Xt,e),s(t,Dl,e),M(Ft,t,e),s(t,Ol,e),s(t,qt,e),s(t,Pl,e),M(xt,t,e),s(t,Kl,e),s(t,zt,e),s(t,ts,e),M(Lt,t,e),s(t,es,e),M(Dt,t,e),s(t,ls,e),s(t,Ot,e),s(t,ss,e),s(t,Pt,e),s(t,ns,e),M(Kt,t,e),s(t,as,e),s(t,te,e),s(t,is,e),s(t,ee,e),s(t,rs,e),M(le,t,e),s(t,Ms,e),s(t,se,e),s(t,os,e),s(t,ne,e),s(t,ds,e),M(ae,t,e),s(t,ps,e),s(t,ie,e),s(t,cs,e),s(t,re,e),s(t,ms,e),M(Me,t,e),s(t,ys,e),M(oe,t,e),s(t,Ts,e),M(de,t,e),s(t,us,e),M(pe,t,e),s(t,Js,e),M(ce,t,e),s(t,Us,e),M(me,t,e),s(t,ws,e),M(ye,t,e),s(t,js,e),M(Te,t,e),s(t,bs,e),M(ue,t,e),s(t,hs,e),M(Je,t,e),s(t,fs,e),s(t,Ue,e),s(t,gs,e),M(we,t,e),s(t,Is,e),s(t,be,e),vs=!0},p:$n,i(t){vs||(o(U.$$.fragment,t),o(w.$$.fragment,t),o(b.$$.fragment,t),o(B.$$.fragment,t),o(A.$$.fragment,t),o(k.$$.fragment,t),o($.$$.fragment,t),o(E.$$.fragment,t),o(G.$$.fragment,t),o(S.$$.fragment,t),o(D.$$.fragment,t),o(O.$$.fragment,t),o(nt.$$.fragment,t),o(it.$$.fragment,t),o(ot.$$.fragment,t),o(yt.$$.fragment,t),o(Tt.$$.fragment,t),o(Jt.$$.fragment,t),o(Ut.$$.fragment,t),o(wt.$$.fragment,t),o(jt.$$.fragment,t),o(ht.$$.fragment,t),o(ft.$$.fragment,t),o(gt.$$.fragment,t),o(It.$$.fragment,t),o(vt.$$.fragment,t),o(Ct.$$.fragment,t),o(Bt.$$.fragment,t),o(At.$$.fragment,t),o(kt.$$.fragment,t),o($t.$$.fragment,t),o(Et.$$.fragment,t),o(Rt.$$.fragment,t),o(St.$$.fragment,t),o(Nt.$$.fragment,t),o(Qt.$$.fragment,t),o(Vt.$$.fragment,t),o(Ht.$$.fragment,t),o(_t.$$.fragment,t),o(Ft.$$.fragment,t),o(xt.$$.fragment,t),o(Lt.$$.fragment,t),o(Dt.$$.fragment,t),o(Kt.$$.fragment,t),o(le.$$.fragment,t),o(ae.$$.fragment,t),o(Me.$$.fragment,t),o(oe.$$.fragment,t),o(de.$$.fragment,t),o(pe.$$.fragment,t),o(ce.$$.fragment,t),o(me.$$.fragment,t),o(ye.$$.fragment,t),o(Te.$$.fragment,t),o(ue.$$.fragment,t),o(Je.$$.fragment,t),o(we.$$.fragment,t),vs=!0)},o(t){d(U.$$.fragment,t),d(w.$$.fragment,t),d(b.$$.fragment,t),d(B.$$.fragment,t),d(A.$$.fragment,t),d(k.$$.fragment,t),d($.$$.fragment,t),d(E.$$.fragment,t),d(G.$$.fragment,t),d(S.$$.fragment,t),d(D.$$.fragment,t),d(O.$$.fragment,t),d(nt.$$.fragment,t),d(it.$$.fragment,t),d(ot.$$.fragment,t),d(yt.$$.fragment,t),d(Tt.$$.fragment,t),d(Jt.$$.fragment,t),d(Ut.$$.fragment,t),d(wt.$$.fragment,t),d(jt.$$.fragment,t),d(ht.$$.fragment,t),d(ft.$$.fragment,t),d(gt.$$.fragment,t),d(It.$$.fragment,t),d(vt.$$.fragment,t),d(Ct.$$.fragment,t),d(Bt.$$.fragment,t),d(At.$$.fragment,t),d(kt.$$.fragment,t),d($t.$$.fragment,t),d(Et.$$.fragment,t),d(Rt.$$.fragment,t),d(St.$$.fragment,t),d(Nt.$$.fragment,t),d(Qt.$$.fragment,t),d(Vt.$$.fragment,t),d(Ht.$$.fragment,t),d(_t.$$.fragment,t),d(Ft.$$.fragment,t),d(xt.$$.fragment,t),d(Lt.$$.fragment,t),d(Dt.$$.fragment,t),d(Kt.$$.fragment,t),d(le.$$.fragment,t),d(ae.$$.fragment,t),d(Me.$$.fragment,t),d(oe.$$.fragment,t),d(de.$$.fragment,t),d(pe.$$.fragment,t),d(ce.$$.fragment,t),d(me.$$.fragment,t),d(ye.$$.fragment,t),d(Te.$$.fragment,t),d(ue.$$.fragment,t),d(Je.$$.fragment,t),d(we.$$.fragment,t),vs=!1},d(t){t&&(l(he),l(je),l(fe),l(ge),l(Ie),l(j),l(ve),l(Ce),l(h),l(Be),l(f),l(Ae),l(g),l(ke),l(I),l($e),l(v),l(We),l(C),l(Ee),l(Re),l(Ge),l(Se),l(Ne),l(W),l(Ze),l(Qe),l(R),l(Ve),l(Ye),l(He),l(N),l(_e),l(Z),l(Xe),l(Q),l(Fe),l(V),l(qe),l(Y),l(xe),l(H),l(ze),l(_),l(Le),l(X),l(De),l(F),l(Oe),l(q),l(Pe),l(x),l(Ke),l(z),l(tl),l(L),l(el),l(ll),l(sl),l(P),l(nl),l(K),l(al),l(tt),l(il),l(et),l(rl),l(lt),l(Ml),l(st),l(ol),l(dl),l(at),l(pl),l(cl),l(rt),l(ml),l(Mt),l(yl),l(Tl),l(dt),l(ul),l(pt),l(Jl),l(ct),l(Ul),l(mt),l(wl),l(jl),l(bl),l(ut),l(hl),l(fl),l(gl),l(Il),l(vl),l(bt),l(Cl),l(Bl),l(Al),l(kl),l($l),l(Wl),l(El),l(Rl),l(Gl),l(Sl),l(Nl),l(Wt),l(Zl),l(Ql),l(Vl),l(Gt),l(Yl),l(Hl),l(_l),l(Zt),l(Xl),l(Fl),l(ql),l(Yt),l(xl),l(zl),l(Ll),l(Xt),l(Dl),l(Ol),l(qt),l(Pl),l(Kl),l(zt),l(ts),l(es),l(ls),l(Ot),l(ss),l(Pt),l(ns),l(as),l(te),l(is),l(ee),l(rs),l(Ms),l(se),l(os),l(ne),l(ds),l(ps),l(ie),l(cs),l(re),l(ms),l(ys),l(Ts),l(us),l(Js),l(Us),l(ws),l(js),l(bs),l(hs),l(fs),l(Ue),l(gs),l(Is),l(be)),l(J),p(U,t),p(w,t),p(b,t),p(B,t),p(A,t),p(k,t),p($,t),p(E,t),p(G,t),p(S,t),p(D,t),p(O,t),p(nt,t),p(it,t),p(ot,t),p(yt,t),p(Tt,t),p(Jt,t),p(Ut,t),p(wt,t),p(jt,t),p(ht,t),p(ft,t),p(gt,t),p(It,t),p(vt,t),p(Ct,t),p(Bt,t),p(At,t),p(kt,t),p($t,t),p(Et,t),p(Rt,t),p(St,t),p(Nt,t),p(Qt,t),p(Vt,t),p(Ht,t),p(_t,t),p(Ft,t),p(xt,t),p(Lt,t),p(Dt,t),p(Kt,t),p(le,t),p(ae,t),p(Me,t),p(oe,t),p(de,t),p(pe,t),p(ce,t),p(me,t),p(ye,t),p(Te,t),p(ue,t),p(Je,t),p(we,t)}}}const Vn='{"title":"BrowserGym Environment","local":"browsergym-environment","sections":[{"title":"Why BrowserGym?","local":"why-browsergym","sections":[],"depth":2},{"title":"Quick Start - Training (MiniWoB)","local":"quick-start---training-miniwob","sections":[{"title":"No Setup Required! 🎉","local":"no-setup-required-","sections":[],"depth":3}],"depth":2},{"title":"Harness Sessions for TRL","local":"harness-sessions-for-trl","sections":[{"title":"Available Tasks by Benchmark","local":"available-tasks-by-benchmark","sections":[{"title":"MiniWoB++ Tasks (Training - 100+ tasks)","local":"miniwob-tasks-training---100-tasks","sections":[],"depth":4},{"title":"WebArena Tasks (Evaluation - 812 tasks)","local":"webarena-tasks-evaluation---812-tasks","sections":[],"depth":4},{"title":"VisualWebArena Tasks (910 tasks)","local":"visualwebarena-tasks-910-tasks","sections":[],"depth":4},{"title":"WorkArena Tasks","local":"workarena-tasks","sections":[],"depth":4}],"depth":3}],"depth":2},{"title":"Evaluation (WebArena)","local":"evaluation-webarena","sections":[{"title":"Prerequisites","local":"prerequisites","sections":[],"depth":3},{"title":"Usage","local":"usage","sections":[],"depth":3}],"depth":2},{"title":"Building the Docker Image","local":"building-the-docker-image","sections":[{"title":"Prerequisites","local":"prerequisites","sections":[],"depth":3},{"title":"Build the BrowserGym Environment","local":"build-the-browsergym-environment","sections":[],"depth":3},{"title":"Run the Server","local":"run-the-server","sections":[{"title":"For MiniWoB (Training):","local":"for-miniwob-training","sections":[],"depth":4},{"title":"For WebArena (Evaluation):","local":"for-webarena-evaluation","sections":[],"depth":4}],"depth":3}],"depth":2},{"title":"Environment Details","local":"environment-details","sections":[{"title":"Action","local":"action","sections":[],"depth":3},{"title":"Observation","local":"observation","sections":[{"title":"Advanced: Accessing Raw BrowserGym Data","local":"advanced-accessing-raw-browsergym-data","sections":[],"depth":4}],"depth":3},{"title":"State","local":"state","sections":[],"depth":3}],"depth":2},{"title":"Configuration","local":"configuration","sections":[{"title":"Common Settings","local":"common-settings","sections":[],"depth":3},{"title":"WebArena-Specific (only needed for WebArena benchmark)","local":"webarena-specific-only-needed-for-webarena-benchmark","sections":[],"depth":3}],"depth":2},{"title":"Supported Benchmarks","local":"supported-benchmarks","sections":[{"title":"1. MiniWoB++ (Training) ✅ Recommended for Training","local":"1-miniwob-training--recommended-for-training","sections":[],"depth":3},{"title":"2. WebArena (Evaluation) 📊 Benchmark","local":"2-webarena-evaluation--benchmark","sections":[],"depth":3},{"title":"3. VisualWebArena (Evaluation) 👁️ Visual Benchmark","local":"3-visualwebarena-evaluation--visual-benchmark","sections":[],"depth":3},{"title":"4. WorkArena (Evaluation) 💼 Enterprise Benchmark","local":"4-workarena-evaluation--enterprise-benchmark","sections":[],"depth":3}],"depth":2},{"title":"Typical Training Pipeline","local":"typical-training-pipeline","sections":[],"depth":2},{"title":"Development & Testing","local":"development--testing","sections":[{"title":"Running Tests","local":"running-tests","sections":[],"depth":3},{"title":"Local Development","local":"local-development","sections":[],"depth":3}],"depth":2},{"title":"Project Structure","local":"project-structure","sections":[],"depth":2},{"title":"References","local":"references","sections":[],"depth":2}],"depth":1}';function Yn(Cs){return Wn(()=>{new URLSearchParams(window.location.search).get("fw")}),[]}class qn extends En{constructor(J){super(),Rn(this,J,Yn,Qn,kn,{})}}export{qn as component}; | |
Xet Storage Details
- Size:
- 74 kB
- Xet hash:
- 2fd5d269ec732039bdd8f8add348a99be27f91476fd71d5c144c060254a9ac2b
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.