commit b6f83cc8521b85952049b08551e7512a4902f099 Author: ModelHub XC Date: Wed Jun 17 14:51:18 2026 +0800 初始化项目,由ModelHub XC社区提供模型 Model: gabriellarson/Anonymizer-4B-GGUF Source: Original Platform diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..95bc148 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,59 @@ +*.7z filter=lfs diff=lfs merge=lfs -text +*.arrow filter=lfs diff=lfs merge=lfs -text +*.bin filter=lfs diff=lfs merge=lfs -text +*.bz2 filter=lfs diff=lfs merge=lfs -text +*.ckpt filter=lfs diff=lfs merge=lfs -text +*.ftz filter=lfs diff=lfs merge=lfs -text +*.gz filter=lfs diff=lfs merge=lfs -text +*.h5 filter=lfs diff=lfs merge=lfs -text +*.joblib filter=lfs diff=lfs merge=lfs -text +*.lfs.* filter=lfs diff=lfs merge=lfs -text +*.mlmodel filter=lfs diff=lfs merge=lfs -text +*.model filter=lfs diff=lfs merge=lfs -text +*.msgpack filter=lfs diff=lfs merge=lfs -text +*.npy filter=lfs diff=lfs merge=lfs -text +*.npz filter=lfs diff=lfs merge=lfs -text +*.onnx filter=lfs diff=lfs merge=lfs -text +*.ot filter=lfs diff=lfs merge=lfs -text +*.parquet filter=lfs diff=lfs merge=lfs -text +*.pb filter=lfs diff=lfs merge=lfs -text +*.pickle filter=lfs diff=lfs merge=lfs -text +*.pkl filter=lfs diff=lfs merge=lfs -text +*.pt filter=lfs diff=lfs merge=lfs -text +*.pth filter=lfs diff=lfs merge=lfs -text +*.rar filter=lfs diff=lfs merge=lfs -text +*.safetensors filter=lfs diff=lfs merge=lfs -text +saved_model/**/* filter=lfs diff=lfs merge=lfs -text +*.tar.* filter=lfs diff=lfs merge=lfs -text +*.tar filter=lfs diff=lfs merge=lfs -text +*.tflite filter=lfs diff=lfs merge=lfs -text +*.tgz filter=lfs diff=lfs merge=lfs -text +*.wasm filter=lfs diff=lfs merge=lfs -text +*.xz filter=lfs diff=lfs merge=lfs -text +*.zip filter=lfs diff=lfs merge=lfs -text +*.zst filter=lfs diff=lfs merge=lfs -text +*tfevents* filter=lfs diff=lfs merge=lfs -text +Anonymizer-4B-F16.gguf filter=lfs diff=lfs merge=lfs -text +Anonymizer-4B-IQ2_M.gguf filter=lfs diff=lfs merge=lfs -text +Anonymizer-4B-IQ2_S.gguf filter=lfs diff=lfs merge=lfs -text +Anonymizer-4B-IQ2_XS.gguf filter=lfs diff=lfs merge=lfs -text +Anonymizer-4B-IQ2_XXS.gguf filter=lfs diff=lfs merge=lfs -text +Anonymizer-4B-IQ3_M.gguf filter=lfs diff=lfs merge=lfs -text +Anonymizer-4B-IQ3_S.gguf filter=lfs diff=lfs merge=lfs -text +Anonymizer-4B-IQ3_XS.gguf filter=lfs diff=lfs merge=lfs -text +Anonymizer-4B-IQ3_XXS.gguf filter=lfs diff=lfs merge=lfs -text +Anonymizer-4B-IQ4_NL.gguf filter=lfs diff=lfs merge=lfs -text +Anonymizer-4B-IQ4_XS.gguf filter=lfs diff=lfs merge=lfs -text +Anonymizer-4B-Q2_K.gguf filter=lfs diff=lfs merge=lfs -text +Anonymizer-4B-Q2_K_S.gguf filter=lfs diff=lfs merge=lfs -text +Anonymizer-4B-Q3_K_L.gguf filter=lfs diff=lfs merge=lfs -text +Anonymizer-4B-Q3_K_M.gguf filter=lfs diff=lfs merge=lfs -text +Anonymizer-4B-Q3_K_S.gguf filter=lfs diff=lfs merge=lfs -text +Anonymizer-4B-Q4_0.gguf filter=lfs diff=lfs merge=lfs -text +Anonymizer-4B-Q4_K_M.gguf filter=lfs diff=lfs merge=lfs -text +Anonymizer-4B-Q4_K_S.gguf filter=lfs diff=lfs merge=lfs -text +Anonymizer-4B-Q5_0.gguf filter=lfs diff=lfs merge=lfs -text +Anonymizer-4B-Q5_K_M.gguf filter=lfs diff=lfs merge=lfs -text +Anonymizer-4B-Q5_K_S.gguf filter=lfs diff=lfs merge=lfs -text +Anonymizer-4B-Q6_K.gguf filter=lfs diff=lfs merge=lfs -text +Anonymizer-4B-Q8_0.gguf filter=lfs diff=lfs merge=lfs -text diff --git a/Anonymizer-4B-F16.gguf b/Anonymizer-4B-F16.gguf new file mode 100644 index 0000000..73d11a6 --- /dev/null +++ b/Anonymizer-4B-F16.gguf @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:69a62a2a65e2b340e6d26a862d8f3393830a037c76a4c39f48eb21b332d78c26 +size 8051284736 diff --git a/Anonymizer-4B-IQ2_M.gguf b/Anonymizer-4B-IQ2_M.gguf new file mode 100644 index 0000000..1c84b38 --- /dev/null +++ b/Anonymizer-4B-IQ2_M.gguf @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:245e787dbe4abf7dda106b7077a9060cad177c7658805d4c3004a311e97d16df +size 1512983520 diff --git a/Anonymizer-4B-IQ2_S.gguf b/Anonymizer-4B-IQ2_S.gguf new file mode 100644 index 0000000..0490935 --- /dev/null +++ b/Anonymizer-4B-IQ2_S.gguf @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6202de870169030990dea7fb1f1f4e8bd2993f8fc967e5c22511bce80b5f8427 +size 1417300960 diff --git a/Anonymizer-4B-IQ2_XS.gguf b/Anonymizer-4B-IQ2_XS.gguf new file mode 100644 index 0000000..e6ae7cb --- /dev/null +++ b/Anonymizer-4B-IQ2_XS.gguf @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cc65ab4e706624aa9aec64619a7641c43b281b292b232c27a8f9851c43531722 +size 1354099680 diff --git a/Anonymizer-4B-IQ2_XXS.gguf b/Anonymizer-4B-IQ2_XXS.gguf new file mode 100644 index 0000000..2ae2cae --- /dev/null +++ b/Anonymizer-4B-IQ2_XXS.gguf @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:69d61b5a152d812e04faaa336b246543be2fd6e428243e7961c927fc8e0f08b8 +size 1246620640 diff --git a/Anonymizer-4B-IQ3_M.gguf b/Anonymizer-4B-IQ3_M.gguf new file mode 100644 index 0000000..0841e69 --- /dev/null +++ b/Anonymizer-4B-IQ3_M.gguf @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:81c52490640eefc09127483940114b945836d4e2d0b719f998fda3a50313d835 +size 1962895840 diff --git a/Anonymizer-4B-IQ3_S.gguf b/Anonymizer-4B-IQ3_S.gguf new file mode 100644 index 0000000..e75564b --- /dev/null +++ b/Anonymizer-4B-IQ3_S.gguf @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:510460ec401cddd315643957527bdb50ee56e5db07d3663820ed9d84dbeed0c3 +size 1899530720 diff --git a/Anonymizer-4B-IQ3_XS.gguf b/Anonymizer-4B-IQ3_XS.gguf new file mode 100644 index 0000000..2f6e14d --- /dev/null +++ b/Anonymizer-4B-IQ3_XS.gguf @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a3ed36ef71eb54030f4e8427c82b1ed7d59d4f4bb1ca00a1202e7287efa5174e +size 1814374880 diff --git a/Anonymizer-4B-IQ3_XXS.gguf b/Anonymizer-4B-IQ3_XXS.gguf new file mode 100644 index 0000000..86fb5a3 --- /dev/null +++ b/Anonymizer-4B-IQ3_XXS.gguf @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c898ab5eb821cbc35025fe362f59d2a24337e4f0e9420c1fcd516c61b9cc8785 +size 1670188000 diff --git a/Anonymizer-4B-IQ4_NL.gguf b/Anonymizer-4B-IQ4_NL.gguf new file mode 100644 index 0000000..4709eb9 --- /dev/null +++ b/Anonymizer-4B-IQ4_NL.gguf @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:463e75469695e2766389984ce3851ed2cebf2c5244e2eefb57cceb722f7bc5d3 +size 2381343200 diff --git a/Anonymizer-4B-IQ4_XS.gguf b/Anonymizer-4B-IQ4_XS.gguf new file mode 100644 index 0000000..ae24b55 --- /dev/null +++ b/Anonymizer-4B-IQ4_XS.gguf @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9cbe486602dc1a789598c04201e121e22ef9fb34d1c75a0823af5baaf28c23ea +size 2270751200 diff --git a/Anonymizer-4B-Q2_K.gguf b/Anonymizer-4B-Q2_K.gguf new file mode 100644 index 0000000..a85ee64 --- /dev/null +++ b/Anonymizer-4B-Q2_K.gguf @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:683fd1495bb6d6927e6a7fd10d4eb89622eebc28f108263fa13cbd418715a495 +size 1669499360 diff --git a/Anonymizer-4B-Q2_K_S.gguf b/Anonymizer-4B-Q2_K_S.gguf new file mode 100644 index 0000000..d33ca05 --- /dev/null +++ b/Anonymizer-4B-Q2_K_S.gguf @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ff892d940a1fd836ea656aeb2ea08e343e06d71c9c06c65823befc7655e51062 +size 1563453920 diff --git a/Anonymizer-4B-Q3_K_L.gguf b/Anonymizer-4B-Q3_K_L.gguf new file mode 100644 index 0000000..ef98753 --- /dev/null +++ b/Anonymizer-4B-Q3_K_L.gguf @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fd0f1a733709a23ef24d2baf420e486bcbf68aa3e303399ec4df3124a58fdcc1 +size 2239785440 diff --git a/Anonymizer-4B-Q3_K_M.gguf b/Anonymizer-4B-Q3_K_M.gguf new file mode 100644 index 0000000..fe3d456 --- /dev/null +++ b/Anonymizer-4B-Q3_K_M.gguf @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:09a6bf61ba88880ddc22fd2874e6fa9609fed083f96b60e5684c82b680fb2db9 +size 2075617760 diff --git a/Anonymizer-4B-Q3_K_S.gguf b/Anonymizer-4B-Q3_K_S.gguf new file mode 100644 index 0000000..a7dfa3e --- /dev/null +++ b/Anonymizer-4B-Q3_K_S.gguf @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8f67b1cebe81dc8c4177cbb691edeb5d505e8c68a8f4f075e9e9a9eda683c79c +size 1886996960 diff --git a/Anonymizer-4B-Q4_0.gguf b/Anonymizer-4B-Q4_0.gguf new file mode 100644 index 0000000..abcff5a --- /dev/null +++ b/Anonymizer-4B-Q4_0.gguf @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cc37d194fb62c34d9554ab550a75a007a7b4e3a6feba4d589fd06eb9f8a32fe4 +size 2375772640 diff --git a/Anonymizer-4B-Q4_K_M.gguf b/Anonymizer-4B-Q4_K_M.gguf new file mode 100644 index 0000000..5f79ddd --- /dev/null +++ b/Anonymizer-4B-Q4_K_M.gguf @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:32f26d37c110fdfd304169faeb17f5cb46b48675af8d9d5fd6e3af6850a9a3d1 +size 2497280480 diff --git a/Anonymizer-4B-Q4_K_S.gguf b/Anonymizer-4B-Q4_K_S.gguf new file mode 100644 index 0000000..59b165d --- /dev/null +++ b/Anonymizer-4B-Q4_K_S.gguf @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:14f9f64f09800b122e497444284967e878548f96d14ce5a5444445fe47f52795 +size 2383309280 diff --git a/Anonymizer-4B-Q5_0.gguf b/Anonymizer-4B-Q5_0.gguf new file mode 100644 index 0000000..1fe331c --- /dev/null +++ b/Anonymizer-4B-Q5_0.gguf @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:070e5c77c3098804be82d093e151b603f44b0c16d4370401093dd7fc746a8877 +size 2829937120 diff --git a/Anonymizer-4B-Q5_K_M.gguf b/Anonymizer-4B-Q5_K_M.gguf new file mode 100644 index 0000000..4a006cc --- /dev/null +++ b/Anonymizer-4B-Q5_K_M.gguf @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1631e465b29ce11d4ddaddb53335f5f1d30943ebf0879f096f88f09683815575 +size 2889513440 diff --git a/Anonymizer-4B-Q5_K_S.gguf b/Anonymizer-4B-Q5_K_S.gguf new file mode 100644 index 0000000..da876d0 --- /dev/null +++ b/Anonymizer-4B-Q5_K_S.gguf @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0e8959bc80e34ef2f74f70790a2c08a7ea9790d8572ae6938e1f097809f7a3ec +size 2823711200 diff --git a/Anonymizer-4B-Q6_K.gguf b/Anonymizer-4B-Q6_K.gguf new file mode 100644 index 0000000..6bbac01 --- /dev/null +++ b/Anonymizer-4B-Q6_K.gguf @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0b98f06b8b70fd7e91b587997e7d1b417a77461ef1736328b20719926bdc956c +size 3306260960 diff --git a/Anonymizer-4B-Q8_0.gguf b/Anonymizer-4B-Q8_0.gguf new file mode 100644 index 0000000..5a934b6 --- /dev/null +++ b/Anonymizer-4B-Q8_0.gguf @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1eb0f5b98d979e2e1bb9329190abe289fb61beb762b258bd8b36f51d888d2dc6 +size 4280404960 diff --git a/README.md b/README.md new file mode 100644 index 0000000..1d2f606 --- /dev/null +++ b/README.md @@ -0,0 +1,75 @@ +--- +library_name: transformers +base_model: +- eternisai/Anonymizer-4B +--- +# Model Card for eternisai/Anonymizer-4B +SLMs for semantically similar replacement of PII to provide better end-user privacy. +### Model description + +The **Anonymizer-4B** is the strongest model in the Enchanted anonymizer series. Effectively matching GPT-4.1 while being thousands of times smaller. + +It is the most accurate variant available and powers advanced anonymization in [Enchanted](http://link.freysa.ai/appstore). + +## Intended use + +* **Primary use**: High-accuracy anonymizer inside Enchanted. +* **Secondary use**: Deployments where top-quality anonymization is critical (enterprise, research). + +## Training details + +* **Base**: Qwen3-4B. +* **Data**: ~30k samples covering PII replacement + non-replacement categories. +* **Method**: Supervised fine-tuning → GRPO with GPT-4.1 as judge. +* **Score**: 9.55/10 on anonymization quality. +* **Latency**: <250ms TTFT, <2s full completion (quantized). + +## Limitations + +* Largest model in the series, not suitable for mobile inference as of August 2025. +* Requires MacBook-class hardware or above for real-time use. + +## Usage example + +```json + +{"name": "replace_entities", "arguments": {"replacements": [ + {"original": "Marc", "replacement": "Robert"}, + {"original": "cloud infrastructure", "replacement": "enterprise software"} +]}} + +``` + +## Usage prompt template + +The models expect input in this specific format: + +``` +[BEGIN OF TASK INSTRUCTION] +You are an anonymizer. Your task is to identify and replace personally identifiable information (PII) in the given text. +Replace PII entities with semantically equivalent alternatives that preserve the context needed for a good response. +If no PII is found or replacement is not needed, return an empty replacements list. +REPLACEMENT RULES: +• Personal names: Replace private or small-group individuals. Pick same culture + gender + era; keep surnames aligned across family members. DO NOT replace globally recognised public figures (heads of state, Nobel laureates, A-list entertainers, Fortune-500 CEOs, etc.). +• Companies / organisations: Replace private, niche, employer & partner orgs. Invent a fictitious org in the same industry & size tier; keep legal suffix. Keep major public companies (anonymity set ≥ 1,000,000). +• Projects / codenames / internal tools: Always replace with a neutral two-word alias of similar length. +• Locations: Replace street addresses, buildings, villages & towns < 100k pop with a same-level synthetic location inside the same state/country. Keep big cities (≥ 1M), states, provinces, countries, iconic landmarks. +• Dates & times: Replace birthdays, meeting invites, exact timestamps. Shift day/month by small amounts while KEEPING THE SAME YEAR to maintain temporal context. DO NOT shift public holidays or famous historic dates ("July 4 1776", "Christmas Day", "9/11/2001", etc.). Keep years, fiscal quarters, decade references unchanged. +• Identifiers: (emails, phone #s, IDs, URLs, account #s) Always replace with format-valid dummies; keep domain class (.com big-tech, .edu, .gov). +• Monetary values: Replace personal income, invoices, bids by × [0.8 – 1.25] to keep order-of-magnitude. Keep public list prices & market caps. +• Quotes / text snippets: If the quote contains PII, swap only the embedded tokens; keep the rest verbatim. +[END OF TASK INSTRUCTION] +[BEGIN OF AVAILABLE TOOLS] +[{"type": "function", "function": {"name": "replace_entities", "description": "Replace PII entities with anonymized versions", "parameters": {"type": "object", "properties": {"replacements": {"type": "array", "items": {"type": "object", "properties": {"original": {"type": "string"}, "replacement": {"type": "string"}}, "required": ["original", "replacement"]}}}, "required": ["replacements"]}}}] +[END OF AVAILABLE TOOLS] +[BEGIN OF FORMAT INSTRUCTION] +Use the replace_entities tool to specify replacements. Your response must use the tool call wrapper format: +<|tool_call|>{"name": "replace_entities", "arguments": {"replacements": [{"original": "PII_TEXT", "replacement": "ANONYMIZED_TEXT"}, ...]}} +If no replacements are needed, use: +<|tool_call|>{"name": "replace_entities", "arguments": {"replacements": []}} +Remember to wrap your entire tool call in <|tool_call|> and tags. +[END OF FORMAT INSTRUCTION] +[BEGIN OF QUERY] +Your text to anonymize goes here +[END OF QUERY] +``` \ No newline at end of file