---
language:
- zh
- en
pipeline_tag: other
# widget:
# - text: "Paraphrase the text:\n\n"
# example_title: "example"
# inference:
# parameters:
# # temperature: 1
# # do_sample: true
# max_new_tokens: 50
---
# Hide-and-Seek隐私保护引擎
Github Repo / arXiv Preprint
## 介绍
Hide-and-Seek是一个中英双语隐私保护框架,由[hide](https://huggingface.co/tingxinli/hide-820m)与[seek](https://huggingface.co/tingxinli/seek-820m)两个模型组成。hide模型负责将用户输入中的敏感实体词替换为其他随机实体(加密),seek模型负责将输出中被替换掉的部分还原以对应原文本(解密)。此仓库是我们的社区开源版本,两个模型都以[bloom-1.1b](https://huggingface.co/bigscience/bloom-1b1)为底模,经过词表裁剪和微调后得到。
## 环境依赖
由于机器学习环境配置复杂耗时,我们提供了一个[colab notebook](https://drive.google.com/file/d/1ZkGegZ_JjPy6k_wWnjaUaqq4QbF9LoWG/view?usp=sharing)用于demo,我们在下方列出了必要依赖供您参考。如果您在自己的环境上运行,可能需要根据自己设备做出一些调整。
```shell
pip install torch==2.1.0+cu118
pip install transformers==4.35.0
```
## Quick Start
下面是单独调用hide模型的一个例子。
```ipython
from transformers import AutoTokenizer, AutoModelForCausalLM
tokenizer = AutoTokenizer.from_pretrained("tingxinli/
HaS-820m")
model = AutoModelForCausalLM.from_pretrained("tingxinli/
HaS-820m").to('cuda:0')
hide_template = """Paraphrase the text:%s\n\n"""
original_input = "张伟用苹果(iPhone 13)换了一箱好吃的苹果。"
input_text = hide_template % original_input
inputs = tokenizer(input_text, return_tensors='pt').to('cuda:0')
pred = model.generate(**inputs, max_length=100)
pred = pred.cpu()[0][len(inputs['input_ids'][0]):]
hide_input = tokenizer.decode(pred, skip_special_tokens=True)
print(hide_input)
# output:
# 李华用华为(Mate 20)换了一箱美味的橙子。
```
下面是单独调用seek模型完成摘要解密的一个例子。
```ipython
from transformers import AutoTokenizer, AutoModelForCausalLM
tokenizer = AutoTokenizer.from_pretrained("tingxinli/
HaS-820m")
model = AutoModelForCausalLM.from_pretrained("tingxinli/
HaS-820m").to('cuda:0')
seek_template = "Convert the text:\n%s\n\n%s\n\nConvert the text:\n%s\n\n"
hide_input = "前天,'2022北京海淀·颐和园经贸合作洽谈会成功举行,各大媒体竞相报道了活动盛况,小李第一时间将昨天媒体报道情况进行了整理。人民日报 中国青年网 国际联合报 北京商报 消费者观察报 上海晚报 杭州日报 海峡晚报 北京日报 北京市电视一台?北京新闻 人民网 手机雅虎网 网易北京 长三角经济网 新京网 中国农业新闻网 北京圆桌 居然有这么多!还有部分媒体将在未来一周陆续发稿,为经洽会点!为海淀点!阅读投诉阅读精选留言加载中以上留言由公众号筛选后显示了解留言功能详情"
hide_output = "2022北京海淀·颐和园经贸合作洽谈会成功举办,各大媒体广泛报道"
original_input = "昨天,’2016苏州吴中·太湖经贸合作洽谈会成功举行,各大媒体竞相报道了活动盛况,小吴第一时间将今天媒体报道情况进行了整理。新华社 中国青年报?中青在线 香港大公报?大公网 香港商报 消费者导报 扬子晚报 江南时报 苏州日报 姑苏晚报 城市商报 苏州广电一套?苏州新闻 新华网 手机凤凰网 网易苏州 长三角城市网 新苏网 中国商务新闻网 苏州圆桌 居然有这么多!还有部分媒体将在今后几天陆续发稿,为经洽会点!为吴中点!阅读投诉阅读精选留言加载中以上留言由公众号筛选后显示了解留言功能详情"
input_text = seek_template % (hide_input, hide_output, original_input)
inputs = tokenizer(input_text, return_tensors='pt').to('cuda:0')
pred = model.generate(**inputs, max_length=512)
pred = pred.cpu()[0][len(inputs['input_ids'][0]):]
original_output = tokenizer.decode(pred, skip_special_tokens=True)
print(original_output)
# output:
# 2016苏州吴中·太湖经贸合作洽谈会成功举办,各大媒体广泛报道
```
下面是一个完整调用Hide-and-Seek框架的例子。注意完整的隐私保护流程demo需要自备OpenAI的API token。
```ipython
# see hideAndSeek.py in this repo
from hideAndSeek import *
tokenizer = AutoTokenizer.from_pretrained("tingxinli/hide-820m")
model = AutoModelForCausalLM.from_pretrained("tingxinli/
HaS-820m").to('cuda:0')
original_input = "华纳兄弟影业(Warner Bro)著名的作品有《蝙蝠侠》系列、《超人》系列、《黑客帝国》系列和《指环王》系列。目前华纳未考虑推出《蝙蝠侠》系列新作。"
print('original input:', original_input)
hide_input = hide_encrypt(original_input, model, tokenizer)
print('hide input:', hide_input)
prompt = "Translate the following text into English.\n %s\n" % hide_input
hide_output = get_gpt_output(prompt)
print('hide output:', hide_output)
original_output = seek_decrypt(hide_input, hide_output, original_input, model, tokenizer)
print('original output:', original_output)
# output:
# original input: 华纳兄弟影业(Warner Bro)著名的作品有《蝙蝠侠》系列、《超人》系列、《黑客帝国》系列和《指环王》系列。目前华纳未考虑推出《蝙蝠侠》系列新作。
# hide input: 迪士尼影业(Disney Studios)著名的作品有《艺术作品1》系列、《艺术作品2》系列、《艺术作品3》系列和《艺术作品4》系列。目前迪士尼未考虑推出《艺术作品1》系列新作。
# hide output: Disney Studios' famous works include the "Artwork 1" series, "Artwork 2" series, "Artwork 3" series, and "Artwork 4" series. Currently, Disney has not considered releasing a new installment in the "Artwork 1" series.
# original output: Warner Bro's famous works include the "Batman" series, "Superman" series, "The Matrix" series, and "The Lord of the Rings" series. Currently, Warner has not considered releasing a new installment in the "Batman" series.
```
## 引用
```
@misc{chen2023hide,
title={Hide and Seek (HaS): A Lightweight Framework for Prompt Privacy Protection},
author={Yu Chen and Tingxin Li and Huiming Liu and Yang Yu},
year={2023},
eprint={2309.03057},
archivePrefix={arXiv},
primaryClass={cs.CR}
}
```