Hacktoberfest 2026: le issue che i maintainer hanno segnato per ottobre, aperte e adatte ai principianti. Sfoglia le issue Hacktoberfest

FEAT: Explore datasets and use seeds in chat and custom scenarios

Aperta
#2,744 0 commenti 0 reazioni 1 assegnatario Vedi su GitHub

@romanlutz ci sta già lavorando.

Dal 22/9/2026.

Valutazione

Questa issue non è ancora stata valutata.

Descrizione

datasets feature-request GUI
Is your feature request related to a problem? Please describe.

People using CoPyRIT need a way to discover seed prompts without leaving the GUI, inspect the datasets already in memory, optionally load built-in datasets, and use a selected example in a human-led attack. Selecting several examples should lead to a configurable scenario rather than a batch-chat feature.

The backend already lists dataset names from memory and registered providers. Chat already supports media previews and copying content into its input. This series should reuse that infrastructure and remain mostly GUI work plus thin service APIs.

Describe the solution you'd like
User experience

Add a Datasets section with searchable/filterable dataset cards. Cards show meaningful counts, modalities, harm categories when present, and whether a dataset is loaded or available from a provider. Clicking a card opens a paginated prompt table with expandable content and metadata. Images render, and audio/video have playback controls.

For one selected prompt or linked multimodal example, provide:

  • Import to new attack.
  • Import to current conversation within the current attack.
  • Import to new conversation within the current attack.

These actions populate an editable draft. They never send to a target automatically. Add a "Need inspiration? Browse seed prompts" entry point in chat, preserving the draft and originating attack/conversation while browsing.

For multiple selected examples, provide Configure scenario. Reuse Scanner configuration, execution, progress, and history. Defaults are exactly prompt sending, no converters, and a compatible configured objective-scorer preset. Let the user configure standard attack techniques, converter pipelines, target, and scoring before confirming launch.

Agreed design boundaries
  • Memory is the source of browsable seeds. Provider loading is explicit and writes through existing memory APIs. Catalog browsing, filtering, and estimates must not download datasets.
  • Use credentials already configured on the backend. Loaded datasets remain in the deployment's shared memory. Do not introduce browser token entry, a credential store, or private per-user dataset access.
  • Use configured instances from ScorerRegistry, not a hardcoded list of scorer class names. Prefer the compatible instance tagged default_objective_scorer. Existing composites are valid presets; raw refusal=true must not be presented as attack success.
  • Preserve existing objectives. If a selected example lacks an objective required by the scenario, ask for it rather than inventing one or treating a file path as an objective.
  • Keep grouped text/media, roles, and ordering intact. Distinguish literal prompts, objectives, templates, and simulated-conversation configurations. Unsupported import shapes remain inspectable with an explanation; do not silently flatten or execute them.
  • Distinguish logical examples from seed/prompt pieces and objectives. A text/image pair is one example with two pieces. Missing harm labels mean "Not labeled", not "Safe". Unknown provider counts are not zero, and provider estimates are not exact loaded counts.
  • Preserve chat drafts, attachments, target/converter settings, browsing filters, and return context. Confirm before replacing a draft. Respect existing target compatibility and conversation mutation restrictions.
  • Use bounded database-side pagination and lazy media loading. No autoplay. Keep safe media serving and clear missing-file/unsupported-format fallbacks.
  • No memory schema migrations, new dataset tables, new execution engine, or persistent dataset copied for each selection. Narrow memory read-query helpers are allowed when required for counts and pagination.
Delivery sequence

The linked sub-issues are intentionally released to contributors one at a time. Each issue includes its own focused tests and failure states; the final item does not defer that work.

Order Work item
1 #2746 FEAT GUI: Add memory-backed dataset summary API
2 #2748 FEAT GUI: Add paginated seed browsing API
3 #2747 FEAT GUI: Add dataset navigation and cards
4 #2745 FEAT GUI: Add prompt table and seed detail view
5 #2749 FEAT GUI: Share image, audio, and video previews with datasets
6 #2750 FEAT GUI: Preserve chat drafts when exploring datasets
7 #2751 FEAT GUI: Import a dataset example into a chat draft
8 #2752 FEAT GUI: Add seed-prompt inspiration entry points
9 #2754 FEAT GUI: Expose built-in dataset provider metadata
10 #2753 FEAT GUI: Load built-in datasets into memory on request
11 #2756 FEAT GUI: Add dataset loading controls and access guidance
12 #2755 FEAT GUI: Expose configured objective-scorer presets
13 #2757 FEAT GUI: Accept exact seed selections in scenario requests
14 #2760 FEAT: Support custom scenarios over selected dataset examples
15 #2759 FEAT GUI: Configure a scenario from selected dataset examples
16 #2758 FEAT GUI: Configure scenario attack techniques and converters
17 #2761 DOC GUI: Document dataset workflows and cover cross-flow journeys
Contributor readiness
  • This parent is assigned to @romanlutz; child issues are available for external contributors when promoted.
  • Only the next ready child in this series carries help wanted. Initially that is item 1.
  • All later children carry not ready yet until their prerequisites have merged and the maintainer promotes them.
  • On promotion, remove not ready yet from the next item and apply help wanted. Do not mark the entire series help wanted at once.
Describe alternatives you've considered, if relevant
  • A second dataset store or copying selections into new persistent datasets would duplicate memory and is out of scope.
  • Automatically fetching all providers to obtain counts would make browsing expensive and can require gated access. Show available metadata without fetching.
  • Concatenating several unrelated prompts into one chat draft would change their meaning. Use the scenario flow for multi-select.
  • A new batch runner, general scorer builder, unscored scenario mode, dataset editor/deleter, or arbitrary user-supplied loader code is not part of this series.
Additional context

Read doc\code\framework.md and the applicable .github\instructions files before implementing a child issue. Keep business logic in the appropriate framework component; the GUI and backend are adapters.

Useful starting points: DatasetService.list_datasets_async(), the dataset routes/models, ChatWindow and ChatInputArea, MessageList, the media route and attack media mappers, ScenarioDetail, ScenarioConfigurationResolver, ScorerRegistry, and ScorerInitializer.

Coordinate with #2735 for counts without materializing unloaded datasets and #2653 for decomposition of the Scanner configuration page. These are related work, not requests to duplicate or take over those issues.

Contributors must be able to develop and test this feature with local seed fixtures, mock providers, and media fixtures without privileged Hugging Face access or paid target calls.

Lingua principale
Python
Stelle
4.5k
Fork
896
Merge medio
3g 8h
PR unite (30g)
191

Guida per i contributori

Nessuna guida per i contributori indicizzata per questo repository

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di microsoft/PyRIT

Tutte le issue di microsoft/PyRIT

Issue simili

Altre issue su Python

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.