Research Town is a multi-agent platform designed for language agent researchers to study automatic research. It includes three main components and allow flexible combination for different research workflow:
- 🤖 Agents: LLM-driven research agents capable of skills such as reading papers, writing papers, discussing ideas, rebutting arguments, and writing reviews.
- 🚪 Environments: Multi-agent environments, similar to virtual study rooms, where research agents collaborate on tasks like idea discussion, rebuttal writing, or paper writing.
- ⚙️ Engines: Finite-state machines that manage agent involvement in environments and determine the next steps after task completion. For instance, engines guide agents coming out of idea discussion environment to paper writing environment and help select suitable agents to work together.
Different from previous work, research town is a comprehensive, interactive, and realistic simulator for research community:
- ⭕️ Comprehensive: It simulates the overall reserach lifecycle from literature review and idea generation, to review writing and meta review decision release.
- ⏯️ Interactive: LLM generated research progress like generated idea, paper, and review can be checked and modified by human researchers.
- 👩🏻🔬 Realistic: Each research agent in the town is role-playing human researchers conditioned on their previous research experience.
You can install research_town
from pypi
to use it as a package:
pip install research_town
Use a virtual environment, e.g. with anaconda3:
conda create -n research_town python=3.10
conda activate research_town
curl -sSL https://install.python-poetry.org | python3
Then, install the requirements and this package with one command line:
poetry install
OpenAI key is required to run the code. Please set the environment variable OPENAI_API_KEY
to your key. The recommend way is to add the key to the conda environment:
conda env config vars set OPENAI_API_KEY=your_key
For some experiments, TogetherAI key is required to run the code. Please set the environment variable TOGETHERAI_API_KEY
to your key (notice: not TOGETHER_API_KEY
). The recommend way is to add the key to the conda environment:
conda env config vars set TOGETHER_API_KEY=your_key
Follow the installation instruction above and then, instead of running python -m pip install -e .
, run the following commands:
python -m pip install -e ".[dev]"
mypy --install-types --non-interactive research_town
python -m pip install pre-commit
pre-commit install
The installation of pre-commit would avoid formatting error and large file injects into github commits.
git checkout -b feature/feature-name
and PR to main
branch.
Run poetry run pytest
to make sure all tests pass (this will ensure dynamic typing passed with beartype) and poetry run mypy --config-file pyproject.toml .
to check static typing. (You can also run pre-commit run --all-files
to run all checks)
Check the github action result to make sure all tests pass. If not, fix the errors and push again.