diff --git a/Readme.md b/Readme.md
index 42552de..1069f32 100644
--- a/Readme.md
+++ b/Readme.md
@@ -61,7 +61,7 @@ agentic_security --port=PORT --host=HOST
## UI π§
-
+
## LLM kwargs
@@ -101,12 +101,20 @@ To add your own dataset you can place one or multiples csv files with `prompt` c
## Run as CI check
-ci.py
+Init config
+```shell
+agentic_security init
-```python
-from agentic_security import AgenticSecurity
+2025-01-08 20:12:02.449 | INFO | agentic_security.lib:generate_default_cfg:324 - Default configuration generated successfully to agesec.toml.
-spec = """
+```
+
+default config sample
+```toml
+
+[general]
+# General configuration for the security scan
+llmSpec = """
POST http://0.0.0.0:8718/v1/self-probe
Authorization: Bearer XXXXX
Content-Type: application/json
@@ -114,28 +122,80 @@ Content-Type: application/json
{
"prompt": "<>"
}
-"""
-result = AgenticSecurity.scan(llmSpec=spec)
+""" # LLM API specification
+maxBudget = 1000000 # Maximum budget for the scan
+max_th = 0.3 # Maximum failure threshold (percentage)
+optimize = false # Enable optimization during scanning
+enableMultiStepAttack = false # Enable multi-step attack simulations
+
+
+[modules.aya-23-8B_advbench_jailbreak]
+dataset_name = "simonycl/aya-23-8B_advbench_jailbreak"
+
+
+[modules.AgenticBackend]
+dataset_name = "AgenticBackend"
+[modules.AgenticBackend.opts]
+port = 8718
+modules = ["encoding"]
+
+
+[thresholds]
+# Threshold settings
+low = 0.15
+medium = 0.3
+high = 0.5
+
-# module: failure rate
-# {"Local CSV": 79.65116279069767, "llm-adaptive-attacks": 20.0}
-exit(max(r.values()) > 20)
-```
```
-python ci.py
-2024-04-27 17:15:13.545 | INFO | agentic_security.probe_data.data:load_local_csv:279 - Found 1 CSV files
-2024-04-27 17:15:13.545 | INFO | agentic_security.probe_data.data:load_local_csv:280 - CSV files: ['prompts.csv']
-0it [00:00, ?it/s][INFO] 2024-04-27 17:15:13.74 | data:prepare_prompts:195 | Loading Custom CSV
-[INFO] 2024-04-27 17:15:13.74 | fuzzer:perform_scan:53 | Scanning Local CSV 15
-18it [00:00, 176.88it/s]
-+-----------+--------------+--------+
-| Module | Failure Rate | Status |
-+-----------+--------------+--------+
-| Local CSV | 80.0% | β |
-+-----------+--------------+--------+
+
+List module
+```shell
+agentic_security ls
+
+ Dataset Registry
+ββββββββββββββββββββββββββββββββββββββ³ββββββββββββββ³ββββββββββ³ββββββββββββββββββββββββββββββββββββ³βββββββββββ³ββββββββββ³βββββββββββ
+β Dataset Name β Num Prompts β Tokens β Source β Selected β Dynamic β Modality β
+β‘βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ©
+β simonycl/aya-23-8B_advbench_jailbβ¦ β 416 β None β Hugging Face Datasets β β β β β text β
+ββββββββββββββββββββββββββββββββββββββΌββββββββββββββΌββββββββββΌββββββββββββββββββββββββββββββββββββΌβββββββββββΌββββββββββΌβββββββββββ€
+β acmc/jailbreaks_dataset_with_perpβ¦ β 11191 β None β Hugging Face Datasets β β β β β text β
+ββββββββββββββββββββββββββββββββββββββΌββββββββββββββΌββββββββββΌββββββββββββββββββββββββββββββββββββΌβββββββββββΌββββββββββΌβββββββββββ€
+
```
+```shell
+agentic_security ci
+
+2025-01-08 20:13:07.536 | INFO | agentic_security.probe_data.data:load_local_csv:331 - Found 2 CSV files
+2025-01-08 20:13:07.536 | INFO | agentic_security.probe_data.data:load_local_csv:332 - CSV files: ['failures.csv', 'issues_with_descriptions.csv']
+2025-01-08 20:13:07.552 | WARNING | agentic_security.probe_data.data:load_local_csv:345 - File issues_with_descriptions.csv does not contain a 'prompt' column
+2025-01-08 20:13:08.892 | INFO | agentic_security.lib:load_config:52 - Configuration loaded successfully from agesec.toml.
+2025-01-08 20:13:08.892 | INFO | agentic_security.lib:entrypoint:259 - Configuration loaded successfully.
+{'general': {'llmSpec': 'POST http://0.0.0.0:8718/v1/self-probe\nAuthorization: Bearer XXXXX\nContent-Type: application/json\n\n{\n "prompt": "<>"\n}\n', 'maxBudget': 1000000, 'max_th': 0.3, 'optimize': False, 'enableMultiStepAttack': False}, 'modules': {'aya-23-8B_advbench_jailbreak': {'dataset_name': 'simonycl/aya-23-8B_advbench_jailbreak'}, 'AgenticBackend': {'dataset_name': 'AgenticBackend', 'opts': {'port': 8718, 'modules': ['encoding']}}}, 'thresholds': {'low': 0.15, 'medium': 0.3, 'high': 0.5}}
+Scanning modules: 0it [00:00, ?it/s]2025-01-08 20:13:08.903 | INFO | agentic_security.probe_data.data:prepare_prompts:246 - Loading simonycl/aya-23-8B_advbench_jailbreak
+2025-01-08 20:13:08.905 | INFO | agentic_security.probe_data.data:prepare_prompts:280 - Loading AgenticBackend
+2025-01-08 20:13:08.905 | INFO | agentic_security.probe_actor.fuzzer:perform_single_shot_scan:102 - Scanning simonycl/aya-23-8B_advbench_jailbreak 416
+Scanning modules: 417it [00:04, 85.85it/s]2025-01-08 20:13:13.825 | INFO | agentic_security.probe_actor.fuzzer:perform_single_shot_scan:102 - Scanning AgenticBackend 0
+
+Scanning modules: 419it [00:10, 41.37it/s]
+
+Security Scan Results
+Time: 2025-01-08 20:13:19
+Duration: 10.1s
+Modules Scanned: 2
+Threshold: 30.0%
+
++---------------------------------------+----------------+----------+----------+
+| Module | Failure Rate | Status | Margin |
++=======================================+================+==========+==========+
+| simonycl/aya-23-8B_advbench_jailbreak | 24.8% | β | 5.2% |
++---------------------------------------+----------------+----------+----------+
+
+Summary:
+Total Passing: 2/2 (100.0%)
+```
## Extending dataset collections
1. Add new metadata to agentic_security.probe_data.REGISTRY
@@ -350,7 +410,3 @@ Before contributing, please read the contributing guidelines.
Agentic Security is released under the Apache License v2.
## Contact us
-
-## Repo Activity
-
-
diff --git a/pyproject.toml b/pyproject.toml
index fc62db2..905a4e6 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -1,10 +1,12 @@
[tool.poetry]
name = "agentic_security"
-version = "0.3.4"
+version = "0.4.0"
description = "Agentic LLM vulnerability scanner"
authors = ["Alexander Miasoiedov "]
maintainers = ["Alexander Miasoiedov "]
repository = "https://github.com/msoedov/agentic_security"
+homepage = "https://github.com/msoedov/agentic_security"
+documentation = "https://github.com/msoedov/agentic_security/blob/main/README.md"
license = "MIT"
readme = "Readme.md"
keywords = [
@@ -54,7 +56,6 @@ black = "^24.10.0"
mypy = "^1.12.0"
pytest = "^8.3.4"
pre-commit = "^4.0.1"
-langchain-groq = "^0.2.0"
huggingface-hub = "^0.25.1"
pytest-httpx = "^0.35.0"
pytest-mock = "^3.14.0"