NeMo Anonymizer — скилл

Скилл NVIDIA ведет агента от описания приватности до скрипта, который находит и заменяет личные данные в текстовых наборах.

  • 137 ★ репозитория
  • Последний коммит
  • Apache-2.0
Скилл

Расширенный доступ

Почему такой уровень

  • Сгенерированный скрипт отправляет тексты с персональными данными в модели OpenRouter, если не заданы свои провайдеры.
  • Скрипт запускает код на данных пользователя и тратит вызовы платной модели.
Все причины и проверки

nvidia-nemo/anonymizer

Установка

Работает в

В терминале, через SkillFoxx CLI

npx skillfoxx add skills/nemo-anonymizer

Определит агенты на машине, покажет уровень доступа и зафиксирует версию.

Другие способы установки

Доступ и проверки

Как мы проверяем

Расширенный доступИнструмент запускает код или ходит в сеть, а внешние данные только читает.

  • Сгенерированный скрипт отправляет тексты с персональными данными в модели OpenRouter, если не заданы свои провайдеры.
  • Скрипт запускает код на данных пользователя и тратит вызовы платной модели.

Это чужой код. Посмотрите файлы в репозитории перед установкой.

Что делает

Скилл `anonymizer` поставляется вместе с библиотекой NeMo Anonymizer. Агент уточняет допустимый остаток утечки и цель приватности, называет режим и пишет один запускаемый скрипт Python с `AnonymizerConfig`. Режим Replace находит сущности и заменяет их на месте стратегиями Substitute, Redact, Annotate или Hash; режим Rewrite переписывает весь текст, чтобы убрать и косвенные идентификаторы. Скрипт сначала запускает `preview` на нескольких строках, показывает сбойные записи и метрики качества, при желании оценивает результат судьей на основе модели и только после одобрения запускает полный прогон. Скрипт остается у пользователя для повторных запусков и контроля версий.

Для кого. Инженерам данных и разработчикам, которые готовят текстовые наборы с персональными данными: клинические заметки, обращения, логи, биографии.

Подходит, если

  • Перед обучением или передачей подрядчику из набора обращений убирают имена, почту и телефоны.
  • Клинические заметки или показания переписывают так, чтобы не осталось и косвенных признаков человека.
  • Нужна одинаковая замена одного значения во всех записях: для этого берут `Hash`.
  • Перед полным прогоном хотят увидеть превью, метрики покрытия сущностей и список пропусков.

Не подходит, если

  • Данные нельзя отправлять в OpenRouter или другой внешний сервис, а своих моделей нет.
  • Нужно автоматическое решение без вопросов: скилл всегда спрашивает режим и порог утечки.
  • Данные табличные и числовые, без свободного текста.

Пример запроса к агенту

Обезличь колонку `biography` в `bios.csv` скиллом anonymizer: сначала спроси про режим, потом покажи превью на трех строках.

Ограничения

Скилл только пишет скрипт, а работа идет в библиотеке `nemo-anonymizer`, которую нужно ставить отдельно командой `pip install nemo-anonymizer`. По умолчанию библиотека ждет локальный эндпоинт GLiNER2 для поиска сущностей и использует тексты в OpenRouter для проверки, поэтому нужен `OPENROUTER_API_KEY`, а чувствительные данные уходят во внешний сервис по его правилам. Стратегия Annotate оставляет исходный текст и не годится для продакшена. Оценка качества судьей на модели платная и диагностическая: сам вывод она не меняет.

Как отключить. Удалите папку `anonymizer` из каталога скиллов агента. Библиотеку снимите командой `pip uninstall nemo-anonymizer`, а ключ OpenRouter отзовите, если он больше не нужен.

Частые вопросы

Как поставить скилл NeMo Anonymizer?

Выполните `npx skills add NVIDIA-NeMo/Anonymizer`. Затем вызовите его командой `/anonymizer` либо опишите задачу, и скилл подключится сам.

Чем режимы Replace и Rewrite отличаются?

Replace находит сущности и заменяет каждую на месте: быстрее, дешевле и сохраняет форму текста. Rewrite переписывает текст целиком, убирает косвенные идентификаторы, но стоит дороже и может изменить структуру.

Как заменять одно значение одинаково во всех записях?

Берите `Hash`. Стратегия `Substitute` последовательна только внутри одной строки, а для связи между записями она не подходит.

Что делать, если после превью остались пропущенные записи?

Сначала исправьте источник сбоя: лимиты, авторизацию или провайдера модели. Настройки стратегии выпавшие строки не вернут.

Можно ли обойтись без OpenRouter?

Да. Передайте свой файл провайдеров в `Anonymizer(model_providers="path/to/model_providers.yaml")` и укажите собственные модели.

Обсуждение

Вопросов и отзывов пока нет.

Скиллы
Официальный

Официальный скилл NVIDIA для Claude Code и Codex: по описанию набора данных агент собирает конфигурацию, проверяет, показывает превью и создает синтетику

СкиллРасширенный доступ2,4 тыс.Звезды репозитория
Официальный

Скиллы NVIDIA для биологии и химии: агент предсказывает структуры белков, стыкует молекулы, проектирует белки и разбирает геномы

СкиллРасширенный доступ507Звезды репозитория

