Buckets:
| import{s as ee,n as se,o as le}from"../chunks/scheduler.2b22cead.js";import{S as te,i as ne,e as p,s as n,c as U,h as ae,a as r,d as l,b as a,f as K,g as T,j as _,k as L,l as ie,m as t,n as b,t as w,o as J,p as g}from"../chunks/index.1a0e8013.js";import{C as oe,H}from"../chunks/Heading.073062fc.js";import{C as pe}from"../chunks/CodeBlock.c26a707d.js";import{E as re}from"../chunks/MermaidChart.svelte_svelte_type_style_lang.6453e821.js";function ce(X){let i,k,$,C,c,A,m,N,o,V='<p>This page is a condensed preview. For the end-to-end walk-through — including Docker packaging, <code>openenv.yaml</code>, and Hugging Face Space deployment — see the <a href="../getting_started/environment-builder">full environment builder guide</a>.</p>',Z,M,G,h,O="Building an OpenEnv environment involves:",S,d,P="<li><strong>Define your models</strong> - <code>Action</code>, <code>Observation</code>, and <code>State</code> types</li> <li><strong>Implement the environment</strong> - Core logic in a Python class</li> <li><strong>Create the server</strong> - FastAPI wrapper for HTTP access</li> <li><strong>Package for deployment</strong> - Docker container and manifest</li>",Y,j,F,y,D="Here’s a minimal environment that echoes back messages. Reward and <code>done</code> are fields on the <code>Observation</code> — <code>step</code> returns an observation, not a tuple.",W,u,R,f,x,v,q='<li><a href="environment-anatomy">Environment Anatomy</a> - Deep dive into structure</li> <li><a href="deployment">Deployment</a> - Deploy to Docker and HF Spaces</li> <li><a href="../getting_started/environment-builder">Full Guide</a> - Complete documentation</li>',z,E,I,B,Q;return c=new oe({props:{containerStyle:"float: right; margin-left: 10px; display: inline-flex; position: relative; z-index: 10;"}}),m=new H({props:{title:"Your First Environment",local:"your-first-environment",headingTag:"h1"}}),M=new H({props:{title:"Overview",local:"overview",headingTag:"h2"}}),j=new H({props:{title:"Quick Example",local:"quick-example",headingTag:"h2"}}),u=new pe({props:{code:"ZnJvbSUyMG9wZW5lbnYuY29yZS5lbnZfc2VydmVyLmludGVyZmFjZXMlMjBpbXBvcnQlMjBFbnZpcm9ubWVudCUwQWZyb20lMjBvcGVuZW52LmNvcmUuZW52X3NlcnZlci50eXBlcyUyMGltcG9ydCUyMEFjdGlvbiUyQyUyME9ic2VydmF0aW9uJTJDJTIwU3RhdGUlMEElMEElMEFjbGFzcyUyMEVjaG9BY3Rpb24oQWN0aW9uKSUzQSUwQSUyMCUyMCUyMCUyMG1lc3NhZ2UlM0ElMjBzdHIlMEElMEElMEFjbGFzcyUyMEVjaG9PYnNlcnZhdGlvbihPYnNlcnZhdGlvbiklM0ElMEElMjAlMjAlMjAlMjBlY2hvJTNBJTIwc3RyJTBBJTBBJTBBY2xhc3MlMjBFY2hvU3RhdGUoU3RhdGUpJTNBJTBBJTIwJTIwJTIwJTIwbGFzdF9tZXNzYWdlJTNBJTIwc3RyJTIwJTNEJTIwJTIyJTIyJTBBJTBBJTBBY2xhc3MlMjBFY2hvRW52aXJvbm1lbnQoRW52aXJvbm1lbnQlNUJFY2hvQWN0aW9uJTJDJTIwRWNob09ic2VydmF0aW9uJTJDJTIwRWNob1N0YXRlJTVEKSUzQSUwQSUyMCUyMCUyMCUyMGRlZiUyMHJlc2V0KHNlbGYlMkMlMjBzZWVkJTNETm9uZSUyQyUyMGVwaXNvZGVfaWQlM0ROb25lJTJDJTIwKiprd2FyZ3MpJTIwLSUzRSUyMEVjaG9PYnNlcnZhdGlvbiUzQSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMHNlbGYuX3N0YXRlJTIwJTNEJTIwRWNob1N0YXRlKCklMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjByZXR1cm4lMjBFY2hvT2JzZXJ2YXRpb24oZWNobyUzRCUyMlJlYWR5ISUyMiklMEElMEElMjAlMjAlMjAlMjBkZWYlMjBzdGVwKHNlbGYlMkMlMjBhY3Rpb24lM0ElMjBFY2hvQWN0aW9uJTJDJTIwdGltZW91dF9zJTNETm9uZSUyQyUyMCoqa3dhcmdzKSUyMC0lM0UlMjBFY2hvT2JzZXJ2YXRpb24lM0ElMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBzZWxmLl9zdGF0ZS5sYXN0X21lc3NhZ2UlMjAlM0QlMjBhY3Rpb24ubWVzc2FnZSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMHJldHVybiUyMEVjaG9PYnNlcnZhdGlvbihlY2hvJTNEYWN0aW9uLm1lc3NhZ2UlMkMlMjByZXdhcmQlM0QwLjAlMkMlMjBkb25lJTNERmFsc2UpJTBBJTBBJTIwJTIwJTIwJTIwJTQwcHJvcGVydHklMEElMjAlMjAlMjAlMjBkZWYlMjBzdGF0ZShzZWxmKSUyMC0lM0UlMjBFY2hvU3RhdGUlM0ElMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjByZXR1cm4lMjBzZWxmLl9zdGF0ZQ==",highlighted:`<span class="hljs-keyword">from</span> openenv.core.env_server.interfaces <span class="hljs-keyword">import</span> Environment | |
| <span class="hljs-keyword">from</span> openenv.core.env_server.types <span class="hljs-keyword">import</span> Action, Observation, State | |
| <span class="hljs-keyword">class</span> <span class="hljs-title class_">EchoAction</span>(<span class="hljs-title class_ inherited__">Action</span>): | |
| message: <span class="hljs-built_in">str</span> | |
| <span class="hljs-keyword">class</span> <span class="hljs-title class_">EchoObservation</span>(<span class="hljs-title class_ inherited__">Observation</span>): | |
| echo: <span class="hljs-built_in">str</span> | |
| <span class="hljs-keyword">class</span> <span class="hljs-title class_">EchoState</span>(<span class="hljs-title class_ inherited__">State</span>): | |
| last_message: <span class="hljs-built_in">str</span> = <span class="hljs-string">""</span> | |
| <span class="hljs-keyword">class</span> <span class="hljs-title class_">EchoEnvironment</span>(Environment[EchoAction, EchoObservation, EchoState]): | |
| <span class="hljs-keyword">def</span> <span class="hljs-title function_">reset</span>(<span class="hljs-params">self, seed=<span class="hljs-literal">None</span>, episode_id=<span class="hljs-literal">None</span>, **kwargs</span>) -> EchoObservation: | |
| self._state = EchoState() | |
| <span class="hljs-keyword">return</span> EchoObservation(echo=<span class="hljs-string">"Ready!"</span>) | |
| <span class="hljs-keyword">def</span> <span class="hljs-title function_">step</span>(<span class="hljs-params">self, action: EchoAction, timeout_s=<span class="hljs-literal">None</span>, **kwargs</span>) -> EchoObservation: | |
| self._state.last_message = action.message | |
| <span class="hljs-keyword">return</span> EchoObservation(echo=action.message, reward=<span class="hljs-number">0.0</span>, done=<span class="hljs-literal">False</span>) | |
| <span class="hljs-meta"> @property</span> | |
| <span class="hljs-keyword">def</span> <span class="hljs-title function_">state</span>(<span class="hljs-params">self</span>) -> EchoState: | |
| <span class="hljs-keyword">return</span> self._state`,lang:"python",wrap:!1}}),f=new H({props:{title:"Next Steps",local:"next-steps",headingTag:"h2"}}),E=new re({props:{source:"https://github.com/huggingface/openenv/blob/main/docs/source/guides/first-environment.md"}}),{c(){i=p("meta"),k=n(),$=p("p"),C=n(),U(c.$$.fragment),A=n(),U(m.$$.fragment),N=n(),o=p("blockquote"),o.innerHTML=V,Z=n(),U(M.$$.fragment),G=n(),h=p("p"),h.textContent=O,S=n(),d=p("ol"),d.innerHTML=P,Y=n(),U(j.$$.fragment),F=n(),y=p("p"),y.innerHTML=D,W=n(),U(u.$$.fragment),R=n(),U(f.$$.fragment),x=n(),v=p("ul"),v.innerHTML=q,z=n(),U(E.$$.fragment),I=n(),B=p("p"),this.h()},l(e){const s=ae("svelte-u9bgzb",document.head);i=r(s,"META",{name:!0,content:!0}),s.forEach(l),k=a(e),$=r(e,"P",{}),K($).forEach(l),C=a(e),T(c.$$.fragment,e),A=a(e),T(m.$$.fragment,e),N=a(e),o=r(e,"BLOCKQUOTE",{class:!0,"data-svelte-h":!0}),_(o)!=="svelte-12u3zm7"&&(o.innerHTML=V),Z=a(e),T(M.$$.fragment,e),G=a(e),h=r(e,"P",{"data-svelte-h":!0}),_(h)!=="svelte-65x3ih"&&(h.textContent=O),S=a(e),d=r(e,"OL",{"data-svelte-h":!0}),_(d)!=="svelte-1ulbjnz"&&(d.innerHTML=P),Y=a(e),T(j.$$.fragment,e),F=a(e),y=r(e,"P",{"data-svelte-h":!0}),_(y)!=="svelte-hj05g6"&&(y.innerHTML=D),W=a(e),T(u.$$.fragment,e),R=a(e),T(f.$$.fragment,e),x=a(e),v=r(e,"UL",{"data-svelte-h":!0}),_(v)!=="svelte-4b6774"&&(v.innerHTML=q),z=a(e),T(E.$$.fragment,e),I=a(e),B=r(e,"P",{}),K(B).forEach(l),this.h()},h(){L(i,"name","hf:doc:metadata"),L(i,"content",me),L(o,"class","note")},m(e,s){ie(document.head,i),t(e,k,s),t(e,$,s),t(e,C,s),b(c,e,s),t(e,A,s),b(m,e,s),t(e,N,s),t(e,o,s),t(e,Z,s),b(M,e,s),t(e,G,s),t(e,h,s),t(e,S,s),t(e,d,s),t(e,Y,s),b(j,e,s),t(e,F,s),t(e,y,s),t(e,W,s),b(u,e,s),t(e,R,s),b(f,e,s),t(e,x,s),t(e,v,s),t(e,z,s),b(E,e,s),t(e,I,s),t(e,B,s),Q=!0},p:se,i(e){Q||(w(c.$$.fragment,e),w(m.$$.fragment,e),w(M.$$.fragment,e),w(j.$$.fragment,e),w(u.$$.fragment,e),w(f.$$.fragment,e),w(E.$$.fragment,e),Q=!0)},o(e){J(c.$$.fragment,e),J(m.$$.fragment,e),J(M.$$.fragment,e),J(j.$$.fragment,e),J(u.$$.fragment,e),J(f.$$.fragment,e),J(E.$$.fragment,e),Q=!1},d(e){e&&(l(k),l($),l(C),l(A),l(N),l(o),l(Z),l(G),l(h),l(S),l(d),l(Y),l(F),l(y),l(W),l(R),l(x),l(v),l(z),l(I),l(B)),l(i),g(c,e),g(m,e),g(M,e),g(j,e),g(u,e),g(f,e),g(E,e)}}}const me='{"title":"Your First Environment","local":"your-first-environment","sections":[{"title":"Overview","local":"overview","sections":[],"depth":2},{"title":"Quick Example","local":"quick-example","sections":[],"depth":2},{"title":"Next Steps","local":"next-steps","sections":[],"depth":2}],"depth":1}';function Me(X){return le(()=>{new URLSearchParams(window.location.search).get("fw")}),[]}class fe extends te{constructor(i){super(),ne(this,i,Me,ce,ee,{})}}export{fe as component}; | |
Xet Storage Details
- Size:
- 8.54 kB
- Xet hash:
- 5e0707d3c80fd7af3cc6224faa42dbf9a1af22665d8f25c71331e3299919552d
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.