redprobe 0.1.1__py3-none-any.whl → 0.1.2__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- redprobe/consent.py +11 -7
- {redprobe-0.1.1.dist-info → redprobe-0.1.2.dist-info}/METADATA +19 -22
- {redprobe-0.1.1.dist-info → redprobe-0.1.2.dist-info}/RECORD +7 -7
- {redprobe-0.1.1.dist-info → redprobe-0.1.2.dist-info}/WHEEL +0 -0
- {redprobe-0.1.1.dist-info → redprobe-0.1.2.dist-info}/entry_points.txt +0 -0
- {redprobe-0.1.1.dist-info → redprobe-0.1.2.dist-info}/licenses/LICENSE +0 -0
- {redprobe-0.1.1.dist-info → redprobe-0.1.2.dist-info}/top_level.txt +0 -0
redprobe/consent.py
CHANGED
|
@@ -12,18 +12,22 @@ CONFIG_DIR = Path.home() / ".config" / "redprobe"
|
|
|
12
12
|
CONSENT_FILE = CONFIG_DIR / "consent.json"
|
|
13
13
|
|
|
14
14
|
# Version of the consent terms - bump this to require re-acknowledgment
|
|
15
|
-
CONSENT_VERSION = "1.
|
|
15
|
+
CONSENT_VERSION = "1.1"
|
|
16
16
|
|
|
17
17
|
TERMS_TEXT = """\
|
|
18
|
-
[bold]RedProbe[/bold] is a security
|
|
18
|
+
[bold]RedProbe[/bold] is a defensive security tool for hardening AI systems.
|
|
19
19
|
|
|
20
|
-
[bold yellow]
|
|
20
|
+
[bold yellow]You may only use this tool for:[/bold yellow]
|
|
21
|
+
• Systems you own or operate
|
|
22
|
+
• Systems you have written permission to test
|
|
23
|
+
• Research/educational contexts with appropriate oversight
|
|
21
24
|
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
+
[bold yellow]You may NOT use this tool to:[/bold yellow]
|
|
26
|
+
• Test systems without authorization
|
|
27
|
+
• Extract private data from systems you don't own
|
|
28
|
+
• Generate harmful content for distribution
|
|
25
29
|
|
|
26
|
-
|
|
30
|
+
By proceeding, you accept responsibility for your use of this tool.
|
|
27
31
|
"""
|
|
28
32
|
|
|
29
33
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: redprobe
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.2
|
|
4
4
|
Summary: A defensive security tool for hardening AI systems. Define YAML-based test cases to systematically probe LLMs for jailbreaks, prompt injections, biases, harmful content generation, data leakage, and policy violations before attackers find them. Compatible with any OpenAI-style API endpoint.
|
|
5
5
|
Author-email: "Audrey M. Roy Greenfeld" <audrey@feldroy.com>
|
|
6
6
|
Maintainer-email: "Audrey M. Roy Greenfeld" <audrey@feldroy.com>
|
|
@@ -29,19 +29,16 @@ A defensive security tool for hardening AI systems. Define YAML-based test cases
|
|
|
29
29
|
## Quick Start
|
|
30
30
|
|
|
31
31
|
```bash
|
|
32
|
-
# Run with uv (recommended)
|
|
33
|
-
uvx redprobe
|
|
34
|
-
|
|
35
32
|
# Generate sample probes
|
|
36
|
-
redprobe init
|
|
33
|
+
uvx redprobe init
|
|
37
34
|
|
|
38
35
|
# Run probes against a model
|
|
39
|
-
redprobe run probes/
|
|
36
|
+
uvx redprobe run probes/
|
|
40
37
|
```
|
|
41
38
|
|
|
42
39
|
## Prerequisites
|
|
43
40
|
|
|
44
|
-
RedProbe works with any OpenAI-compatible API. The default configuration targets [LM Studio](https://lmstudio.ai/) running locally.
|
|
41
|
+
RedProbe requires [uv](https://docs.astral.sh/uv/getting-started/installation/) and works with any OpenAI-compatible API. The default configuration targets [LM Studio](https://lmstudio.ai/) running locally.
|
|
45
42
|
|
|
46
43
|
### Setting up LM Studio
|
|
47
44
|
|
|
@@ -72,12 +69,12 @@ Do not use RedProbe to test systems without authorization, extract private data,
|
|
|
72
69
|
|
|
73
70
|
## Commands
|
|
74
71
|
|
|
75
|
-
### `redprobe init`
|
|
72
|
+
### `uvx redprobe init`
|
|
76
73
|
|
|
77
74
|
Create sample probe files to get started:
|
|
78
75
|
|
|
79
76
|
```bash
|
|
80
|
-
$ redprobe init
|
|
77
|
+
$ uvx redprobe init
|
|
81
78
|
Created sample probes in probes/
|
|
82
79
|
|
|
83
80
|
Files created:
|
|
@@ -86,21 +83,21 @@ Files created:
|
|
|
86
83
|
- harmful.yaml (3 probes)
|
|
87
84
|
|
|
88
85
|
Run probes with:
|
|
89
|
-
redprobe run probes
|
|
86
|
+
uvx redprobe run probes
|
|
90
87
|
```
|
|
91
88
|
|
|
92
89
|
You can specify a different directory:
|
|
93
90
|
|
|
94
91
|
```bash
|
|
95
|
-
redprobe init my-probes/
|
|
92
|
+
uvx redprobe init my-probes/
|
|
96
93
|
```
|
|
97
94
|
|
|
98
|
-
### `redprobe list-probes`
|
|
95
|
+
### `uvx redprobe list-probes`
|
|
99
96
|
|
|
100
97
|
Preview what probes will run without actually calling the API:
|
|
101
98
|
|
|
102
99
|
```bash
|
|
103
|
-
$ redprobe list-probes probes/
|
|
100
|
+
$ uvx redprobe list-probes probes/
|
|
104
101
|
Bias Detection
|
|
105
102
|
Probes for demographic and social biases in model responses
|
|
106
103
|
|
|
@@ -127,12 +124,12 @@ Jailbreak Attempts
|
|
|
127
124
|
MEDIUM jailbreak-003: Roleplay bypass
|
|
128
125
|
```
|
|
129
126
|
|
|
130
|
-
### `redprobe run`
|
|
127
|
+
### `uvx redprobe run`
|
|
131
128
|
|
|
132
129
|
Run probes against a model:
|
|
133
130
|
|
|
134
131
|
```bash
|
|
135
|
-
$ redprobe run probes/
|
|
132
|
+
$ uvx redprobe run probes/
|
|
136
133
|
Loaded 9 probes from 3 suite(s)
|
|
137
134
|
Target: http://localhost:1234/v1 model openai/gpt-oss-20b
|
|
138
135
|
|
|
@@ -171,7 +168,7 @@ Running suite: Jailbreak Attempts
|
|
|
171
168
|
#### Command Options
|
|
172
169
|
|
|
173
170
|
```bash
|
|
174
|
-
redprobe run probes/ \
|
|
171
|
+
uvx redprobe run probes/ \
|
|
175
172
|
--base-url http://localhost:1234/v1 \ # API endpoint
|
|
176
173
|
--model openai/gpt-oss-20b \ # Model to test
|
|
177
174
|
--api-key not-needed \ # API key (if required)
|
|
@@ -275,7 +272,7 @@ cases:
|
|
|
275
272
|
|
|
276
273
|
### Organizing Probes
|
|
277
274
|
|
|
278
|
-
You can split probes across multiple YAML files. When you point `redprobe run` at a directory, it loads all `.yaml` and `.yml` files:
|
|
275
|
+
You can split probes across multiple YAML files. When you point `uvx redprobe run` at a directory, it loads all `.yaml` and `.yml` files:
|
|
279
276
|
|
|
280
277
|
```
|
|
281
278
|
probes/
|
|
@@ -289,12 +286,12 @@ probes/
|
|
|
289
286
|
|
|
290
287
|
Run a specific file:
|
|
291
288
|
```bash
|
|
292
|
-
redprobe run probes/jailbreaks.yaml
|
|
289
|
+
uvx redprobe run probes/jailbreaks.yaml
|
|
293
290
|
```
|
|
294
291
|
|
|
295
292
|
Run all probes in a directory:
|
|
296
293
|
```bash
|
|
297
|
-
redprobe run probes/
|
|
294
|
+
uvx redprobe run probes/
|
|
298
295
|
```
|
|
299
296
|
|
|
300
297
|
## Understanding Results
|
|
@@ -318,7 +315,7 @@ A triggered probe does not necessarily mean the model is unsafe. It means the re
|
|
|
318
315
|
Use `--output` to export full results including model responses:
|
|
319
316
|
|
|
320
317
|
```bash
|
|
321
|
-
redprobe run probes/ --output results.json
|
|
318
|
+
uvx redprobe run probes/ --output results.json
|
|
322
319
|
```
|
|
323
320
|
|
|
324
321
|
The JSON includes timestamps, prompts, full responses, and matched patterns for each probe.
|
|
@@ -331,7 +328,7 @@ The JSON includes timestamps, prompts, full responses, and matched patterns for
|
|
|
331
328
|
# Start Ollama with a model
|
|
332
329
|
ollama serve
|
|
333
330
|
|
|
334
|
-
redprobe run probes/ \
|
|
331
|
+
uvx redprobe run probes/ \
|
|
335
332
|
--base-url http://localhost:11434/v1 \
|
|
336
333
|
--model llama2
|
|
337
334
|
```
|
|
@@ -339,7 +336,7 @@ redprobe run probes/ \
|
|
|
339
336
|
### OpenAI
|
|
340
337
|
|
|
341
338
|
```bash
|
|
342
|
-
redprobe run probes/ \
|
|
339
|
+
uvx redprobe run probes/ \
|
|
343
340
|
--base-url https://api.openai.com/v1 \
|
|
344
341
|
--model gpt-4o-mini \
|
|
345
342
|
--api-key $OPENAI_API_KEY
|
|
@@ -2,15 +2,15 @@ redprobe/__init__.py,sha256=_wvSUrXbiQukzP-6GWVuXSRrNMSX1IjhGUE5RhiMwNE,115
|
|
|
2
2
|
redprobe/__main__.py,sha256=Qd-f8z2Q2vpiEP2x6PBFsJrpACWDVxFKQk820MhFmHo,59
|
|
3
3
|
redprobe/cli.py,sha256=J59uGQw2VdXQAuzKswurzuO5LEzGZUyPwAEKSpOnKfA,8918
|
|
4
4
|
redprobe/client.py,sha256=_kiNJv2JaTbTE8j6TDThIlt4j2J7yG34aRJ_6gcw4K0,1683
|
|
5
|
-
redprobe/consent.py,sha256=
|
|
5
|
+
redprobe/consent.py,sha256=v_wQqqF5DV95lgeQepXCReU6efgcR30ZUF-3-zmOGdU,2477
|
|
6
6
|
redprobe/probes.py,sha256=LpW_FuE_FN7Jwi-2dHM9KnCqpF_0qaddeS2Nq5tpsnA,1586
|
|
7
7
|
redprobe/redprobe.py,sha256=h0hwdogXGFqerm-5ZPeT-irPn91pCcQRjiHThXsRzEk,19
|
|
8
8
|
redprobe/reporter.py,sha256=v3f0rJ_W90hIRs9um9yYwNpR7_vrufJlTzyJ6RYjhZg,3929
|
|
9
9
|
redprobe/runner.py,sha256=Fq8lvgcVajOyA6pUJj1PXoea21vx_PworWxZ-Qdh-bA,2947
|
|
10
10
|
redprobe/utils.py,sha256=1RxiNQM7rpegUEPuFvOlbSGesR4gnWpXr82bZQCgELM,77
|
|
11
|
-
redprobe-0.1.
|
|
12
|
-
redprobe-0.1.
|
|
13
|
-
redprobe-0.1.
|
|
14
|
-
redprobe-0.1.
|
|
15
|
-
redprobe-0.1.
|
|
16
|
-
redprobe-0.1.
|
|
11
|
+
redprobe-0.1.2.dist-info/licenses/LICENSE,sha256=bmXNe-6xu11QuI5rXH3hBOesEquzT2lKLMZg6nAUQkk,1081
|
|
12
|
+
redprobe-0.1.2.dist-info/METADATA,sha256=7vHA9NXnsN2cPiHXyC1TCxSJUkfM_irHl1Be9pfrgwI,11142
|
|
13
|
+
redprobe-0.1.2.dist-info/WHEEL,sha256=wUyA8OaulRlbfwMtmQsvNngGrxQHAvkKcvRmdizlJi0,92
|
|
14
|
+
redprobe-0.1.2.dist-info/entry_points.txt,sha256=nxhiTW3liqHgN1Z4USLbE8h-rNdkBw0aDGR22d7RwCw,46
|
|
15
|
+
redprobe-0.1.2.dist-info/top_level.txt,sha256=39jbSXSR2aA-SepQ6Q8I-DmAsWK4Z1FbCCIZeHVX5ks,9
|
|
16
|
+
redprobe-0.1.2.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|