Skip to content

sotopia-lab/sotopia

Repository files navigation

sotopia

Sotopia: an Open-ended Social Learning Environment

pypi versions CI codecov Colab

Project Page Paper PDF Dataset Demo

News

  • [05/2024] Sotopia was presented at ICLR 2024 as a spotlight ⭐!

Introduction

Sotopia is an open-ended social learning environment that allows agents to interact with each other and the environment. The environment is designed to be a platform for evaluating and faciliating social intelligence in language agents. The environment is designed to be open-ended, meaning that the environment can be easily extended to include new environments and new agents. The environment is also designed to be scalable, meaning that the environment can be easily scaled to include a large number of agents and environments.

@inproceedings{zhou2024sotopia,
  title = {SOTOPIA: Interactive Evaluation for Social Intelligence in Language Agents},
  author = {Zhou*, Xuhui and Zhu*, Hao and Mathur, Leena and Zhang, Ruohong and Qi, Zhengyang and Yu, Haofei and Morency, Louis-Philippe and Bisk, Yonatan and Fried, Daniel and Neubig, Graham and Sap, Maarten},
  journal = {ICLR},
  year = {2024},
  url = {https://openreview.net/forum?id=mM7VurbA4r},
}

Help

See documentation for more details.

Important

If you are trying to develop on top of Sotopia, we highly recommend to follow the development guide.

Get started

Install locally

We recommend using a virtual environment, e.g. with uv: pip install uv; uv sync --all-extras.

Note

You can of course use any other package manager to install the dependencies (e.g. pip, conda, etc.). But we strongly recommend using uv, especially for the development of Sotopia.

Then: uv run sotopia install

Warning

We recommend you using docker for setting up the redis server. Other installation methods have been shown to be error-prone.

This will setup the necessary environment variables and download the necessary data.

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

Easy Sample Server

You can view an episode demo with default parameters with the following:

import asyncio
from sotopia.samplers import UniformSampler
from sotopia.server import run_async_server

asyncio.run(
    run_async_server(
        model_dict={
            "env": "gpt-4",
            "agent1": "gpt-4o-mini",
            "agent2": "gpt-4o-mini",
        },
        sampler=UniformSampler(),
    )
)

Warning

You won't be able to run the server locally if you don't have any datasets installed.

or run

python examples/minimalist_demo.py