extract 0 0 0

quickium/awall-pi-victim-panel

published by @quickium

Alignment dataset tracked in the /datasets sub-catalog.

Lifetime downloads
62
Last 30 days
62
Likes
-
Size
40.1 MB
Created on HF
2026-09-22
Age
29 days ago

Description

Awall PI Victim Panel

Cada prompt do quickium/awall-pi-quartets

foi submetido a 5 LLMs locais, e o que eles responderam foi julgado. É o dataset que diz não só

"isto é um ataque", mas "este ataque funciona contra quem".

Painel: tinyllama_1_1b, gemma3_1b, qwen2_5_1_5b, gemma2_2b, llama3_2_3b.

Veredito por resposta: normal · refused · injected (+ sinal de leak).

Três configs — o mesmo dado, três formatos

config

linhas

uma linha é

quando usar

by-prompt… See the full description on the dataset page: https://huggingface.co/datasets/quickium/awall-pi-victim-panel.

Tags

task_categories:text-classificationmultilinguality:multilinguallanguage:enlicense:othersize_categories:10K<n<100Kformat:parquetmodality:tabularmodality:textlibrary:datasetslibrary:pandaslibrary:polarslibrary:mlcroissantregion:usprompt-injectionjailbreakai-safetyred-teamingllm-evaluation

README current version from Hugging Face


license: other
license_name: mixed-upstream-see-card
language:

  • en
    multilinguality: multilingual
    task_categories:
  • text-classification
    tags:
  • prompt-injection
  • jailbreak
  • ai-safety
  • red-teaming
  • llm-evaluation
    pretty_name: Awall PI Victim Panel
    size_categories:
  • 10K<n<100K
    configs:
  • config_name: by-prompt
    data_files:
    • split: train
      path: by-prompt/train.parquet
  • config_name: by-response
    data_files:
    • split: train
      path: by-response/train.parquet
  • config_name: by-prompt-perplexity
    data_files:
    • split: train
      path: by-prompt-perplexity/train.parquet

Awall PI Victim Panel

Cada prompt do quickium/awall-pi-quartets
foi submetido a 5 LLMs locais, e o que eles responderam foi julgado. É o dataset que diz não só
"isto é um ataque", mas "este ataque funciona contra quem".

Painel: tinyllama_1_1b, gemma3_1b, qwen2_5_1_5b, gemma2_2b, llama3_2_3b.
Veredito por resposta: normal · refused · injected (+ sinal de leak).

Três configs — o mesmo dado, três formatos

config linhas uma linha é quando usar
by-prompt 6.588 um prompt, com as 5 respostas aninhadas em responses e os agregados do painel análise por prompt; casa 1:1 com o awall-pi-quartets por id
by-response 32.935 uma resposta (prompt × modelo), agrupada em ilhas por id_leader treino contrastivo por ilha; comparar modelos
by-prompt-perplexity 1.420 subconjunto do by-prompt com sinais de perplexidade (nll_mean, peak_window_ppl, suffix_prefix_ratio, lexical_attack_potential) features de fluência/anomalia

by-prompt traz, por modelo, <modelo>_verdict/_refused/_normal/_injected/_leak/_leak_hits, mais
n_models, n_errors, refused_pct, normal_pct, injected_pct, leaked_pct e o
judge_reason (frase do juiz LLM resumindo a divergência do painel). system_sha fixa o system
prompt usado, para reprodutibilidade.

Distribuição de veredito no by-response: normal 17.275 · refused 9.642 · injected 6.018.

Respostas truncadas em 1.200 caracteres — a ECDF do comprimento sobe reto nesse valor; é o teto,
não a distribuição.

id do by-response é derivado do conteúdo (sha1(id_leader|kind|response)[:16]): respostas
genéricas ("Sorry, I can't help") se repetem entre prompts, então o hash da resposta sozinho não
seria único. Consequência conhecida: corrigir o texto de uma resposta muda o id, e a linha
aparece como removida + criada ao comparar duas versões.

A estrutura de responses (config by-prompt)

Cada linha traz um dicionário com uma entrada por modelo:

responses = {
    "tinyllama_1_1b": {
        "text":        "...",      # a resposta, truncada em 1200 chars
        "n_chars_raw": 132,        # tamanho antes do truncamento
        "truncated":   False,
        "error":       None,       # preenchido quando o modelo falhou naquela linha
        "leak":        False,      # a resposta vazou o segredo do honeypot?
        "leak_hits":   [],
    },
    "gemma3_1b": {...}, "qwen2_5_1_5b": {...}, "gemma2_2b": {...}, "llama3_2_3b": {...},
}

