Automated red-team discovery for AI models
Project description
probegpt
Automated red-team discovery for AI models.
probegpt iteratively generates, sends, and scores adversarial prompts ("probes") against a target language model. It uses a separate generator model to create probes and a judge model to evaluate whether each probe succeeded — no manual prompt writing required.
Features
- 8 built-in attack strategies — objective, mutation, encoding, roleplay, persuasion, linguistic, structural, distraction
- Multi-provider support — Azure OpenAI, OpenRouter, GCP Vertex AI, AWS Bedrock, Cerebras, Mistral
- Textual TUI — interactive terminal UI for configuration and live run monitoring
- Extensible — drop custom strategy files into
~/.config/probegpt/strategies/ - JSON export — save all results for offline analysis
Installation
pip install probegpt
Or with uv:
uv tool install probegpt
Quick start
probegpt
The TUI will open. Navigate to Config first to set up your target, generator, and judge providers, then return to the main menu and select Run Discovery.
Configuration
Config is stored at ~/.config/probegpt/config.json (XDG-compliant). The TUI writes this file automatically when you save from the Config screen.
Provider credentials
| Provider | How to authenticate |
|---|---|
| Azure OpenAI | az login |
| OpenRouter | Set OPENROUTER_API_KEY env var |
| GCP Vertex AI | gcloud auth application-default login |
| AWS Bedrock | aws configure |
| Cerebras | Set CEREBRAS_API_KEY env var |
| Mistral | Set MISTRAL_API_KEY env var |
A .env file in the working directory is loaded automatically.
Strategies
| Strategy | Description |
|---|---|
objective |
Generate probes directly targeting the objective |
mutation |
Mutate high-scoring seeds from the pool |
encoding |
Obfuscate via base64, ROT13, leetspeak, fragmentation |
roleplay |
Wrap in persona, simulation, or game-context frames |
persuasion |
Use emotional appeals, urgency, flattery, logical fallacies |
linguistic |
Typos, phonetic spelling, double negatives, logic tricks |
structural |
Payload splitting, CoT hijack, prefix/suffix injection |
distraction |
Benign prefix, topic pivot, attention splitting |
Each strategy can be enabled/disabled and weighted independently from the Strategies tab in the Config screen.
Custom strategies
Place a Python file in ~/.config/probegpt/strategies/. It must define a class that subclasses probegpt.strategies.base.BaseStrategy:
# ~/.config/probegpt/strategies/my_strategy.py
from probegpt.strategies.base import BaseStrategy
class MyStrategy(BaseStrategy):
name = "my_strategy"
async def generate(self, objective: str, count: int, seed_pool: list) -> list[str]:
# Return a list of probe strings
...
The file is loaded automatically on startup.
Architecture
probegpt/
├── cli/ # Textual TUI (app.py) and entry point (main.py)
├── core/ # Config, models (Probe, DiscoveryResult), discovery loop
├── strategies/ # 8 built-in strategies + custom loader
├── judge/ # ObjectiveJudge — evaluates target responses
├── grading/ # Grader — scores probes, manages seed pool
├── providers/ # Factory for all supported LLM providers
├── output/ # AbstractOutput, JsonOutput
└── data/ # YAML prompt templates and seed probes
Development
git clone https://github.com/your-org/probegpt
cd probegpt
uv sync
uv run probegpt
Run linting:
uv run ruff check .
uv run ruff format .
License
MIT
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file probegpt-0.4.0.tar.gz.
File metadata
- Download URL: probegpt-0.4.0.tar.gz
- Upload date:
- Size: 46.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3bedc5e949f36cc17214db2170ba122ce145442c18177a856b560524845d5821
|
|
| MD5 |
6d396cbc658c6edff7a1261fa11ec9b1
|
|
| BLAKE2b-256 |
a18bb18b0728068101e28d915a5a7f63214e7e6dd73e0ce0ff1563b213aa3b3c
|
File details
Details for the file probegpt-0.4.0-py3-none-any.whl.
File metadata
- Download URL: probegpt-0.4.0-py3-none-any.whl
- Upload date:
- Size: 61.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2169d7797566ce99470fdba945be546d3ec070a591c15221e400844fc3197a30
|
|
| MD5 |
88c4476e6a505b4bab024cb10604e7ec
|
|
| BLAKE2b-256 |
aca3f26ecd9b71c55dbb1df3a7b7737919698d94faace09be26c094be2220877
|