Research Town is a multi-agent platform designed for studying community-level automatic research. To achieve community-based simulation, it defines:
🤖 Researcher: LLM 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.
Get started
Install from pip (WIP)
You can install research_town from pypi to use it as a package:
To develop the UI part (both frontend and backend):
cd frontend
npm install
npm start
cd backend
uvicorn main:app --reload
Configure API keys
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
Developing
Install dev options
Follow the installation instruction above and then, instead of running python -m pip install -e ., run the following commands:
The installation of pre-commit would avoid formatting error and large file injects into github commits.
New branch for each feature
git checkout -b feature/feature-name and PR to main branch.
Before committing
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 github action result
Check the github action result to make sure all tests pass. If not, fix the errors and push again.