CrafText Benchmark: Advancing Instruction Following in Complex Multimodal Open-Ended World
CrafText is a goal-conditioned extension of the Craftax environment, designed as a benchmark for multimodal reinforcement learning. It enables agents to follow natural language instructions grounded in rich, visual environments inspired by Minecraft, combining vision and language to guide complex action sequences.
✨ Key Features
-
Natural Language Objectives Agents are driven by instructions such as “place a crafting table near a tree” or “build a square with stone blocks,” requiring them to reason over both spatial layouts and object interactions.
-
Diverse Scenario Library Tasks are defined in
CrafText/craftext/dataset/scenarious, offering a wide range of instruction types and complexities—from basic object placement to multi-step crafting chains. -
Automated Instruction Checkers Each task includes a custom checker located in
craftext/environment/scenarious/checkers, which programmatically verifies whether the agent has fulfilled the specified goal. -
Environment Integration Layer The wrapper in
craftext_wrapper.pyenriches the base environment with dynamic goal injection and success feedback.
Visual Examples
| Place Crafting Table Near Tree | Place Crafting Table Near Water | Make Square of Stone |
|---|---|---|
Installation
-
Clone the repository.
-
Create a virtual environment and install the dependencies from
requirements.txt:conda create --name craftext python=3.9 conda activate craftext pip install -r requirements.txt
-
Navigate to the repository and install the dataset:
cd CrafText pip install -e .
Here is your updated section with improved formatting, added explanation, and a Basic Usage code block that includes block-style markdown syntax, as well as clarifying comments and structure for better readability:
🧪 Basic Usage
from craftext.enviroment.craftext_wrapper import InstructionWrapper
from craftext.dataset.scenarious import ScenariousManager
from craftext.models.encode import DistilBertEncode, EncodeForm
import jax
import jax.numpy as jnp
# Step 1: Create Craftax environment
env: CraftaxClassicPixelsEnv = make_craftax_env_from_name(
"Craftax-Classic-Pixels-v1",
auto_reset=False
)
# Step 2: Wrap with CrafText
wrapper = InstructionWrapper(
env=env,
config_name='simple',
scenario_handler_class=ScenariousManager,
encode_model_class=DistilBertEncode,
encode_form=EncodeForm.EMBEDDING
)
# Step 3: Reset and interact
seed = jax.random.PRNGKey(0)
env_params = env.default_params
obs, state = wrapper.reset(seed, env_params)
print("Initial Observation:", obs)
print("Initial State:", state)
action = jnp.array(0, dtype=jnp.int32)
obs, state, reward, done, info = wrapper.step(seed, state, action, env_params)
Citation
If you use CrafText in your research, please cite:
@article{volovikova2025craftext,
title={CrafText Benchmark: Advancing Instruction Following in Complex Multimodal Open-Ended World},
author={Volovikova, Zoya and Gorbov, Gregory and Kuderov, Petr and Panov, Aleksandr I and Skrynnik, Alexey},
journal={arXiv preprint arXiv:2505.11962},
year={2025}
}
Metadata
Release files for CrafText 0.2.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| craftext-0.2.2.tar.gz | 101.7 kB | Without provenance | Details for craftext-0.2.2.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| craftext-0.2.2-py3-none-any.whl | Python 3 | none | any | Details for craftext-0.2.2-py3-none-any.whl |
Total release size: 241.0 kB
Release files / craftext-0.2.2.tar.gz
| Download URL | craftext-0.2.2.tar.gz |
|---|---|
| Size | 101.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
c6bc7359a9d9a652de3479cb747ab90c00dc3a4902470bda01d053f8f4d2ccab
|
|
BLAKE2b-256 checksum How to use checksums |
d56de42100a97ea1239db321054683fe371c4bb47cb9f82b81ec850d93c63c62
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.9.21
|
Release files / craftext-0.2.2-py3-none-any.whl
| Download URL | craftext-0.2.2-py3-none-any.whl |
|---|---|
| Size | 139.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
a7d13bc8c6af94496d187a702e50cf621ff9940ac45ed2ac6e8ef6c5474e52cc
|
|
BLAKE2b-256 checksum How to use checksums |
2ff50652854ec78d0a71cbb74112897199409772c61ce3d01189fecc6b7302d6
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.9.21
|
Security for CrafText 0.2.2
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.