Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 18 additions & 0 deletions src/anonymizer/engine/detection/detection_workflow.py
Original file line number Diff line number Diff line change
Expand Up @@ -670,6 +670,24 @@ def _get_augment_prompt(*, data_summary: str | None, labels: list[str], strict_l

<<EXAMPLE_BLOCK>>

Additional extraction requirements:
- The "value" field must be the EXACT verbatim span from the input text.
Copy the text character-for-character exactly as it appears.
Do NOT normalize, correct spelling, expand abbreviations, decode encodings,
infer hidden values, translate text, reformat numbers, or otherwise modify
the extracted span.
- Extract only text that is explicitly present in the input.
Never reconstruct, guess, or generate a value that does not appear verbatim.
- Identifiers may be disguised, fragmented, hyphenated, misspelled, obfuscated,
spaced out, mixed with punctuation, or written in words instead of digits.
Detect the identifier and extract the exact text as written.
Examples of disguised identifiers to detect:
- Phone numbers, SSNs, and credit card numbers spoken as digit words,
including "o" or "oh" used in place of zero:
"nine o two, five five five, one two three four"
- Names spelled out letter by letter with hyphens or commas:
"J-O-H-N", "M, A, R, Y"
Comment thread
asteier2026 marked this conversation as resolved.

Comment on lines +673 to +690

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Extraction requirements placed after the example block

Standard few-shot prompting places all instructions before the demonstrations so the example can illustrate those instructions. Here, "Additional extraction requirements" appears after <<EXAMPLE_BLOCK>>, so the concrete example does not show verbatim extraction of a disguised identifier — leaving the LLM without a worked instance of the most novel new behavior. Moving these requirements above <<EXAMPLE_BLOCK>> (or adding a second worked example that demonstrates digit-word extraction) would make the prompt self-consistent.

Note: If this suggestion doesn't match your team's coding style, reply to this and let me know. I'll remember it for next time!

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think it's good the way it is.

---
Input text: <<TAGGED_TEXT>>
Already-detected entities: <<SEED_ENTITIES>>
Expand Down
Loading