Skip to main content

ScienceWorld: An interactive text environment to study AI agents on accomplishing tasks from the standardized elementary science curriculum.

Project description

ScienceWorld

ScienceWorld is a text-based virtual environment centered around accomplishing tasks from the standardized elementary science curriculum. This code accompanies the paper ScienceWorld: Is your Textual Agent Smarter than a 5th grader?.

Demo and examples

You can try ScienceWorld yourself via our HuggingFace Space or read some of the playthrough transcripts.

Citation

@misc{scienceworld2022,
    title={ScienceWorld: Is your Agent Smarter than a 5th Grader?},
    author={Ruoyao Wang and Peter Jansen and Marc-Alexandre C{\^o}t{\'e} and Prithviraj Ammanabrolu},
    year={2022},
    eprint={2203.07540},
    archivePrefix={arXiv},
    primaryClass={cs.CL},
    url={https://arxiv.org/abs/2203.07540}
}

Quickstart

Before running: You will have to have Java 1.8+ installed on your system (shipped with most linux distributions).

Install with pip:

conda create --name scienceworld python=3.8
conda activate scienceworld
pip install scienceworld

Run an example random agent, on task 13 (classification: place a non-living thing in a box), for 5 episodes:

python examples/random_agent.py --task-num=13 --num-episodes=5 --simplifications-preset easy

Run a user console where you can interact with the environment, on task 3 (change of state: melting):

python examples/human.py --task-num=3 --num-episodes=5

Web Server Demo

A web server demo is also available, that allows running a ScienceWorld user console that can be interacted with in a web browser.

To run the web server demo:

conda create --name scienceworld python=3.8
conda activate scienceworld
pip install scienceworld[webserver]

Run the web server:

python examples/scienceworld-web-server-example.py

Point your web browser to: localhost:8080

ScienceWorld Design

ScienceWorld is written in Scala (2.12.9), and compiles using sbt into a JAR file that is run with Java. For convenience, a Python API is provided (Python >= 3.7), which interfaces using the py4j package.

Tasks

The tasks are listed in the table below along with their number of variations. Either the task ID or its name can be used to a task with env.load().

Task ID Task Name # Variations
1-1 boil 30
1-2 melt 30
1-3 freeze 30
1-4 change-the-state-of-matter-of 30
2-1 use-thermometer 540
2-2 measure-melting-point-known-substance 436
2-3 measure-melting-point-unknown-substance 300
3-1 power-component 20
3-2 power-component-renewable-vs-nonrenewable-energy 20
3-3 test-conductivity 900
3-4 test-conductivity-of-unknown-substances 600
4-1 find-living-thing 300
4-2 find-non-living-thing 300
4-3 find-plant 300
4-4 find-animal 300
5-1 grow-plant 126
5-2 grow-fruit 126
6-1 chemistry-mix 32
6-2 chemistry-mix-paint-secondary-color 36
6-3 chemistry-mix-paint-tertiary-color 36
7-1 lifespan-longest-lived 125
7-2 lifespan-shortest-lived 125
7-3 lifespan-longest-lived-then-shortest-lived 125
8-1 identify-life-stages-1 14
8-2 identify-life-stages-2 10
9-1 inclined-plane-determine-angle 168
9-2 inclined-plane-friction-named-surfaces 1386
9-3 inclined-plane-friction-unnamed-surfaces 162
10-1 mendelian-genetics-known-plant 120
10-2 mendelian-genetics-unknown-plant 480

Baseline Agents

DRRN: https://github.com/cognitiveailab/drrn-scienceworld

KG-A2C: https://github.com/cognitiveailab/kga2c-scienceworld

CALM: https://github.com/cognitiveailab/calm-scienceworld

Behavior Cloning and Decision Transformer: https://github.com/cognitiveailab/t5-scienceworld

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

scienceworld-1.2.0.tar.gz (7.3 MB view details)

Uploaded Source

Built Distribution

scienceworld-1.2.0-py3-none-any.whl (7.3 MB view details)

Uploaded Python 3

File details

Details for the file scienceworld-1.2.0.tar.gz.

File metadata

  • Download URL: scienceworld-1.2.0.tar.gz
  • Upload date:
  • Size: 7.3 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.9.13

File hashes

Hashes for scienceworld-1.2.0.tar.gz
Algorithm Hash digest
SHA256 a592bab16ac112b33e618f0b1c7dc2c56ac620cdfae2e50bd3f2a7ab607ad551
MD5 7fd86ba3a2ad8893fe437027bce57d68
BLAKE2b-256 cc5bab8aecfdc6a139dcd0edf461120feec64315de16d9508eb646cf55cd447f

See more details on using hashes here.

File details

Details for the file scienceworld-1.2.0-py3-none-any.whl.

File metadata

File hashes

Hashes for scienceworld-1.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 bd7e58c9cc2a2a77be4cbb5e73a7ea2e95c695794095f5a11e9281b344695301
MD5 4d39e5b9de062db83d4629f6e7c790d3
BLAKE2b-256 3c3df30af258a3495e6a5b06621bd2273efe3845eadb6f0e44a266778ae66e14

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page