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 | |
|---|---|---|---|
| craftext-0.2.2.tar.gz | 101.7 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| craftext-0.2.2-py3-none-any.whl | Python 3 | none | any | Details |
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
|