.. _plugin-overview: ARES Plugins ============ ARES supports a modular plugin architecture that allows users to extend its functionality without modifying the core framework. Plugins enable integration with external tools, custom strategies, evaluation methods, and connectors to various AI systems. Overview -------- Plugins are grouped by the ARES component they extend: - **Target**: Connect ARES to external systems (e.g., APIs, LLMs, agentic apps) - **Goal**: Define adversarial objectives (e.g., PII leakage) - **Strategy**: Implement attack logic and payload generation - **Evaluation**: Analyze responses for robustness and safety .. note:: Example configurations often use ``connectors.yaml`` from ARES. Place it next to your example YAML file when testing plugins. Plugin Integration ------------------ To use a plugin with ARES, reference it directly in your YAML configuration. Each plugin must specify a ``type`` key with the full module path to the base plugin class. Example: .. code-block:: yaml strategy: type: ares_granite_io.connectors.granite_io.GraniteIOConnector This tells ARES to load the plugin class from the specified module and use it as the strategy component. Plugin Table ------------ .. list-table:: :header-rows: 1 :widths: 20 40 15 25 20 * - Plugin Name - Description - Component - Example Configs - Dependencies * - `new-plugin-template `__ - Template for contributing new plugins to the project - - - * - `ares-garak `__ - ARES plugin support for `NVIDIA garak `__ probes and detectors - Strategy, Evaluation - `InjectAscii85 `__ `DecodeApprox `__ - `NVIDIA garak `__ * - `ares-human-jailbreak `__ - ARES plugin for running Human-Jailbreak attack strategy - Strategy - `HumanJailbreak `__ - * - `ares-pyrit `__ - Crescendo strategy from PyRIT - Strategy - `Crescendo Example `__ - `PyRIT `__ * - `ares-icarus-connector `__ - Connector for ICARUS benchmark app - Target - `ICARUS Example `__ - ICARUS * - `ares-granite-io `__ - Granite-io plugin connector enables ARES interface with `Granite-io `__ - Target - `Ollama Example `__ `Watsonx Example `__ - `Granite-io `__ * - `ares-litellm-connector `__ - Connector to LiteLLM endpoints - Target - `LiteLLM Example `__ - `LiteLLM `__ * - `ares-vllm-connector `__ - Connector to vLLM endpoints - Target - `vLLM Example `__ - `vLLM `__ * - `ares-watsonx-orchestrate `__ - Connector to Watsonx Orchestrate agent ChatAPI - Target - `Watsonx Example `__ - `Watsonx Orchestrate ADK `__ * - `ares-gcg `__ - ARES GCG attack strategy - Strategy - `GCG Example `__ - Creating Your Own Plugin ------------------------ To contribute a plugin: 1. Copy the ``new-plugin-template`` folder. 2. Rename it to ``ares-your-plugin-name``. 3. Implement the required interface (check base classes for connector/goals/strategy/evaluation modules). 4. Add a ``README.md`` and ``tests/`` folder inside your plugin directory. 5. Update the plugin table in the main README. More details: `plugins/README.md `_