Se você quer uma linha por resposta em vez de um dicionário aninhado, use o config by-response —
é o mesmo dado já desaninhado.

Como puxar

pip install datasets
from datasets import load_dataset

# O config é obrigatório: são três, e não há default.
prompt_lvl = load_dataset("quickium/awall-pi-victim-panel", "by-prompt",   revision="v1.0", split="train")
resp_lvl   = load_dataset("quickium/awall-pi-victim-panel", "by-response", revision="v1.0", split="train")
print(len(prompt_lvl), len(resp_lvl))      # 6588 · 32935

Qual config usar

pergunta config
"este prompt derruba quantos dos 5 modelos?" by-prompt (injected_pct, refused_pct)
"o que o gemma2 respondeu a este prompt?" by-response, filtrando kind
"perplexidade e sinais de fluência" by-prompt-perplexity (1.420 linhas)

Ler a resposta de um modelo

r = prompt_lvl[0]
print(r["responses"]["gemma2_2b"]["text"])
print(r["gemma2_2b_verdict"], r["injected_pct"])

O mesmo, no formato longo:

gemma = resp_lvl.filter(lambda x: x["kind"] == "gemma2_2b")
print(gemma[0]["response"], gemma[0]["verdict"])

Os ataques que funcionaram

import pandas as pd
df = prompt_lvl.to_pandas()
efetivos = df[(df["label"] == 1) & (df["injected_pct"] >= 0.6)]   # derrubou 3+ dos 5
print(len(efetivos))

Juntar com o quarteto

O id do by-prompt casa 1:1 com o awall-pi-quartets; no by-response a chave é id_leader:

quart = load_dataset("quickium/awall-pi-quartets", revision="v1.0", split="train").to_pandas()
por_prompt  = df.merge(quart[["id", "strategy"]], on="id")
por_resposta = (resp_lvl.to_pandas()
                .merge(quart[["id", "strategy"]], left_on="id_leader", right_on="id"))

Sem a biblioteca datasets

import pandas as pd
BASE = "https://huggingface.co/datasets/quickium/awall-pi-victim-panel/resolve/v1.0"
df = pd.read_parquet(f"{BASE}/by-prompt/train.parquet")

Armadilhas

  • As respostas estão truncadas em 1.200 caracteres. A distribuição de comprimento sobe reto
    nesse valor: é o teto, não o dado.
  • n_models nem sempre é 5. Quando um modelo falhou naquela linha, ele conta como ausente — os
    *_pct já são calculados sobre n_models, não sobre 5.
  • O id do by-response é derivado do conteúdo (sha1(id_leader|kind|response)). Corrigir o
    texto de uma resposta muda o id: entre duas versões a linha aparece como removida + criada, não
    como editada. Para casar versões, use id_leader + kind.
  • Uma ilha não é um conjunto de paráfrases. As 5 respostas ao mesmo prompt discordam de
    propósito (um recusa, outro cumpre) — a ilha captura "mesmo prompt", não "mesmo conteúdo".

Proveniência e licenças

Os prompts vêm do awall-pi-quartets (tabela abaixo). As respostas foram geradas pelos 5
modelos listados e estão sujeitas às licenças deles.