Скилл Claude Code учит агента библиотеке tangermeme для анализа геномных нейросетей: DeepLIFT/SHAP, мутагенез, дизайн.

СкиллМинимальный доступ333Звезды репозитория

Скилл учит агента писать код на nvMolKit: GPU-версии отпечатков, сходства, конформеров и кластеризации молекул из RDKit.

СкиллМинимальный доступ284Звезды репозитория

База знаний из ваших документов, где люди и ИИ-агенты ведут разметку вместе, а MCP-сервер и скиллы подключают к ней Claude Code

MCP-серверРасширенный доступ93Звезды репозитория

Скилл для агента: превращает статью с arxiv в минимальную реализацию на Python, где код привязан к разделам и формулам, а неуказанные места честно помечены

СкиллРасширенный доступ1,5 тыс.Звезды репозитория

Сравнение с похожими

Карточки с тем же главным запросом: чем они отличаются.

ИнструментОфициальныйАвторизацияЗвезды репозиторияГлавное отличие
NeMo Anonymizer (эта карточка)нет137
PII Guardнет255PII Guard локально обезличивает документы на традиционном китайском с возвратом после ИИ; NeMo Anonymizer готовит скрипт для текстовых наборов с выбором стратегий
Анонимизатор персональных данных по 152-ФЗнетне нужна5MCP-сервер маскирует персональные данные под 152-ФЗ перед отправкой в LLM; скилл NVIDIA строит конвейер для целого набора данных

Коротко о README

Библиотека находит сущности через GLiNER-PII и проверку моделью, затем заменяет их четырьмя стратегиями. Основной вход в README: CLI с командами `preview`, `run`, `validate` и Python API, а раздел про скилл вынесен отдельно.

Бейдж для README

Исходный SKILL.md

---
# SPDX-FileCopyrightText: Copyright (c) 2025-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
# SPDX-License-Identifier: Apache-2.0
name: anonymizer
description: Use when the user wants to anonymize a text dataset, redact PII, de-identify free-text data, or rewrite text to remove sensitive or inferable identifying information. Produces a runnable Python script that calls the NeMo Anonymizer pipeline (detection → replace or rewrite).
license: Apache-2.0
metadata:
  author: Aaron Gonzales <aagonzales@nvidia.com>
---

# Before You Start

Do not explore the workspace first. The workflow's data-inspection step shows you what you need.

# Goal

Anonymize a text dataset using NeMo Anonymizer in the way the user describes:

$ARGUMENTS

The output is a single runnable Python script that builds an `AnonymizerConfig`, previews results on a few rows, inspects failures and quality metrics, optionally scores output with LLM-as-judge evaluation (Replace and Rewrite modes), and (on user approval) runs the full pipeline. The script is the durable artifact — the user keeps it for re-runs, version control, and production.

# Workflow

Read `references/interactive.md` and follow it. Anonymization is high-stakes,
so there is no autopilot mode. Even when the user says "you decide" or "be
opinionated", ask the minimum questions needed to choose `risk_tolerance` and
phrase `privacy_goal`. The user must make those choices based on their
regulatory and business context.

# Rules

- **Always preview before running the full pipeline.** Preview is cheap; a full run can be expensive and slow.
- **If `result.failed_records` is non-empty after preview, fix that *before* tweaking strategy.** Dropped rows are a model/provider/infra problem (rate limits, auth, etc.), not a config problem. Strategy knobs won't help. See `docs/troubleshooting.md` "Did the run actually complete cleanly?" or the [published troubleshooting guide](https://nvidia-nemo.github.io/Anonymizer/dev/troubleshooting/).
- **Ask the user which mode.** Briefly describe both: Replace detects entities and replaces each in place (faster, cheaper, keeps shape); Rewrite transforms the full text to also remove inferable identifiers (more expensive, may restructure). Use the data shape as a hint — free-text with implicit identifiers (clinical notes, biographies, depositions) leans Rewrite; structured records / log lines lean Replace — but the user picks.
- **For cross-record consistency** (same value → same replacement everywhere), use `Hash`, not `Substitute`. `Substitute` is consistent within a row only.
- **In Replace mode, default to `Substitute`** if the user hasn't specified a strategy. It's the most general-purpose choice and matches the bulk of production usage.
- **`Annotate` is for inspection, not production.** Its output keeps the original entity text and is not privacy-safe. Use it during iteration to confirm detection is working, then switch.
- **Evaluation is opt-in and runs as a separate step** (Replace and Rewrite modes). After `preview()` / `run()`, call `anonymizer.evaluate(result)` to score the output with LLM-as-judge. **Entity coverage always runs** in both modes — it reports detection recall over the judge's unique candidate values (`entity_coverage` + `missed_entities`). On top of that: Replace `Substitute` adds three quality judges (type fidelity, relational consistency, attribute fidelity); Rewrite adds the holistic privacy/quality/style judge. Detection validity is **opt-in** via `EvaluateConfig(compute_detection_validity=True)` (off by default). Evaluation is diagnostic — it scores quality, it does not change the anonymized output.
- **Always set `data_summary` on the input**, even briefly. It is the single cheapest quality lever and it improves both detection and rewrite.

Сообщить о проблеме