Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/openai/gym-http-api
API to access OpenAI Gym from other languages via HTTP
https://github.com/openai/gym-http-api
Last synced: 5 days ago
JSON representation
API to access OpenAI Gym from other languages via HTTP
- Host: GitHub
- URL: https://github.com/openai/gym-http-api
- Owner: openai
- License: mit
- Created: 2016-06-03T15:15:40.000Z (over 8 years ago)
- Default Branch: master
- Last Pushed: 2023-04-02T11:59:02.000Z (almost 2 years ago)
- Last Synced: 2025-01-19T12:08:53.180Z (12 days ago)
- Language: Python
- Size: 252 KB
- Stars: 294
- Watchers: 166
- Forks: 140
- Open Issues: 20
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-haskell-deep-learning - gym-http-api - source library, includes a Haskell client by [Sam Stites](https://github.com/stites) (Haskell Packages / Packages Under Active Development)
README
**Status:** Archive (code is provided as-is, no updates expected)
gym-http-api
============This project provides a local REST API to the [gym](https://github.com/openai/gym) open-source library, allowing development in languages other than python.
A python client is included, to demonstrate how to interact with the server.
Contributions of clients in other languages are welcomed!
Installation
============To download the code and install the requirements, you can run the following shell commands:
git clone https://github.com/openai/gym-http-api
cd gym-http-api
pip install -r requirements.txtGetting started
============This code is intended to be run locally by a single user. The server runs in python. You can implement your own HTTP clients using any language; a demo client written in python is provided to demonstrate the idea.
To start the server from the command line, run this:
python gym_http_server.py
In a separate terminal, you can then try running the example python agent and see what happens:
python example_agent.py
The example lua agent behaves very similarly:
cd binding-lua
lua example_agent.luaYou can also write code like this to create your own client, and test it out by creating a new environment. For example, in python:
remote_base = 'http://127.0.0.1:5000'
client = Client(remote_base)env_id = 'CartPole-v0'
instance_id = client.env_create(env_id)
client.env_step(instance_id, 0)Testing
============This repository contains integration tests, using the python client implementation to send requests to the local server. They can be run using the `nose2` framework. From a shell (such as bash) you can run nose2 directly:
cd gym-http-api
nose2API specification
============* POST `/v1/envs/`
* Create an instance of the specified environment
* param: `env_id` -- gym environment ID string, such as 'CartPole-v0'
* returns: `instance_id` -- a short identifier (such as '3c657dbc')
for the created environment instance. The instance_id is
used in future API calls to identify the environment to be
manipulated* GET `/v1/envs/`
* List all environments running on the server
* returns: `envs` -- dict mapping `instance_id` to `env_id`
(e.g. `{'3c657dbc': 'CartPole-v0'}`) for every env on the server* POST `/v1/envs//reset/`
* Reset the state of the environment and return an initial
observation.
* param: `instance_id` -- a short identifier (such as '3c657dbc')
for the environment instance
* returns: `observation` -- the initial observation of the space* POST `/v1/envs//step/`
* Step though an environment using an action.
* param: `instance_id` -- a short identifier (such as '3c657dbc')
for the environment instance
* param: `action` -- an action to take in the environment
* returns: `observation` -- agent's observation of the current
environment
* returns: `reward` -- amount of reward returned after previous action
* returns: `done` -- whether the episode has ended
* returns: `info` -- a dict containing auxiliary diagnostic information* GET `/v1/envs//action_space/`
* Get information (name and dimensions/bounds) of the env's
`action_space`
* param: `instance_id` -- a short identifier (such as '3c657dbc')
for the environment instance
* returns: `info` -- a dict containing 'name' (such as 'Discrete'), and
additional dimensional info (such as 'n') which varies from
space to space* GET `/v1/envs//observation_space/`
* Get information (name and dimensions/bounds) of the env's
`observation_space`
* param: `instance_id` -- a short identifier (such as '3c657dbc')
for the environment instance
* returns: `info` -- a dict containing 'name' (such as 'Discrete'), and
additional dimensional info (such as 'n') which varies from
space to space* POST `/v1/envs//monitor/start/`
* Start monitoring
* param: `instance_id` -- a short identifier (such as '3c657dbc')
for the environment instance
* param: `force` (default=False) -- Clear out existing training
data from this directory (by deleting every file
prefixed with "openaigym.")
* param: `resume` (default=False) -- Retain the training data
already in this directory, which will be merged with
our new data
* (NOTE: the `video_callable` parameter from the native
`env.monitor.start` function is NOT implemented)* POST `/v1/envs//monitor/close/`
* Flush all monitor data to disk
* param: `instance_id` -- a short identifier (such as '3c657dbc')
for the environment instance* POST `/v1/upload/`
* Flush all monitor data to disk
* param: `training_dir` -- A directory containing the results of a
training run.
* param: `api_key` -- Your OpenAI API key
* param: `algorithm_id` (default=None) -- An arbitrary string
indicating the paricular version of the algorithm
(including choices of parameters) you are running.* POST `/v1/shutdown/`
* Request a server shutdown
* Currently used by the integration tests to repeatedly create and destroy fresh copies of the server running in a separate threadContributors
============See the [contributors page] (https://github.com/openai/gym-http-api/graphs/contributors)