Metadata-Version: 2.1
Name: ALI-Agent
Version: 0.1.3
Summary: A brief description of your project
Home-page: https://github.com/SophieZheng998/ALI-Agent
Author: Your Name
Author-email: your.email@example.com
Classifier: Programming Language :: Python :: 3
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Requires-Python: >=3.9
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: accelerate==0.24.1
Requires-Dist: aiofiles==23.2.1
Requires-Dist: aiohttp==3.9.3
Requires-Dist: aiosignal==1.3.1
Requires-Dist: annotated-types==0.6.0
Requires-Dist: anyio==3.7.1
Requires-Dist: appdirs==1.4.4
Requires-Dist: argon2-cffi==23.1.0
Requires-Dist: argon2-cffi-bindings==21.2.0
Requires-Dist: arrow==1.3.0
Requires-Dist: asgiref==3.7.2
Requires-Dist: asttokens==3.0.0
Requires-Dist: async-lru==2.0.4
Requires-Dist: async-timeout==4.0.3
Requires-Dist: attrs==23.1.0
Requires-Dist: azure-cognitiveservices-vision-computervision==0.9.0
Requires-Dist: azure-common==1.1.28
Requires-Dist: azure-core==1.29.5
Requires-Dist: azure-search-documents==11.4.0
Requires-Dist: Babel==2.13.1
Requires-Dist: backoff==2.2.1
Requires-Dist: backports.tarfile==1.2.0
Requires-Dist: bcrypt==4.0.1
Requires-Dist: beautifulsoup4==4.12.2
Requires-Dist: bleach==6.1.0
Requires-Dist: blessed==1.20.0
Requires-Dist: brotlipy==0.7.0
Requires-Dist: cachetools==5.3.2
Requires-Dist: certifi==2024.12.14
Requires-Dist: cffi==1.17.1
Requires-Dist: charset-normalizer==3.4.1
Requires-Dist: chroma-hnswlib==0.7.3
Requires-Dist: chromadb==0.4.18
Requires-Dist: click==8.1.7
Requires-Dist: cmake==3.31.4
Requires-Dist: coloredlogs==15.0.1
Requires-Dist: comm==0.2.2
Requires-Dist: contourpy==1.1.0
Requires-Dist: cryptography==44.0.0
Requires-Dist: cycler==0.11.0
Requires-Dist: datasets==2.18.0
Requires-Dist: debugpy==1.8.12
Requires-Dist: decorator==5.1.1
Requires-Dist: deeprobust==0.2.11
Requires-Dist: defusedxml==0.7.1
Requires-Dist: Deprecated==1.2.14
Requires-Dist: dill==0.3.8
Requires-Dist: distro==1.8.0
Requires-Dist: docker-pycreds==0.4.0
Requires-Dist: docstring-parser==0.15
Requires-Dist: docutils==0.21.2
Requires-Dist: dpcpp-cpp-rt==2025.0.4
Requires-Dist: exceptiongroup==1.1.3
Requires-Dist: executing==2.2.0
Requires-Dist: fastapi==0.104.1
Requires-Dist: fastjsonschema==2.19.0
Requires-Dist: ffmpy==0.5.0
Requires-Dist: filelock==3.17.0
Requires-Dist: flatbuffers==23.5.26
Requires-Dist: fonttools==4.42.0
Requires-Dist: fqdn==1.5.1
Requires-Dist: frozenlist==1.4.1
Requires-Dist: fsspec==2023.10.0
Requires-Dist: gensim==4.3.3
Requires-Dist: gitdb==4.0.11
Requires-Dist: GitPython==3.1.40
Requires-Dist: google-ai-generativelanguage==0.4.0
Requires-Dist: google-api-core==2.15.0
Requires-Dist: google-auth==2.23.4
Requires-Dist: google-generativeai==0.3.1
Requires-Dist: googleapis-common-protos==1.61.0
Requires-Dist: gpustat==1.1.1
Requires-Dist: gradio==4.44.1
Requires-Dist: gradio_client==1.3.0
Requires-Dist: grpcio==1.60.0
Requires-Dist: grpcio-status==1.60.0
Requires-Dist: h11==0.14.0
Requires-Dist: httpcore==1.0.2
Requires-Dist: httptools==0.6.1
Requires-Dist: httpx==0.25.2
Requires-Dist: huggingface-hub==0.19.4
Requires-Dist: humanfriendly==10.0
Requires-Dist: id==1.5.0
Requires-Dist: idna==3.10
Requires-Dist: imageio==2.31.1
Requires-Dist: importlib-metadata==6.8.0
Requires-Dist: importlib-resources==6.0.1
Requires-Dist: intel-cmplr-lib-rt==2025.0.4
Requires-Dist: intel-cmplr-lib-ur==2025.0.4
Requires-Dist: intel-cmplr-lic-rt==2025.0.4
Requires-Dist: intel-opencl-rt==2025.0.4
Requires-Dist: intel-openmp==2025.0.4
Requires-Dist: intel-sycl-rt==2025.0.4
Requires-Dist: ipykernel==6.25.2
Requires-Dist: ipython==8.18.0
Requires-Dist: ipywidgets==8.1.1
Requires-Dist: isodate==0.6.1
Requires-Dist: isoduration==20.11.0
Requires-Dist: jaraco.classes==3.4.0
Requires-Dist: jaraco.context==6.0.1
Requires-Dist: jaraco.functools==4.1.0
Requires-Dist: jedi==0.19.2
Requires-Dist: jeepney==0.8.0
Requires-Dist: Jinja2==3.1.5
Requires-Dist: jiter==0.8.2
Requires-Dist: joblib==1.4.2
Requires-Dist: json5==0.9.14
Requires-Dist: jsonpointer==2.4
Requires-Dist: jsonschema==4.20.0
Requires-Dist: jsonschema-specifications==2023.11.1
Requires-Dist: jupyter==1.0.0
Requires-Dist: jupyter-console==6.6.3
Requires-Dist: jupyter-events==0.9.0
Requires-Dist: jupyter-lsp==2.2.1
Requires-Dist: jupyter_client==8.3.1
Requires-Dist: jupyter_core==5.3.2
Requires-Dist: jupyter_server==2.11.1
Requires-Dist: jupyter_server_terminals==0.4.4
Requires-Dist: jupyterlab==4.0.9
Requires-Dist: jupyterlab-widgets==3.0.9
Requires-Dist: jupyterlab_pygments==0.3.0
Requires-Dist: jupyterlab_server==2.25.2
Requires-Dist: keyring==25.6.0
Requires-Dist: kiwisolver==1.4.4
Requires-Dist: kubernetes==28.1.0
Requires-Dist: lazy_loader==0.3
Requires-Dist: lit==18.1.8
Requires-Dist: llvmlite==0.40.1
Requires-Dist: markdown-it-py==3.0.0
Requires-Dist: MarkupSafe==2.1.5
Requires-Dist: matplotlib==3.7.2
Requires-Dist: matplotlib-inline==0.1.7
Requires-Dist: mdurl==0.1.2
Requires-Dist: mistune==3.0.2
Requires-Dist: mkl==2025.0.1
Requires-Dist: mkl-fft==1.3.6
Requires-Dist: mkl-service==2.4.0
Requires-Dist: mmh3==4.0.1
Requires-Dist: monotonic==1.6
Requires-Dist: more-itertools==10.6.0
Requires-Dist: mpmath==1.3.0
Requires-Dist: msrest==0.7.1
Requires-Dist: multidict==6.0.5
Requires-Dist: multiprocess==0.70.16
Requires-Dist: nbclient==0.9.0
Requires-Dist: nbconvert==7.11.0
Requires-Dist: nbformat==5.9.2
Requires-Dist: nest-asyncio==1.5.8
Requires-Dist: networkx==3.2.1
Requires-Dist: nh3==0.2.20
Requires-Dist: notebook==7.0.6
Requires-Dist: notebook_shim==0.2.3
Requires-Dist: numba==0.57.1
Requires-Dist: numpy==1.24.4
Requires-Dist: nvidia-cublas-cu11==11.10.3.66
Requires-Dist: nvidia-cuda-cupti-cu11==11.7.101
Requires-Dist: nvidia-cuda-nvrtc-cu11==11.7.99
Requires-Dist: nvidia-cuda-runtime-cu11==11.7.99
Requires-Dist: nvidia-cudnn-cu11==8.5.0.96
Requires-Dist: nvidia-cufft-cu11==10.9.0.58
Requires-Dist: nvidia-curand-cu11==10.2.10.91
Requires-Dist: nvidia-cusolver-cu11==11.4.0.1
Requires-Dist: nvidia-cusparse-cu11==11.7.4.91
Requires-Dist: nvidia-ml-py==12.535.133
Requires-Dist: nvidia-nccl-cu11==2.14.3
Requires-Dist: nvidia-nvtx-cu11==11.7.91
Requires-Dist: oauthlib==3.2.2
Requires-Dist: onnxruntime==1.16.3
Requires-Dist: opentelemetry-api==1.21.0
Requires-Dist: opentelemetry-exporter-otlp-proto-common==1.21.0
Requires-Dist: opentelemetry-exporter-otlp-proto-grpc==1.21.0
Requires-Dist: opentelemetry-instrumentation==0.42b0
Requires-Dist: opentelemetry-instrumentation-asgi==0.42b0
Requires-Dist: opentelemetry-instrumentation-fastapi==0.42b0
Requires-Dist: opentelemetry-proto==1.21.0
Requires-Dist: opentelemetry-sdk==1.21.0
Requires-Dist: opentelemetry-semantic-conventions==0.42b0
Requires-Dist: opentelemetry-util-http==0.42b0
Requires-Dist: orjson==3.10.15
Requires-Dist: overrides==7.4.0
Requires-Dist: packaging==24.2
Requires-Dist: pandas==2.0.3
Requires-Dist: pandocfilters==1.5.0
Requires-Dist: parso==0.8.4
Requires-Dist: pexpect==4.9.0
Requires-Dist: Pillow==9.4.0
Requires-Dist: platformdirs==4.3.6
Requires-Dist: posthog==3.0.2
Requires-Dist: prometheus-client==0.19.0
Requires-Dist: prompt-toolkit==3.0.39
Requires-Dist: proto-plus==1.23.0
Requires-Dist: protobuf==4.24.0
Requires-Dist: psutil==6.1.1
Requires-Dist: ptyprocess==0.7.0
Requires-Dist: pulsar-client==3.3.0
Requires-Dist: pure_eval==0.2.3
Requires-Dist: pyarrow==15.0.1
Requires-Dist: pyarrow-hotfix==0.6
Requires-Dist: pyasn1==0.5.1
Requires-Dist: pyasn1-modules==0.3.0
Requires-Dist: pycparser==2.22
Requires-Dist: pydantic==1.10.13
Requires-Dist: pydantic_core==2.14.5
Requires-Dist: pydub==0.25.1
Requires-Dist: Pygments==2.19.1
Requires-Dist: pyparsing==3.0.9
Requires-Dist: PyPika==0.48.9
Requires-Dist: python-dateutil==2.9.0.post0
Requires-Dist: python-dotenv==1.0.0
Requires-Dist: python-json-logger==2.0.7
Requires-Dist: python-multipart==0.0.20
Requires-Dist: python-utils==3.7.0
Requires-Dist: pytz==2023.3
Requires-Dist: PyWavelets==1.4.1
Requires-Dist: PyYAML==6.0.1
Requires-Dist: pyzmq==25.1.1
Requires-Dist: qtconsole==5.5.1
Requires-Dist: QtPy==2.4.1
Requires-Dist: readme_renderer==44.0
Requires-Dist: referencing==0.31.0
Requires-Dist: regex==2023.10.3
Requires-Dist: requests==2.32.3
Requires-Dist: requests-oauthlib==1.3.1
Requires-Dist: requests-toolbelt==1.0.0
Requires-Dist: rfc3339-validator==0.1.4
Requires-Dist: rfc3986==2.0.0
Requires-Dist: rfc3986-validator==0.1.1
Requires-Dist: rich==13.7.1
Requires-Dist: rpds-py==0.13.1
Requires-Dist: rsa==4.9
Requires-Dist: ruff==0.9.2
Requires-Dist: safetensors==0.4.1
Requires-Dist: scikit-image==0.21.0
Requires-Dist: scikit-learn==1.6.1
Requires-Dist: scipy==1.13.1
Requires-Dist: seaborn==0.12.2
Requires-Dist: SecretStorage==3.3.3
Requires-Dist: semantic-version==2.10.0
Requires-Dist: Send2Trash==1.8.2
Requires-Dist: sentence-transformers==2.7.0
Requires-Dist: sentencepiece==0.1.99
Requires-Dist: sentry-sdk==1.37.1
Requires-Dist: setproctitle==1.3.3
Requires-Dist: shellingham==1.5.4
Requires-Dist: shtab==1.7.1
Requires-Dist: six==1.17.0
Requires-Dist: smart-open==6.3.0
Requires-Dist: smmap==5.0.1
Requires-Dist: sniffio==1.3.0
Requires-Dist: soupsieve==2.5
Requires-Dist: stack-data==0.6.3
Requires-Dist: starlette==0.27.0
Requires-Dist: sympy==1.13.3
Requires-Dist: tbb==2022.0.0
Requires-Dist: tcmlib==1.2.0
Requires-Dist: tenacity==8.2.3
Requires-Dist: tensorboardX==2.6.2
Requires-Dist: terminado==0.18.0
Requires-Dist: texttable==1.6.7
Requires-Dist: threadpoolctl==3.2.0
Requires-Dist: tifffile==2023.8.12
Requires-Dist: tinycss2==1.2.1
Requires-Dist: tokenizers==0.15.0
Requires-Dist: tomli==2.0.1
Requires-Dist: tomlkit==0.12.0
Requires-Dist: torch==2.0.1
Requires-Dist: torchaudio==2.0.2
Requires-Dist: torchvision==0.15.2
Requires-Dist: tornado==6.4.2
Requires-Dist: tqdm==4.67.1
Requires-Dist: traitlets==5.10.1
Requires-Dist: transformers==4.35.2
Requires-Dist: triton==2.0.0
Requires-Dist: trl==0.7.11
Requires-Dist: twine==6.1.0
Requires-Dist: typer==0.9.0
Requires-Dist: types-python-dateutil==2.8.19.14
Requires-Dist: typing_extensions==4.8.0
Requires-Dist: tyro==0.7.3
Requires-Dist: tzdata==2023.3
Requires-Dist: umf==0.9.1
Requires-Dist: uri-template==1.3.0
Requires-Dist: urllib3==1.26.20
Requires-Dist: utils==1.0.1
Requires-Dist: uvicorn==0.24.0.post1
Requires-Dist: uvloop==0.21.0
Requires-Dist: wandb==0.16.0
Requires-Dist: watchfiles==0.21.0
Requires-Dist: wcwidth==0.2.13
Requires-Dist: webcolors==1.13
Requires-Dist: webencodings==0.5.1
Requires-Dist: websocket-client==1.6.4
Requires-Dist: websockets==12.0
Requires-Dist: widgetsnbextension==4.0.9
Requires-Dist: wrapt==1.16.0
Requires-Dist: xxhash==3.4.1
Requires-Dist: yarl==1.9.4
Requires-Dist: zipp==3.16.2

