This repository hosts the source code for Lemming: A Guided Disambiguation Tool for Plan Selection. Lemming makes use of landmarks to proactively guide the user to select a plan from a set of plans while greedily minimizing the number of disambiguation points. It also provides multiple views into the set of plans that need to be disambiguated, reflecting different considerations for the user in terms of how much information they need to deal with during the disambiguation process.
🏆 The first Lemming appears in the ICAPS 2023 System Demonstration Track in Prague, where its integration with the NL2LTL package was the runners-up for the People's Choice Best System Demonstration Award. Read more about it here.
Pull down the repository.
user:~$ git clone [email protected]:IBM/lemming.git --recursive
user:~$ cd lemming
Build a front-end image.
user:~$ yarn install
user:~$ yarn build
To build a Backend image, pip can be configured with pip.conf at the project root. This is to go around sporadic python index server issues. Your OpenAI API Key (OPENAI_API_KEY) should be defined in backend.env to use NL2LTL service at the backend. For security, backend.env should be removed after the deployment.
To bring up Lemming service,
docker-compose --env-file backend.env -f docker-compose.yml up
To teardown Lemming service,
docker-compose -f docker-compose.yml down
user:~$ git clone [email protected]:IBM/lemming.git --recursive
user:~$ cd lemmingWe also strongly recommend using a virtual environment, such as anaconda, for development.
user:~$ conda create --name lemming python=3.10.11
user:~$ conda activate lemming(lemming) user:~$ pip install -e .First, install nl2ltl and plan4past with:
(lemming) user:~$ pip install -e ".[nl2ltl]"Then, build the symk planner with:
(lemming) user:~$ ./scripts/build-submodules.sh(Make sure you have autoconf, automake, cmake, g++, libtool, and
make pre-installed on your system).
In order to use the NL2LTL Integration, don't forget to add your OpenAI API key
to your environment variables with the name OPENAI_API_KEY.
(lemming) user:~$ export OPENAI_API_KEY=<your_openai_api_key>The Swagger page will show up at http://localhost:8000/docs. The OpenAPI spec can be obtained from the swagger page.
(lemming) user:~$ python -m uvicorn main:app --reloaduser:~$ yarn install
user:~$ yarn startContributions are welcome! 🤗 For instructions on setting up, go here.
You can install dev dependencies with:
(lemming) user:~$ pip install -e ".[dev]"@inproceedings{lemming,
title={{Lemming: A Guided Disambiguation Tool for Plan Selection}},
author={Jungkoo Kang and Tathagata Chakraborti and Michael Katz and Shirin Sohrabi and Francesco Fuggitti},
booktitle={ICAPS System Demonstration Track},
year={2023}}