CliDyn / climsight

prototype of a system that provide local climate information
BSD 3-Clause "New" or "Revised" License
27 stars 9 forks source link

Climate Foresight

Prototype of a system that answers questions about climate change impacts on planned human activities. screencast

Running with docker

simplest: running prebuild container

You should have Docker installed. Then execute:

docker pull koldunovn/climsight:stable
docker run -p 8501:8501 -e OPENAI_API_KEY=$OPENAI_API_KEY climsight

Then open http://localhost:8501/ in your browser.

Build and run container with the latest code

You should have the following packages installed:

As long as you have them, do:

git clone https://github.com/koldunovn/climsight.git
cd climsight
./download_data.sh
docker build -t climsight .
docker run -p 8501:8501 climsight

Then open http://localhost:8501/ in your browser. If you don't want to add OpenAI key every time, you can expose it through:

docker run -p 8501:8501 -e OPENAI_API_KEY=$OPENAI_API_KEY climsight

where $OPENAI_API_KEY not necessarily should be environment variable, you can insert the key directly.

If you do not have an OpenAI key but want to test Climsight without sending requests to OpenAI, you can run Climsight with the skipLLMCall argument:

docker run -p 8501:8501 -e STREAMLIT_ARGS="skipLLMCall" climsight

Installation

The easiest way is to install it through conda or mamba. We recommend mamba, as it's faster.

Install mamba if you don't have it.

git clone https://github.com/koldunovn/climsight.git
cd climsight

Create environment and install necessary packages:


mamba env create -f environment.yml

Activate the environment:

conda activate climsight

Climsight package installation

pip install climsight

For installation, use either pip alone for all packages and dependencies in a pure Python setup, or use mamba for dependencies followed by pip for Climsight in a Conda environment. Mixing package sources can lead to conflicts and is generally not recommended.

Before you run

You have to download example climate data and NaturalEarth coastlines. To do it simply run:

python download_data.py

You would also need an OpenAI API key to run the prototype. You can provide it as environment variable:

export OPENAI_API_KEY="???????"

config settings There is a possibility to also provide it in the running app. The cost of each request (status September 2023) is about 6 cents with gpt-4 and about 0.3 cents with gpt-3.5-turbo (you can change it in the config file). Moreover, if you want to use your own climate data, please adjust the data_settings, variable_mappings, and dimension_mappings according to the structure of your NetCDF files.

And you need to export the path of the configuration file. If you don't want to exchange anything and just test the prepared version, simply run

export CONFIG_PATH="./config.yml"

Otherwise you might want to adjust this path to direct to an individual config file, but keep in mind that it must be a path relative to the one from where you are running climsight. Also, you will have to adjust the paths in the config file you are using to point back to the climsight data folder.

There is a possibility to also provide it in the running app. The cost of each request (status September 2023) is about 6 cents with gpt-4 and about 0.3 cents with gpt-3.5-turbo (you can change it in the beggining of climsight.py script).

Running

Change to the climsight folder:

cd climsight
streamlit run src/climsight/climsight.py

If you install climsight via pip, make sure to run it in the directory where the data folder has been downloaded:

climsight

The browser window should pop up, with the app running. Ask the questions and don't forget to press "Generate".

Screenshot 2023-09-26 at 15 26 51

If you do not have an OpenAI key but want to test Climsight without sending requests to OpenAI, you can run Climsight with the skipLLMCall argument:

streamlit run src/climsight/climsight.py skipLLMCall

Citation

If you use or refer to ClimSight in your work, please cite the following publication:

Koldunov, N., Jung, T. Local climate services for all, courtesy of large language models. Commun Earth Environ 5, 13 (2024). https://doi.org/10.1038/s43247-023-01199-1