<div align=center>
<!-- <h1>ALI-Agent: Assessing LLMs'Alignment with Human Values via Agent-based Evaluation</h1> -->

<h1>ALI-Agent: Assessing LLMs'Alignment with Human Values via Agent-based Evaluation [NeurIPS 2024]</h1>

<img src="https://img.shields.io/badge/License-MIT-blue" alt="license">

![world](flow.png)

ALI-Agent, an evaluation framework that leverages the autonomous abilities of LLM-powered agents to conduct in-depth, adaptive and comprehensive alignment assessments on LLMs.  ALI-Agent operates through two principal stages: Emulation and Refinement. During the Emulation stage, ALI-Agent automates the generation of realistic test scenarios.
In the Refinement stage, it iteratively refines the scenarios to probe long-tail risks. Specifically, ALI-Agent incorporates a memory module to guide test scenario generation, a tool-using module to reduce human labor in tasks such as evaluating feedback from target LLMs, and an action module to refine tests.

</div>


<p id="Catalogue"></p>  

## 📋 Catalogue 

- [Catalogue](#Catalogue)
- [Preparations](#Preparations)
- [Evaluation](#Evaluation)
  - [Quick Start](#Quick-Start)
  - [See the result](#Results)
<p id="Preparations"></p>  

## ⚙️ Preparations

### Step 1. Install requirements.txt
Set up a virtualenv and install the [pytorch](https://pytorch.org/get-started/previous-versions/) manually. 

Our experiments have been tested on **Python 3.9.17 with PyTorch 2.0.1+cu117**. 

```bash
conda create --name myenv python=3.9.17
conda activate myenv
```

After that, install all the dependencies listed in the `requirements.txt` file by running the following command:

```bash
pip install -r requirements.txt
```

### Step 2. Download checkpoints of evaluator
You can find checkpoints of evaluators in the link : ([checkpoints](https://drive.google.com/drive/folders/1kXheWR1smR-Q8_4cr0OwvFDqRDhUQuEV?usp=sharing))

Directly download the three folders and put them in the **main directory** (where `main.py` can be found).

<p id="Evaluation"></p>  

## ⌛️ Evaluation
Make sure you are in the **main directory** (where `main.py` can be found).

Replace "OPENAI_API_KEY" in simulation/utils.py with **your own OpenAI API key**.

<p id="Quick-Start"></p> 

### Quick Start

To run the agent on a specified dataset, run code as 

```bash
python main.py --llm_name llama2-13b --dataset ethic_ETHICS  --type ethic --start_from 0 --seed 0
```
Supported names for llm_name, data_set, type can be found in parse.py

To run the agent with web browsing, replace "BING_API_KEY" in simulation/utils.py with **your own BING API key**.

```bash
python main.py --llm_name llama2-13b --web_browsing
```

<p id="Results"></p>  

### See the Results

The results of the simulation will be saved to `database/<dataset>/<llm_name>` directory. 


