BUG: CharacterSpaceConverter introduces whitespace holes and trailing whitespace
Maintainer antworten meist innerhalb von 2 Tagen
Bewertung
- Schwierigkeit
- 2/5
- Geschätzter Aufwand
- 1-3 Stunden
- Anfängerfreundlichkeit
- 82/100
Rechercherichtung
Finde CharacterSpaceConverter und seine Tests im PyRIT-Quellcode. Lies die Implementierung des Converters und führe zuerst die vorhandenen Converter-Tests aus; ergänze Tests für Satzzeichen zwischen Wörtern, Kontraktionen und nachgestellte Satzzeichen. Fertig ist die Arbeit, wenn Satzzeichen vor dem Einfügen von Leerzeichen entfernt werden, die Ausgaben den Beispielen entsprechen und das Satzzeichenmuster einmal auf Modulebene kompiliert wird.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Beschreibung
Describe the bug
CharacterSpaceConverter spaces out characters with " ".join(prompt) before removing punctuation with re.sub(...). This order of operations introduces whitespace artifacts:
- Stripping punctuation leaves empty character "holes", producing 4 spaces between words (e.g.,
"Hello, world"->"H e l l o w o r l d"instead of the standard 3-space inter-word spacing"H e l l o w o r l d"). - Contractions or mid-word punctuation leave double spaces (e.g.,
"How's"->"H o w s"instead of"H o w s"). - Trailing punctuation leaves unwanted trailing whitespace (e.g.,
"hello!"->"h e l l o ").
Additionally, the punctuation regex is recompiled on every invocation of convert_async rather than precompiled at module level.
Steps/Code to Reproduce
import asyncio
from pyrit.converter import CharacterSpaceConverter
async def main():
converter = CharacterSpaceConverter()
res1 = await converter.convert_async(prompt="hello!")
print(repr(res1.output_text)) # prints 'h e l l o ' with trailing space
res2 = await converter.convert_async(prompt="Hello, world! How's everything?")
print(repr(res2.output_text)) # prints 'H e l l o w o r l d H o w s e v e r y t h i n g '
asyncio.run(main())
Expected Results
Punctuation should be stripped prior to character spacing so spacing remains uniform without artificial gaps or trailing whitespace:
"hello!"->'h e l l o'"Hello, world! How's everything?"->'H e l l o w o r l d H o w s e v e r y t h i n g'
Actual Results
'h e l l o ''H e l l o w o r l d H o w s e v e r y t h i n g '
Versions
- OS: Windows 11
- Python version: 3.12
- PyRIT version: main
- Vorherrschende Sprache
- Python
- Sterne
- 4.7k
- Forks
- 1k
- Ø Merge
- 2 T. 4 Std.
- Gemergte PRs (30 T.)
- 510
Entwicklungsumgebung
Startet den Dev-Container des Projekts im Browser, mit Ihrem eigenen GitHub-Konto.
- Kein Dockerfile und keine Docker-Compose-Datei
- Hat eine Pull-Request-Vorlage
- Kein Beitragsleitfaden
Erste Schritte
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Mehr aus microsoft/PyRIT
-
BUG: HuggingFaceChatTarget runs model.generate() on the event loopEvtl. vergeben @Shizoqua hat das heute übernommen. Offen
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 76/100
Maintainer antworten meist innerhalb von 2 Tagen
-
BUG: StaticPromptInjectionScorer misses modern frontier chat template delimiters (DeepSeek, Cohere Command R, Mistral)Evtl. vergeben @Kaap10 hat das heute übernommen. Offen
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 78/100
Maintainer antworten meist innerhalb von 2 Tagen
-
Parameter required status is lost after wire round-tripEvtl. vergeben @its-amann hat das vor 3 Tagen übernommen. OffenBug: triage help wanted
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 72/100
microsoft/PyRIT#3854 · 2 Kommentare · 1 zugewiesene Person ·
Maintainer antworten meist innerhalb von 2 Tagen
-
BUG: LLMGenericTextConverter identifier changes between processes for set-valued template parametersEvtl. vergeben @samrudhi03 hat das vor 3 Tagen übernommen. OffenBug: triage
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 75/100
microsoft/PyRIT#3841 · 1 Kommentar · 1 zugewiesene Person ·
Maintainer antworten meist innerhalb von 2 Tagen
-
BUG: SelfAskGeneral scorers leave their output keys out of the identifierEvtl. vergeben @Hrushikesh-ramilla hat das vor 4 Tagen übernommen. OffenBug: triage
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 72/100
Maintainer antworten meist innerhalb von 2 Tagen
Alle Issues in microsoft/PyRIT
Ähnliche Issues
-
ChatBedrockConverse changes the keys of JSON tool results to camelCase (`order_id` becomes `orderId`)Evtl. vergeben @geyazheng hat das heute übernommen. Offen
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 78/100
langchain-ai/langchain-aws#1469 ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 88/100
EESSI/docs#949 · 1 Kommentar ·
Maintainer antworten meist innerhalb von 1 Tag
-
b4b usability
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 68/100
Maintainer antworten meist innerhalb von 1 Tag
-
fix(schedule): align list_tasks since cursor filter boundary from strict > to >=Evtl. vergeben @bfs2021 hat das heute übernommen. Offenagent-ready bug p2 schedule
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 83/100
allenporter/supernote#540 ·
Maintainer antworten meist innerhalb von 1 Tag
-
bug
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 76/100
frazane/scoringrules#164 ·
Maintainer antworten meist innerhalb von 1 Tag