redprobe 0.1.0__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.0.dist-info → redprobe-0.1.2.dist-info}/METADATA +19 -25
- {redprobe-0.1.0.dist-info → redprobe-0.1.2.dist-info}/RECORD +7 -7
- {redprobe-0.1.0.dist-info → redprobe-0.1.2.dist-info}/WHEEL +0 -0
- {redprobe-0.1.0.dist-info → redprobe-0.1.2.dist-info}/entry_points.txt +0 -0
- {redprobe-0.1.0.dist-info → redprobe-0.1.2.dist-info}/licenses/LICENSE +0 -0
- {redprobe-0.1.0.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,13 +1,10 @@
|
|
|
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>
|
|
7
7
|
License: BUSL 1.1
|
|
8
|
-
Project-URL: bugs, https://github.com/audreyfeldroy/redprobe/issues
|
|
9
|
-
Project-URL: changelog, https://github.com/audreyfeldroy/redprobe/blob/master/changelog.md
|
|
10
|
-
Project-URL: homepage, https://github.com/audreyfeldroy/redprobe
|
|
11
8
|
Requires-Python: >=3.10
|
|
12
9
|
Description-Content-Type: text/markdown
|
|
13
10
|
License-File: LICENSE
|
|
@@ -32,19 +29,16 @@ A defensive security tool for hardening AI systems. Define YAML-based test cases
|
|
|
32
29
|
## Quick Start
|
|
33
30
|
|
|
34
31
|
```bash
|
|
35
|
-
# Run with uv (recommended)
|
|
36
|
-
uvx redprobe
|
|
37
|
-
|
|
38
32
|
# Generate sample probes
|
|
39
|
-
redprobe init
|
|
33
|
+
uvx redprobe init
|
|
40
34
|
|
|
41
35
|
# Run probes against a model
|
|
42
|
-
redprobe run probes/
|
|
36
|
+
uvx redprobe run probes/
|
|
43
37
|
```
|
|
44
38
|
|
|
45
39
|
## Prerequisites
|
|
46
40
|
|
|
47
|
-
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.
|
|
48
42
|
|
|
49
43
|
### Setting up LM Studio
|
|
50
44
|
|
|
@@ -75,12 +69,12 @@ Do not use RedProbe to test systems without authorization, extract private data,
|
|
|
75
69
|
|
|
76
70
|
## Commands
|
|
77
71
|
|
|
78
|
-
### `redprobe init`
|
|
72
|
+
### `uvx redprobe init`
|
|
79
73
|
|
|
80
74
|
Create sample probe files to get started:
|
|
81
75
|
|
|
82
76
|
```bash
|
|
83
|
-
$ redprobe init
|
|
77
|
+
$ uvx redprobe init
|
|
84
78
|
Created sample probes in probes/
|
|
85
79
|
|
|
86
80
|
Files created:
|
|
@@ -89,21 +83,21 @@ Files created:
|
|
|
89
83
|
- harmful.yaml (3 probes)
|
|
90
84
|
|
|
91
85
|
Run probes with:
|
|
92
|
-
redprobe run probes
|
|
86
|
+
uvx redprobe run probes
|
|
93
87
|
```
|
|
94
88
|
|
|
95
89
|
You can specify a different directory:
|
|
96
90
|
|
|
97
91
|
```bash
|
|
98
|
-
redprobe init my-probes/
|
|
92
|
+
uvx redprobe init my-probes/
|
|
99
93
|
```
|
|
100
94
|
|
|
101
|
-
### `redprobe list-probes`
|
|
95
|
+
### `uvx redprobe list-probes`
|
|
102
96
|
|
|
103
97
|
Preview what probes will run without actually calling the API:
|
|
104
98
|
|
|
105
99
|
```bash
|
|
106
|
-
$ redprobe list-probes probes/
|
|
100
|
+
$ uvx redprobe list-probes probes/
|
|
107
101
|
Bias Detection
|
|
108
102
|
Probes for demographic and social biases in model responses
|
|
109
103
|
|
|
@@ -130,12 +124,12 @@ Jailbreak Attempts
|
|
|
130
124
|
MEDIUM jailbreak-003: Roleplay bypass
|
|
131
125
|
```
|
|
132
126
|
|
|
133
|
-
### `redprobe run`
|
|
127
|
+
### `uvx redprobe run`
|
|
134
128
|
|
|
135
129
|
Run probes against a model:
|
|
136
130
|
|
|
137
131
|
```bash
|
|
138
|
-
$ redprobe run probes/
|
|
132
|
+
$ uvx redprobe run probes/
|
|
139
133
|
Loaded 9 probes from 3 suite(s)
|
|
140
134
|
Target: http://localhost:1234/v1 model openai/gpt-oss-20b
|
|
141
135
|
|
|
@@ -174,7 +168,7 @@ Running suite: Jailbreak Attempts
|
|
|
174
168
|
#### Command Options
|
|
175
169
|
|
|
176
170
|
```bash
|
|
177
|
-
redprobe run probes/ \
|
|
171
|
+
uvx redprobe run probes/ \
|
|
178
172
|
--base-url http://localhost:1234/v1 \ # API endpoint
|
|
179
173
|
--model openai/gpt-oss-20b \ # Model to test
|
|
180
174
|
--api-key not-needed \ # API key (if required)
|
|
@@ -278,7 +272,7 @@ cases:
|
|
|
278
272
|
|
|
279
273
|
### Organizing Probes
|
|
280
274
|
|
|
281
|
-
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:
|
|
282
276
|
|
|
283
277
|
```
|
|
284
278
|
probes/
|
|
@@ -292,12 +286,12 @@ probes/
|
|
|
292
286
|
|
|
293
287
|
Run a specific file:
|
|
294
288
|
```bash
|
|
295
|
-
redprobe run probes/jailbreaks.yaml
|
|
289
|
+
uvx redprobe run probes/jailbreaks.yaml
|
|
296
290
|
```
|
|
297
291
|
|
|
298
292
|
Run all probes in a directory:
|
|
299
293
|
```bash
|
|
300
|
-
redprobe run probes/
|
|
294
|
+
uvx redprobe run probes/
|
|
301
295
|
```
|
|
302
296
|
|
|
303
297
|
## Understanding Results
|
|
@@ -321,7 +315,7 @@ A triggered probe does not necessarily mean the model is unsafe. It means the re
|
|
|
321
315
|
Use `--output` to export full results including model responses:
|
|
322
316
|
|
|
323
317
|
```bash
|
|
324
|
-
redprobe run probes/ --output results.json
|
|
318
|
+
uvx redprobe run probes/ --output results.json
|
|
325
319
|
```
|
|
326
320
|
|
|
327
321
|
The JSON includes timestamps, prompts, full responses, and matched patterns for each probe.
|
|
@@ -334,7 +328,7 @@ The JSON includes timestamps, prompts, full responses, and matched patterns for
|
|
|
334
328
|
# Start Ollama with a model
|
|
335
329
|
ollama serve
|
|
336
330
|
|
|
337
|
-
redprobe run probes/ \
|
|
331
|
+
uvx redprobe run probes/ \
|
|
338
332
|
--base-url http://localhost:11434/v1 \
|
|
339
333
|
--model llama2
|
|
340
334
|
```
|
|
@@ -342,7 +336,7 @@ redprobe run probes/ \
|
|
|
342
336
|
### OpenAI
|
|
343
337
|
|
|
344
338
|
```bash
|
|
345
|
-
redprobe run probes/ \
|
|
339
|
+
uvx redprobe run probes/ \
|
|
346
340
|
--base-url https://api.openai.com/v1 \
|
|
347
341
|
--model gpt-4o-mini \
|
|
348
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
|