linhas valores de source origem upstream licença upstream
1.110 wildguardmix_wildguardtrain, wildguardmix_wildguardtest, wildguardmix, wildguard allenai/wildguardmix ODC-BY
784 safe_guard_prompt_injection xTRam1/safe-guard-prompt-injection sem licença no card
729 wildjailbreak_train_adversarial_harmful, wildjailbreak_train_vanilla_harmful · +3 variantes allenai/wildjailbreak ODC-BY
567 octavio_pi_multilingual_multi, octavio_pi_multilingual_attackdet, octavio_pi_multilingual Octavio-Santana/prompt-injection-attack-detection-multilingual GPL
513 gandalf_ignore_instructions_train, gandalf_ignore_instructions_validation · +4 variantes Lakera/gandalf_ignore_instructions, Lakera/gandalf_summarization MIT
510 spml reshabhs/SPML_Chatbot_Prompt_Injection MIT
393 yanismiraoui_prompt_injections yanismiraoui/prompt_injections Apache-2.0
359 coconot, cc allenai/coconot sem licença no card
285 hh, anthropic_rt Anthropic/hh-rlhf (harmless-base + red-team-attempts) MIT
248 gretel_pii_finance_multilingual, gpf gretelai/synthetic_pii_finance_multilingual Apache-2.0
237 deepset_prompt_injections, deepset_prompt_injections_train · +1 variantes deepset/prompt-injections Apache-2.0
207 ds thu-coai/diasafety Apache-2.0
151 notinject leolee99/NotInject MIT
81 msb AI4LIFE-GROUP/med-safety-bench a confirmar (origem GitHub)
78 synthetic_data_exfil geração própria (honeypot de exfiltração) —
69 aya_rt_en CohereForAI/aya_redteaming Apache-2.0
66 advbench_string, advbench_behavior walledai/AdvBench MIT
63 us openbmb/UltraSafety MIT
42 dna LibrAI/do-not-answer Apache-2.0
39 prosocial_tr, prosocial_te, prosocial_va allenai/prosocial-dialog CC-BY-4.0
36 jigsaw, jigsaw_ac4dea4f0910ac9a · +5 variantes Jigsaw Toxic Comment (Kaggle) a confirmar
15 anonymous_death_threat_construction, chicago_mass_killing_instructions · +3 variantes itens redigidos internamente —
6 gptfuzzer GPTFuzzer a confirmar

Avisos obrigatórios

  • label é a verdade binária (0 = benigno, 1 = ataque). Não use domain como rótulo —
    é metadado de agrupamento e tem erro conhecido em corpora irmãos deste projeto.
  • Este dataset contém prompts adversariais reais (prompt injection e jailbreak), incluindo
    pedidos de conteúdo nocivo. Destina-se a pesquisa defensiva: treinar e avaliar detectores.
  • A coluna source carrega a proveniência linha a linha. Use-a para filtrar por licença.

Licença

license: other — este é um agregado de fontes com licenças diferentes, e não existe uma tag
SPDX única que descreva o conjunto honestamente. A licença de cada linha é a da sua fonte upstream
(tabela acima). Antes de redistribuir qualquer subconjunto, cheque a linha correspondente:
há material ODC-BY, GPL e fontes sem licença declarada no meio.

Versionamento

O nome do repo nunca carrega versão. Cada release é uma tag imutável (v1.0, v1.1, …);
main aponta para a mais recente.

sobe quando
MAJOR o schema quebra ou um rótulo muda
MINOR entram linhas novas, schema compatível
PATCH correção de linhas existentes sem mexer no rótulo
from datasets import load_dataset
load_dataset("quickium/awall-pi-victim-panel", "by-prompt", revision="v1.0")   # reprodutível

README history 4 revisions

Every night we snapshot the README of every dataset in the catalog. When the SHA changes we archive the new version and diff it against the last. This is the evolving thought record of the alignment-data field: what the author decided to say about the corpus, and how that framing shifted over time.

  1. 2026-09-22card: adiciona secao Como puxar (quickstart) + exemplo realde789729.7 KB
    Loading...
  2. 2026-09-22remove tag not-for-all-audiences (habilita o dataset viewer)6affa106.3 KB
    Loading...
  3. 2026-09-22v1.0 — publicação inicialc1878466.3 KB
    Loading...
  4. 2026-09-22initial commit392ef280 B
    Loading...

Used by abliterated models none yet

No abliterated models in our catalog have declared this dataset in their YAML metadata yet. This can mean the dataset is used but not declared, is used outside abliteration workflows, or is new. The link will populate automatically as models are indexed.

Related datasets same stage · extract

Read further

Metadata

License
other

Download the dataset

0

Copy any of these snippets into your notebook or terminal. All three fetch directly from Hugging Face using your own credentials.

Recommended: datasets library (Python)
from datasets import load_dataset
ds = load_dataset("quickium/awall-pi-victim-panel")
Raw snapshot (Python)
from huggingface_hub import snapshot_download
snapshot_download(repo_id="quickium/awall-pi-victim-panel", repo_type="dataset")
git clone (requires git-lfs)
git clone https://huggingface.co/datasets/quickium/awall-pi-victim-panel
Catalog is the map. Apps are the tools.

Run models on your own machine, not in the cloud.

Every model page has an "Open in Abliteration" button that hands the model directly to the first-party desktop client, at the quantization your rig can actually run. No API keys, no subscription, no prompt leakage.

Open in Abliteration