Buckets:

HuggingFaceDocBuilder's picture
download
raw
25.7 kB
import{s as bt,n as vt,o as At}from"../chunks/scheduler.2b22cead.js";import{S as gt,i as Ct,e as d,s as n,c as i,h as It,a as m,d as s,b as a,f as $t,g as p,j as y,k as ft,l as Bt,m as l,n as r,t as o,o as M,p as c}from"../chunks/index.1a0e8013.js";import{C as St,H as T}from"../chunks/Heading.6fc28d77.js";import{C as j}from"../chunks/CodeBlock.eba84ef2.js";import{E as Qt}from"../chunks/MermaidChart.svelte_svelte_type_style_lang.dfd8123b.js";function _t(at){let w,ce,oe,de,J,me,h,Te,u,it=`OpenEnv follows a client-server model inspired by Gymnasium’s simple API.
Agents send structured actions to isolated environments and receive
observations, rewards, and episode status in return.`,ye,U,je,$,we,f,Je,b,pt=`An <strong>Environment</strong> is an isolated execution context where your agent can take
actions and receive observations. Environments usually run as servers and expose
a standard API.`,he,v,ue,A,rt=`An <strong>Action</strong> is a structured command that your agent sends to the environment.
Each environment defines its own action schema.`,Ue,g,$e,C,fe,I,ot=`An <strong>Observation</strong> is the response from the environment after taking an action.
It contains the current state visible to your agent.`,be,B,ve,S,Ae,Q,Mt="A <strong>StepResult</strong> bundles together everything returned from a step:",ge,_,ct="<li><code>observation</code>: what the agent can see</li> <li><code>reward</code>: numeric reward signal for training</li> <li><code>terminated</code>: whether the episode has ended</li> <li><code>truncated</code>: whether the episode was cut short</li> <li><code>info</code>: additional metadata</li>",Ce,k,Ie,W,dt=`A <strong>Rubric</strong> is a composable unit of reward computation that lives inside the
environment. Rubrics can be combined with <code>WeightedSum</code>, <code>Gate</code>, and
<code>Sequential</code>; use LLM judges for subjective criteria; and handle delayed rewards
with <code>TrajectoryRubric</code>. See the <a href="../tutorials/rubrics">Rubrics tutorial</a>
for the full API.`,Be,E,Se,Z,mt=`A <strong>Client</strong> is how you connect to and interact with an environment. OpenEnv
provides both async and sync clients.`,Qe,N,_e,G,ke,L,We,R,Ee,V,Tt="<thead><tr><th>Method</th> <th>Use Case</th> <th>Example</th></tr></thead> <tbody><tr><td>HTTP URL</td> <td>Remote servers, Hugging Face Spaces</td> <td><code>EnvClient(base_url=&quot;https://...&quot;)</code></td></tr> <tr><td>Docker</td> <td>Local development</td> <td><code>EnvClient.from_docker_image(&quot;env:latest&quot;)</code></td></tr> <tr><td>Auto-discovery</td> <td>Installed packages or known environments</td> <td><code>AutoEnv.from_env(&quot;echo&quot;)</code></td></tr></tbody>",Ze,X,Ne,z,yt="Every OpenEnv environment consists of:",Ge,Y,Le,H,Re,x,Ve,O,Xe,F,jt="Custom <code>Action</code>, <code>Observation</code>, and <code>State</code> types subclass the base classes from <code>openenv.core.env_server.types</code> — not <code>pydantic.BaseModel</code> directly. The base <code>Observation</code> already carries <code>done</code> and <code>reward</code> fields, which <code>step()</code> populates; <code>Action</code> and <code>State</code> add metadata plumbing used by the server.",ze,P,Ye,D,He,q,wt="Environments subclass the abstract <code>Environment[ActT, ObsT, StateT]</code> base and implement <code>reset</code>, <code>step</code>, and the <code>state</code> property. Reward and termination are carried on the returned observation — they are <strong>not</strong> a tuple return value.",xe,K,Oe,ee,Fe,te,Jt="Use <code>create_app</code> from <code>openenv.core.env_server</code> to wrap the environment as a FastAPI application. Pass the environment <strong>class</strong> (used as a factory so each WebSocket session gets its own instance) along with the action and observation types:",Pe,se,De,le,ht="This is what the environment’s <code>server/app.py</code> entry point typically does — see <code>envs/echo_env/server/app.py</code> for a minimal real example.",qe,ne,Ke,ae,ut='Rewards are computed <strong>inside the environment</strong>, not by external code. The base <code>Environment</code> accepts an optional <code>rubric</code> on <code>__init__</code> — pass it to <code>super().__init__(rubric=...)</code>, call <code>self._reset_rubric()</code> from <code>reset</code>, and <code>self._apply_rubric(action, observation)</code> from <code>step</code> (or <code>_apply_rubric_async</code> from <code>step_async</code>). The <a href="../tutorials/rubrics">Rubrics tutorial</a> covers the composable API end-to-end.',et,ie,tt,pe,Ut='<li><a href="../getting-started">Getting Started</a></li> <li><a href="auto-discovery">Auto-discovery</a></li> <li><a href="first-environment">Your first environment</a></li>',st,re,lt,Me,nt;return J=new St({props:{containerStyle:"float: right; margin-left: 10px; display: inline-flex; position: relative; z-index: 10;"}}),h=new T({props:{title:"Concepts",local:"concepts",headingTag:"h1"}}),U=new j({props:{code:"JTJCLS0tLS0tLS0tLS0tLS0tLS0lMkIlMjAlMjAlMjAlMjAlMjBIVFRQJTJGV2ViU29ja2V0JTIwJTIwJTIwJTIwJTIwJTJCLS0tLS0tLS0tLS0tLS0tLS0lMkIlMEElN0MlMjAlMjAlMjBZb3VyJTIwQWdlbnQlMjAlMjAlMjAlMjAlN0MlMjAlM0MtLS0tLS0tLS0tLS0tLS0tLS0tLSUzRSUyMCU3QyUyMCUyMCUyMEVudmlyb25tZW50JTIwJTIwJTIwJTdDJTBBJTdDJTIwJTIwJTIwKENsaWVudCklMjAlMjAlMjAlMjAlMjAlMjAlN0MlMjAlMjAlMjAlMjBzdGVwJTJGcmVzZXQlMkZzdGF0ZSUyMCUyMCUyMCUyMCU3QyUyMCUyMCUyMCUyMChTZXJ2ZXIpJTIwJTIwJTIwJTIwJTIwJTdDJTBBJTJCLS0tLS0tLS0tLS0tLS0tLS0lMkIlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMkItLS0tLS0tLS0tLS0tLS0tLSUyQg==",highlighted:`+-----------------+ HTTP/WebSocket +-----------------+
|<span class="hljs-string"> Your Agent </span>|<span class="hljs-string"> &lt;--------------------&gt; </span>|<span class="hljs-string"> Environment </span>|
|<span class="hljs-string"> (Client) </span>|<span class="hljs-string"> step/reset/state </span>|<span class="hljs-string"> (Server) </span>|
+-----------------+ +-----------------+`,lang:"",wrap:!1}}),$=new T({props:{title:"Key Abstractions",local:"key-abstractions",headingTag:"h2"}}),f=new T({props:{title:"Environment",local:"environment",headingTag:"h3"}}),v=new T({props:{title:"Action",local:"action",headingTag:"h3"}}),g=new j({props:{code:"ZnJvbSUyMGNvZGluZ19lbnYlMjBpbXBvcnQlMjBDb2RlQWN0aW9uJTBBJTBBYWN0aW9uJTIwJTNEJTIwQ29kZUFjdGlvbihjb2RlJTNEJTIycHJpbnQoJ0hlbGxvIScpJTIyKQ==",highlighted:`<span class="hljs-keyword">from</span> coding_env <span class="hljs-keyword">import</span> CodeAction
action = CodeAction(code=<span class="hljs-string">&quot;print(&#x27;Hello!&#x27;)&quot;</span>)`,lang:"python",wrap:!1}}),C=new T({props:{title:"Observation",local:"observation",headingTag:"h3"}}),B=new j({props:{code:"cmVzdWx0JTIwJTNEJTIwY2xpZW50LnN0ZXAoYWN0aW9uKSUwQXByaW50KHJlc3VsdC5vYnNlcnZhdGlvbi5zdGRvdXQpJTIwJTIwJTIzJTIwJTIySGVsbG8hJTIy",highlighted:`result = client.step(action)
<span class="hljs-built_in">print</span>(result.observation.stdout) <span class="hljs-comment"># &quot;Hello!&quot;</span>`,lang:"python",wrap:!1}}),S=new T({props:{title:"StepResult",local:"stepresult",headingTag:"h3"}}),k=new T({props:{title:"Rubric",local:"rubric",headingTag:"h3"}}),E=new T({props:{title:"Client",local:"client",headingTag:"h3"}}),N=new j({props:{code:"ZnJvbSUyMG9wZW5lbnYlMjBpbXBvcnQlMjBBdXRvRW52JTBBJTBBZW52JTIwJTNEJTIwQXV0b0Vudi5mcm9tX2VudiglMjJjb2RpbmclMjIpJTBBJTBBYXN5bmMlMjB3aXRoJTIwZW52JTIwYXMlMjBjbGllbnQlM0ElMEElMjAlMjAlMjAlMjByZXN1bHQlMjAlM0QlMjBhd2FpdCUyMGNsaWVudC5yZXNldCgpJTBBJTIwJTIwJTIwJTIwcmVzdWx0JTIwJTNEJTIwYXdhaXQlMjBjbGllbnQuc3RlcChhY3Rpb24pJTBBJTBBd2l0aCUyMGVudi5zeW5jKCklMjBhcyUyMGNsaWVudCUzQSUwQSUyMCUyMCUyMCUyMHJlc3VsdCUyMCUzRCUyMGNsaWVudC5yZXNldCgpJTBBJTIwJTIwJTIwJTIwcmVzdWx0JTIwJTNEJTIwY2xpZW50LnN0ZXAoYWN0aW9uKQ==",highlighted:`<span class="hljs-keyword">from</span> openenv <span class="hljs-keyword">import</span> AutoEnv
env = AutoEnv.from_env(<span class="hljs-string">&quot;coding&quot;</span>)
<span class="hljs-keyword">async</span> <span class="hljs-keyword">with</span> env <span class="hljs-keyword">as</span> client:
result = <span class="hljs-keyword">await</span> client.reset()
result = <span class="hljs-keyword">await</span> client.step(action)
<span class="hljs-keyword">with</span> env.sync() <span class="hljs-keyword">as</span> client:
result = client.reset()
result = client.step(action)`,lang:"python",wrap:!1}}),G=new T({props:{title:"The Step Loop",local:"the-step-loop",headingTag:"h2"}}),L=new j({props:{code:"d2l0aCUyMGVudi5zeW5jKCklMjBhcyUyMGNsaWVudCUzQSUwQSUyMCUyMCUyMCUyMHJlc3VsdCUyMCUzRCUyMGNsaWVudC5yZXNldCgpJTBBJTBBJTIwJTIwJTIwJTIwd2hpbGUlMjBub3QlMjByZXN1bHQudGVybWluYXRlZCUzQSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMG9icyUyMCUzRCUyMHJlc3VsdC5vYnNlcnZhdGlvbiUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMGFjdGlvbiUyMCUzRCUyMGRlY2lkZV9hY3Rpb24ob2JzKSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMHJlc3VsdCUyMCUzRCUyMGNsaWVudC5zdGVwKGFjdGlvbiklMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBsZWFybihyZXN1bHQucmV3YXJkKQ==",highlighted:`<span class="hljs-keyword">with</span> env.sync() <span class="hljs-keyword">as</span> client:
result = client.reset()
<span class="hljs-keyword">while</span> <span class="hljs-keyword">not</span> result.terminated:
obs = result.observation
action = decide_action(obs)
result = client.step(action)
learn(result.reward)`,lang:"python",wrap:!1}}),R=new T({props:{title:"Connection Methods",local:"connection-methods",headingTag:"h2"}}),X=new T({props:{title:"Environment Anatomy",local:"environment-anatomy",headingTag:"h2"}}),Y=new j({props:{code:"bXlfZW52JTJGJTBBJUUyJTk0JTlDJUUyJTk0JTgwJUUyJTk0JTgwJTIwb3BlbmVudi55YW1sJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIzJTIwTWFuaWZlc3QlMjBmaWxlJTBBJUUyJTk0JTlDJUUyJTk0JTgwJUUyJTk0JTgwJTIwbXlfZW52JTJGJTBBJUUyJTk0JTgyJTIwJTIwJTIwJUUyJTk0JTlDJUUyJTk0JTgwJUUyJTk0JTgwJTIwX19pbml0X18ucHklMEElRTIlOTQlODIlMjAlMjAlMjAlRTIlOTQlOUMlRTIlOTQlODAlRTIlOTQlODAlMjBjbGllbnQucHklMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjMlMjBDbGllbnQlMjBjbGFzc2VzJTBBJUUyJTk0JTgyJTIwJTIwJTIwJUUyJTk0JTlDJUUyJTk0JTgwJUUyJTk0JTgwJTIwc2VydmVyLnB5JTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIzJTIwU2VydmVyJTJGRW52aXJvbm1lbnQlMEElRTIlOTQlODIlMjAlMjAlMjAlRTIlOTQlOTQlRTIlOTQlODAlRTIlOTQlODAlMjBtb2RlbHMucHklMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjMlMjBQeWRhbnRpYyUyMG1vZGVscyUwQSVFMiU5NCU5QyVFMiU5NCU4MCVFMiU5NCU4MCUyMERvY2tlcmZpbGUlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjMlMjBDb250YWluZXIlMjBkZWZpbml0aW9uJTBBJUUyJTk0JTlDJUUyJTk0JTgwJUUyJTk0JTgwJTIwcHlwcm9qZWN0LnRvbWwlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjMlMjBQYWNrYWdlJTIwbWV0YWRhdGElMEElRTIlOTQlOTQlRTIlOTQlODAlRTIlOTQlODAlMjBSRUFETUUubWQlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjMlMjBEb2N1bWVudGF0aW9u",highlighted:`my_env/
├── openenv.yaml <span class="hljs-meta"># Manifest file</span>
├── my_env/
│ ├── __init__.py
│ ├── <span class="hljs-keyword">client</span>.py <span class="hljs-meta"># Client classes</span>
│ ├── <span class="hljs-keyword">server</span>.py <span class="hljs-meta"># Server/Environment</span>
│ └── models.py <span class="hljs-meta"># Pydantic models</span>
├── Dockerfile <span class="hljs-meta"># Container definition</span>
├── pyproject.toml <span class="hljs-meta"># Package metadata</span>
└── README.md <span class="hljs-meta"># Documentation</span>`,lang:"",wrap:!1}}),H=new T({props:{title:"The Manifest (openenv.yaml)",local:"the-manifest-openenvyaml",headingTag:"h3"}}),x=new j({props:{code:"bmFtZSUzQSUyMG15X2VudiUwQXZlcnNpb24lM0ElMjAwLjEuMCUwQWRlc2NyaXB0aW9uJTNBJTIwTXklMjBjdXN0b20lMjBlbnZpcm9ubWVudCUwQSUwQWNsaWVudCUzQSUwQSUyMCUyMGNsYXNzX25hbWUlM0ElMjBNeUVudkNsaWVudCUwQSUyMCUyMG1vZHVsZSUzQSUyMG15X2Vudi5jbGllbnQlMEElMEFhY3Rpb24lM0ElMEElMjAlMjBjbGFzc19uYW1lJTNBJTIwTXlBY3Rpb24lMEElMjAlMjBtb2R1bGUlM0ElMjBteV9lbnYubW9kZWxzJTBBJTBBb2JzZXJ2YXRpb24lM0ElMEElMjAlMjBjbGFzc19uYW1lJTNBJTIwTXlPYnNlcnZhdGlvbiUwQSUyMCUyMG1vZHVsZSUzQSUyMG15X2Vudi5tb2RlbHMlMEElMEFkZWZhdWx0X2ltYWdlJTNBJTIwbXktZW52JTNBbGF0ZXN0JTBBc3BlY192ZXJzaW9uJTNBJTIwMQ==",highlighted:`<span class="hljs-attr">name:</span> <span class="hljs-string">my_env</span>
<span class="hljs-attr">version:</span> <span class="hljs-number">0.1</span><span class="hljs-number">.0</span>
<span class="hljs-attr">description:</span> <span class="hljs-string">My</span> <span class="hljs-string">custom</span> <span class="hljs-string">environment</span>
<span class="hljs-attr">client:</span>
<span class="hljs-attr">class_name:</span> <span class="hljs-string">MyEnvClient</span>
<span class="hljs-attr">module:</span> <span class="hljs-string">my_env.client</span>
<span class="hljs-attr">action:</span>
<span class="hljs-attr">class_name:</span> <span class="hljs-string">MyAction</span>
<span class="hljs-attr">module:</span> <span class="hljs-string">my_env.models</span>
<span class="hljs-attr">observation:</span>
<span class="hljs-attr">class_name:</span> <span class="hljs-string">MyObservation</span>
<span class="hljs-attr">module:</span> <span class="hljs-string">my_env.models</span>
<span class="hljs-attr">default_image:</span> <span class="hljs-string">my-env:latest</span>
<span class="hljs-attr">spec_version:</span> <span class="hljs-number">1</span>`,lang:"yaml",wrap:!1}}),O=new T({props:{title:"Models (Pydantic)",local:"models-pydantic",headingTag:"h3"}}),P=new j({props:{code:"ZnJvbSUyMG9wZW5lbnYuY29yZS5lbnZfc2VydmVyLnR5cGVzJTIwaW1wb3J0JTIwQWN0aW9uJTJDJTIwT2JzZXJ2YXRpb24lMkMlMjBTdGF0ZSUwQSUwQSUwQWNsYXNzJTIwTXlBY3Rpb24oQWN0aW9uKSUzQSUwQSUyMCUyMCUyMCUyMGNvbW1hbmQlM0ElMjBzdHIlMEElMjAlMjAlMjAlMjBhcmdzJTNBJTIwbGlzdCU1QnN0ciU1RCUyMCUzRCUyMCU1QiU1RCUwQSUwQSUwQWNsYXNzJTIwTXlPYnNlcnZhdGlvbihPYnNlcnZhdGlvbiklM0ElMEElMjAlMjAlMjAlMjBvdXRwdXQlM0ElMjBzdHIlMEElMjAlMjAlMjAlMjBzdWNjZXNzJTNBJTIwYm9vbCUwQSUwQSUwQWNsYXNzJTIwTXlTdGF0ZShTdGF0ZSklM0ElMEElMjAlMjAlMjAlMjBoaXN0b3J5JTNBJTIwbGlzdCU1QnN0ciU1RCUyMCUzRCUyMCU1QiU1RA==",highlighted:`<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_">MyAction</span>(<span class="hljs-title class_ inherited__">Action</span>):
command: <span class="hljs-built_in">str</span>
args: <span class="hljs-built_in">list</span>[<span class="hljs-built_in">str</span>] = []
<span class="hljs-keyword">class</span> <span class="hljs-title class_">MyObservation</span>(<span class="hljs-title class_ inherited__">Observation</span>):
output: <span class="hljs-built_in">str</span>
success: <span class="hljs-built_in">bool</span>
<span class="hljs-keyword">class</span> <span class="hljs-title class_">MyState</span>(<span class="hljs-title class_ inherited__">State</span>):
history: <span class="hljs-built_in">list</span>[<span class="hljs-built_in">str</span>] = []`,lang:"python",wrap:!1}}),D=new T({props:{title:"Environment Class",local:"environment-class",headingTag:"h3"}}),K=new j({props:{code:"ZnJvbSUyMG9wZW5lbnYuY29yZS5lbnZfc2VydmVyLmludGVyZmFjZXMlMjBpbXBvcnQlMjBFbnZpcm9ubWVudCUwQSUwQSUwQWNsYXNzJTIwTXlFbnZpcm9ubWVudChFbnZpcm9ubWVudCU1Qk15QWN0aW9uJTJDJTIwTXlPYnNlcnZhdGlvbiUyQyUyME15U3RhdGUlNUQpJTNBJTBBJTIwJTIwJTIwJTIwZGVmJTIwcmVzZXQoc2VsZiUyQyUyMHNlZWQlM0ROb25lJTJDJTIwZXBpc29kZV9pZCUzRE5vbmUlMkMlMjAqKmt3YXJncyklMjAtJTNFJTIwTXlPYnNlcnZhdGlvbiUzQSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMC4uLiUwQSUwQSUyMCUyMCUyMCUyMGRlZiUyMHN0ZXAoc2VsZiUyQyUyMGFjdGlvbiUzQSUyME15QWN0aW9uJTJDJTIwdGltZW91dF9zJTNETm9uZSUyQyUyMCoqa3dhcmdzKSUyMC0lM0UlMjBNeU9ic2VydmF0aW9uJTNBJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwLi4uJTBBJTBBJTIwJTIwJTIwJTIwJTQwcHJvcGVydHklMEElMjAlMjAlMjAlMjBkZWYlMjBzdGF0ZShzZWxmKSUyMC0lM0UlMjBNeVN0YXRlJTNBJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwLi4u",highlighted:`<span class="hljs-keyword">from</span> openenv.core.env_server.interfaces <span class="hljs-keyword">import</span> Environment
<span class="hljs-keyword">class</span> <span class="hljs-title class_">MyEnvironment</span>(Environment[MyAction, MyObservation, MyState]):
<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>) -&gt; MyObservation:
...
<span class="hljs-keyword">def</span> <span class="hljs-title function_">step</span>(<span class="hljs-params">self, action: MyAction, timeout_s=<span class="hljs-literal">None</span>, **kwargs</span>) -&gt; MyObservation:
...
<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>) -&gt; MyState:
...`,lang:"python",wrap:!1}}),ee=new T({props:{title:"Server (FastAPI)",local:"server-fastapi",headingTag:"h3"}}),se=new j({props:{code:"ZnJvbSUyMG9wZW5lbnYuY29yZS5lbnZfc2VydmVyJTIwaW1wb3J0JTIwY3JlYXRlX2FwcCUwQSUwQWFwcCUyMCUzRCUyMGNyZWF0ZV9hcHAoJTBBJTIwJTIwJTIwJTIwTXlFbnZpcm9ubWVudCUyQyUwQSUyMCUyMCUyMCUyME15QWN0aW9uJTJDJTBBJTIwJTIwJTIwJTIwTXlPYnNlcnZhdGlvbiUyQyUwQSUyMCUyMCUyMCUyMGVudl9uYW1lJTNEJTIybXlfZW52JTIyJTJDJTBBKQ==",highlighted:`<span class="hljs-keyword">from</span> openenv.core.env_server <span class="hljs-keyword">import</span> create_app
app = create_app(
MyEnvironment,
MyAction,
MyObservation,
env_name=<span class="hljs-string">&quot;my_env&quot;</span>,
)`,lang:"python",wrap:!1}}),ne=new T({props:{title:"Rewards via the Rubric",local:"rewards-via-the-rubric",headingTag:"h3"}}),ie=new T({props:{title:"Next Steps",local:"next-steps",headingTag:"h2"}}),re=new Qt({props:{source:"https://github.com/huggingface/openenv/blob/main/docs/source/guides/concepts.md"}}),{c(){w=d("meta"),ce=n(),oe=d("p"),de=n(),i(J.$$.fragment),me=n(),i(h.$$.fragment),Te=n(),u=d("p"),u.textContent=it,ye=n(),i(U.$$.fragment),je=n(),i($.$$.fragment),we=n(),i(f.$$.fragment),Je=n(),b=d("p"),b.innerHTML=pt,he=n(),i(v.$$.fragment),ue=n(),A=d("p"),A.innerHTML=rt,Ue=n(),i(g.$$.fragment),$e=n(),i(C.$$.fragment),fe=n(),I=d("p"),I.innerHTML=ot,be=n(),i(B.$$.fragment),ve=n(),i(S.$$.fragment),Ae=n(),Q=d("p"),Q.innerHTML=Mt,ge=n(),_=d("ul"),_.innerHTML=ct,Ce=n(),i(k.$$.fragment),Ie=n(),W=d("p"),W.innerHTML=dt,Be=n(),i(E.$$.fragment),Se=n(),Z=d("p"),Z.innerHTML=mt,Qe=n(),i(N.$$.fragment),_e=n(),i(G.$$.fragment),ke=n(),i(L.$$.fragment),We=n(),i(R.$$.fragment),Ee=n(),V=d("table"),V.innerHTML=Tt,Ze=n(),i(X.$$.fragment),Ne=n(),z=d("p"),z.textContent=yt,Ge=n(),i(Y.$$.fragment),Le=n(),i(H.$$.fragment),Re=n(),i(x.$$.fragment),Ve=n(),i(O.$$.fragment),Xe=n(),F=d("p"),F.innerHTML=jt,ze=n(),i(P.$$.fragment),Ye=n(),i(D.$$.fragment),He=n(),q=d("p"),q.innerHTML=wt,xe=n(),i(K.$$.fragment),Oe=n(),i(ee.$$.fragment),Fe=n(),te=d("p"),te.innerHTML=Jt,Pe=n(),i(se.$$.fragment),De=n(),le=d("p"),le.innerHTML=ht,qe=n(),i(ne.$$.fragment),Ke=n(),ae=d("p"),ae.innerHTML=ut,et=n(),i(ie.$$.fragment),tt=n(),pe=d("ul"),pe.innerHTML=Ut,st=n(),i(re.$$.fragment),lt=n(),Me=d("p"),this.h()},l(e){const t=It("svelte-u9bgzb",document.head);w=m(t,"META",{name:!0,content:!0}),t.forEach(s),ce=a(e),oe=m(e,"P",{}),$t(oe).forEach(s),de=a(e),p(J.$$.fragment,e),me=a(e),p(h.$$.fragment,e),Te=a(e),u=m(e,"P",{"data-svelte-h":!0}),y(u)!=="svelte-1t0ocwp"&&(u.textContent=it),ye=a(e),p(U.$$.fragment,e),je=a(e),p($.$$.fragment,e),we=a(e),p(f.$$.fragment,e),Je=a(e),b=m(e,"P",{"data-svelte-h":!0}),y(b)!=="svelte-132not7"&&(b.innerHTML=pt),he=a(e),p(v.$$.fragment,e),ue=a(e),A=m(e,"P",{"data-svelte-h":!0}),y(A)!=="svelte-97fx7p"&&(A.innerHTML=rt),Ue=a(e),p(g.$$.fragment,e),$e=a(e),p(C.$$.fragment,e),fe=a(e),I=m(e,"P",{"data-svelte-h":!0}),y(I)!=="svelte-4k1td9"&&(I.innerHTML=ot),be=a(e),p(B.$$.fragment,e),ve=a(e),p(S.$$.fragment,e),Ae=a(e),Q=m(e,"P",{"data-svelte-h":!0}),y(Q)!=="svelte-1kudclj"&&(Q.innerHTML=Mt),ge=a(e),_=m(e,"UL",{"data-svelte-h":!0}),y(_)!=="svelte-107vvqj"&&(_.innerHTML=ct),Ce=a(e),p(k.$$.fragment,e),Ie=a(e),W=m(e,"P",{"data-svelte-h":!0}),y(W)!=="svelte-fhhojp"&&(W.innerHTML=dt),Be=a(e),p(E.$$.fragment,e),Se=a(e),Z=m(e,"P",{"data-svelte-h":!0}),y(Z)!=="svelte-12bzk92"&&(Z.innerHTML=mt),Qe=a(e),p(N.$$.fragment,e),_e=a(e),p(G.$$.fragment,e),ke=a(e),p(L.$$.fragment,e),We=a(e),p(R.$$.fragment,e),Ee=a(e),V=m(e,"TABLE",{"data-svelte-h":!0}),y(V)!=="svelte-y858m4"&&(V.innerHTML=Tt),Ze=a(e),p(X.$$.fragment,e),Ne=a(e),z=m(e,"P",{"data-svelte-h":!0}),y(z)!=="svelte-2ibhqe"&&(z.textContent=yt),Ge=a(e),p(Y.$$.fragment,e),Le=a(e),p(H.$$.fragment,e),Re=a(e),p(x.$$.fragment,e),Ve=a(e),p(O.$$.fragment,e),Xe=a(e),F=m(e,"P",{"data-svelte-h":!0}),y(F)!=="svelte-f0ueuw"&&(F.innerHTML=jt),ze=a(e),p(P.$$.fragment,e),Ye=a(e),p(D.$$.fragment,e),He=a(e),q=m(e,"P",{"data-svelte-h":!0}),y(q)!=="svelte-1xuxg3s"&&(q.innerHTML=wt),xe=a(e),p(K.$$.fragment,e),Oe=a(e),p(ee.$$.fragment,e),Fe=a(e),te=m(e,"P",{"data-svelte-h":!0}),y(te)!=="svelte-x9mbyn"&&(te.innerHTML=Jt),Pe=a(e),p(se.$$.fragment,e),De=a(e),le=m(e,"P",{"data-svelte-h":!0}),y(le)!=="svelte-ns4tn5"&&(le.innerHTML=ht),qe=a(e),p(ne.$$.fragment,e),Ke=a(e),ae=m(e,"P",{"data-svelte-h":!0}),y(ae)!=="svelte-op9d1b"&&(ae.innerHTML=ut),et=a(e),p(ie.$$.fragment,e),tt=a(e),pe=m(e,"UL",{"data-svelte-h":!0}),y(pe)!=="svelte-b3vify"&&(pe.innerHTML=Ut),st=a(e),p(re.$$.fragment,e),lt=a(e),Me=m(e,"P",{}),$t(Me).forEach(s),this.h()},h(){ft(w,"name","hf:doc:metadata"),ft(w,"content",kt)},m(e,t){Bt(document.head,w),l(e,ce,t),l(e,oe,t),l(e,de,t),r(J,e,t),l(e,me,t),r(h,e,t),l(e,Te,t),l(e,u,t),l(e,ye,t),r(U,e,t),l(e,je,t),r($,e,t),l(e,we,t),r(f,e,t),l(e,Je,t),l(e,b,t),l(e,he,t),r(v,e,t),l(e,ue,t),l(e,A,t),l(e,Ue,t),r(g,e,t),l(e,$e,t),r(C,e,t),l(e,fe,t),l(e,I,t),l(e,be,t),r(B,e,t),l(e,ve,t),r(S,e,t),l(e,Ae,t),l(e,Q,t),l(e,ge,t),l(e,_,t),l(e,Ce,t),r(k,e,t),l(e,Ie,t),l(e,W,t),l(e,Be,t),r(E,e,t),l(e,Se,t),l(e,Z,t),l(e,Qe,t),r(N,e,t),l(e,_e,t),r(G,e,t),l(e,ke,t),r(L,e,t),l(e,We,t),r(R,e,t),l(e,Ee,t),l(e,V,t),l(e,Ze,t),r(X,e,t),l(e,Ne,t),l(e,z,t),l(e,Ge,t),r(Y,e,t),l(e,Le,t),r(H,e,t),l(e,Re,t),r(x,e,t),l(e,Ve,t),r(O,e,t),l(e,Xe,t),l(e,F,t),l(e,ze,t),r(P,e,t),l(e,Ye,t),r(D,e,t),l(e,He,t),l(e,q,t),l(e,xe,t),r(K,e,t),l(e,Oe,t),r(ee,e,t),l(e,Fe,t),l(e,te,t),l(e,Pe,t),r(se,e,t),l(e,De,t),l(e,le,t),l(e,qe,t),r(ne,e,t),l(e,Ke,t),l(e,ae,t),l(e,et,t),r(ie,e,t),l(e,tt,t),l(e,pe,t),l(e,st,t),r(re,e,t),l(e,lt,t),l(e,Me,t),nt=!0},p:vt,i(e){nt||(o(J.$$.fragment,e),o(h.$$.fragment,e),o(U.$$.fragment,e),o($.$$.fragment,e),o(f.$$.fragment,e),o(v.$$.fragment,e),o(g.$$.fragment,e),o(C.$$.fragment,e),o(B.$$.fragment,e),o(S.$$.fragment,e),o(k.$$.fragment,e),o(E.$$.fragment,e),o(N.$$.fragment,e),o(G.$$.fragment,e),o(L.$$.fragment,e),o(R.$$.fragment,e),o(X.$$.fragment,e),o(Y.$$.fragment,e),o(H.$$.fragment,e),o(x.$$.fragment,e),o(O.$$.fragment,e),o(P.$$.fragment,e),o(D.$$.fragment,e),o(K.$$.fragment,e),o(ee.$$.fragment,e),o(se.$$.fragment,e),o(ne.$$.fragment,e),o(ie.$$.fragment,e),o(re.$$.fragment,e),nt=!0)},o(e){M(J.$$.fragment,e),M(h.$$.fragment,e),M(U.$$.fragment,e),M($.$$.fragment,e),M(f.$$.fragment,e),M(v.$$.fragment,e),M(g.$$.fragment,e),M(C.$$.fragment,e),M(B.$$.fragment,e),M(S.$$.fragment,e),M(k.$$.fragment,e),M(E.$$.fragment,e),M(N.$$.fragment,e),M(G.$$.fragment,e),M(L.$$.fragment,e),M(R.$$.fragment,e),M(X.$$.fragment,e),M(Y.$$.fragment,e),M(H.$$.fragment,e),M(x.$$.fragment,e),M(O.$$.fragment,e),M(P.$$.fragment,e),M(D.$$.fragment,e),M(K.$$.fragment,e),M(ee.$$.fragment,e),M(se.$$.fragment,e),M(ne.$$.fragment,e),M(ie.$$.fragment,e),M(re.$$.fragment,e),nt=!1},d(e){e&&(s(ce),s(oe),s(de),s(me),s(Te),s(u),s(ye),s(je),s(we),s(Je),s(b),s(he),s(ue),s(A),s(Ue),s($e),s(fe),s(I),s(be),s(ve),s(Ae),s(Q),s(ge),s(_),s(Ce),s(Ie),s(W),s(Be),s(Se),s(Z),s(Qe),s(_e),s(ke),s(We),s(Ee),s(V),s(Ze),s(Ne),s(z),s(Ge),s(Le),s(Re),s(Ve),s(Xe),s(F),s(ze),s(Ye),s(He),s(q),s(xe),s(Oe),s(Fe),s(te),s(Pe),s(De),s(le),s(qe),s(Ke),s(ae),s(et),s(tt),s(pe),s(st),s(lt),s(Me)),s(w),c(J,e),c(h,e),c(U,e),c($,e),c(f,e),c(v,e),c(g,e),c(C,e),c(B,e),c(S,e),c(k,e),c(E,e),c(N,e),c(G,e),c(L,e),c(R,e),c(X,e),c(Y,e),c(H,e),c(x,e),c(O,e),c(P,e),c(D,e),c(K,e),c(ee,e),c(se,e),c(ne,e),c(ie,e),c(re,e)}}}const kt='{"title":"Concepts","local":"concepts","sections":[{"title":"Key Abstractions","local":"key-abstractions","sections":[{"title":"Environment","local":"environment","sections":[],"depth":3},{"title":"Action","local":"action","sections":[],"depth":3},{"title":"Observation","local":"observation","sections":[],"depth":3},{"title":"StepResult","local":"stepresult","sections":[],"depth":3},{"title":"Rubric","local":"rubric","sections":[],"depth":3},{"title":"Client","local":"client","sections":[],"depth":3}],"depth":2},{"title":"The Step Loop","local":"the-step-loop","sections":[],"depth":2},{"title":"Connection Methods","local":"connection-methods","sections":[],"depth":2},{"title":"Environment Anatomy","local":"environment-anatomy","sections":[{"title":"The Manifest (openenv.yaml)","local":"the-manifest-openenvyaml","sections":[],"depth":3},{"title":"Models (Pydantic)","local":"models-pydantic","sections":[],"depth":3},{"title":"Environment Class","local":"environment-class","sections":[],"depth":3},{"title":"Server (FastAPI)","local":"server-fastapi","sections":[],"depth":3},{"title":"Rewards via the Rubric","local":"rewards-via-the-rubric","sections":[],"depth":3}],"depth":2},{"title":"Next Steps","local":"next-steps","sections":[],"depth":2}],"depth":1}';function Wt(at){return At(()=>{new URLSearchParams(window.location.search).get("fw")}),[]}class Rt extends gt{constructor(w){super(),Ct(this,w,Wt,_t,bt,{})}}export{Rt as component};

Xet Storage Details

Size:
25.7 kB
·
Xet hash:
14aa1c76f7536ce385815db4ecb024f743d447501431f099c13814482e5de590

Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.