| import gradio as gr | |
| from models.watermark_faster import watermark_model | |
| import pdb | |
| from options import get_parser_main_model | |
| opts = get_parser_main_model().parse_args() | |
| model = watermark_model(language=opts.language, mode=opts.mode, tau_word=opts.tau_word, lamda=opts.lamda) | |
| def watermark_embed_demo(raw): | |
| watermarked_text = model.embed(raw) | |
| return watermarked_text | |
| def watermark_extract(raw): | |
| is_watermark, p_value, n, ones, z_value = model.watermark_detector_fast(raw) | |
| confidence = (1 - p_value) * 100 | |
| return f"{confidence:.2f}%" | |
| def precise_watermark_detect(raw): | |
| is_watermark, p_value, n, ones, z_value = model.watermark_detector_precise(raw) | |
| confidence = (1 - p_value) * 100 | |
| return f"{confidence:.2f}%" | |
| demo = gr.Blocks() | |
| with demo: | |
| with gr.Column(): | |
| gr.Markdown("# Watermarking Text Generated by Black-Box Language Models") | |
| inputs = gr.TextArea(label="Input text", placeholder="Copy your text here...") | |
| output = gr.Textbox(label="Watermarked Text") | |
| analysis_button = gr.Button("Inject Watermark") | |
| inputs_embed = [inputs] | |
| analysis_button.click(fn=watermark_embed_demo, inputs=inputs_embed, outputs=output) | |
| inputs_w = gr.TextArea(label="Text to Analyze", placeholder="Copy your watermarked text here...") | |
| mode = gr.Dropdown( | |
| label="Detection Mode", choices=["Fast", "Precise"], default="Fast" | |
| ) | |
| output_detect = gr.Textbox(label="Confidence (the likelihood of the text containing a watermark)") | |
| detect_button = gr.Button("Detect") | |
| def detect_watermark(inputs_w, mode): | |
| if mode == "Fast": | |
| return watermark_extract(inputs_w) | |
| else: | |
| return precise_watermark_detect(inputs_w) | |
| detect_button.click(fn=detect_watermark, inputs=[inputs_w, mode], outputs=output_detect) | |
| if __name__ == "__main__": | |
| gr.close_all() | |
| demo.title = "Watermarking Text Generated by Black-Box Language Models" | |
| demo.launch(share = True, server_port=8899) |