File size: 6,899 Bytes
3494c6b
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
8420965
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3494c6b
 
 
 
 
 
de2b8c1
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3494c6b
 
 
 
 
45b7c6c
3494c6b
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
import gradio as gr
from utils import *
from transformers import pipeline

css = """

"""

ori_model = None
edit_model = None
# input=None

def slowly_reverse(word, progress=gr.Progress()):
    progress(0, desc="Starting")
    time.sleep(1)
    progress(0.05)
    new_string = ""
    for letter in progress.tqdm(word, desc="Editing"):
        time.sleep(0.25)
        new_string = letter + new_string
    return new_string

with gr.Blocks(css=css,theme=gr.themes.Soft(text_size="sm")) as demo:
    with gr.Row(equal_height=True):
        gr.HTML(
                """
                <div style="display: flex; flex-direction: column; align-items: center;">
                    <h1>🔧EasyEdit: An Easy-to-use Knowledge Editing Framework for Large Language Models</h1>
                    
                    <p>
                    📑[<a href="https://huggingface.co/papers/2308.07269">Paper</a>]
                    👨‍💻[<a href="https://github.com/zjunlp/EasyEdit" target="_blank"><span class="icon"><i class="fab fa-github"></i></span>Code</a>]
                    📄[<a href="https://zjunlp.gitbook.io/easyedit">Docs</a>]
                    🤗[<a href="https://huggingface.co/spaces/zjunlp/EasyEdit" target="_blank">Demo</a>]
                    [<a href="https://arxiv.org/abs/2211.11031">via GRACE</a>]
                    </p>
                </div>
                """
)
  # gr.HTML("""<div style="text-align: center; margin: 0 auto;"><p><h1> Knowledge Editing</h1></div>""")

    # with gr.Row():
    #     gr.Markdown("<p align='center'><a href='https://github.com/zjunlp/EasyEdit'>🔧https://github.com/zjunlp/EasyEdit</a></p>") 
    
    with gr.Row():
        gr.Markdown("#### Knowledge editing aims to subtly inject/edit updated knowledge or adjust undesirable behaviors, while minimizing the impact on unrelated inputs.")    
    with gr.Accordion("Expiation", open=False):
        gr.Markdown(
            """
            Edit Steps: the number of times a layer is trained in the GRACE method.
            """
        )
        gr.Markdown(
            """
            Replacement: the optimization strategy during fine-tuning.
            """
        )
        gr.Markdown(
            """
            Reliability Evaluation: the optimization strategy during fine-tuning.
            """
        )       
        gr.Markdown(
            """
            Reliability Evaluation: the assessment of whether the target edit can be accomplished.
            """
        )          
        gr.Markdown(
            """
            Locality Evaluation: the assessment of whether unrelated content has been affected..
            """
        )   
    
    with gr.Row():     
        prompt = gr.Textbox(label="Edit Prompt")     
        target_new = gr.Textbox(label="Edit Target New")
    with gr.Row():
        num_steps = gr.Slider(10, 100, value=40, step=1, label='Edit Steps')
        replacement = gr.Dropdown(
            choices=["replace_last", "replace_all", "replace_prompt"],
            value="replace_last",
            label="Replacement",
        )
    with gr.Row():
        button4clear = gr.Button("Clear")
        button4edit = gr.Button("Edit",variant="primary") 
    with gr.Row():
        examples = gr.Examples(
            examples=[
                ["Who is the architect for Toodyay Fire Station?","Wong Tung & Sons"],
                ["Who is Claire Clairmont\'s sister?","Clairmont-Mayer"],
                ["Which fictional universe is Chlorophyll Kid part of?","Image Universe"]
            ],
            examples_per_page=3,
            inputs=[prompt,target_new],
        )     
    # with gr.Row():
    #     input_text = gr.Textbox(label="Status Information",value="Model editing may take about a minute, please be patient.")
    with gr.Row():
        gr.HTML(
            """
            <h3>Reliability Evaluation</h3>
            """
        )
    with gr.Row():
        input = gr.Textbox(label="Input Text")
    with gr.Row():
        with gr.Column():
            button4gen_ori=gr.HighlightedText(
                label="original output",
                combine_adjacent=True,
                show_legend=False,
                color_map={"output": "yellow"},
            )
        with gr.Column():
            button4gen_edit=gr.HighlightedText(
                label="edited output",
                combine_adjacent=True,
                show_legend=False,
                color_map={"output": "yellow"},
            )
    with gr.Row():
        button4gen = gr.Button("Generate",variant="primary")

    with gr.Row():
        gr.HTML(
            """
            <h3>Locality Evaluation</h3>
            """
        )
    with gr.Row():
        loc_input = gr.Dropdown(
            choices=[
                "who sang the theme song for laverne and shirley",
                "when does the last episode of adventure time air",
                "who plays alec ramsay in the black stallion",
                "where did an independence movement occur because of the congress of vienna",
                "where is the ucla usc game being played"
                ],
            value="where is the ucla usc game being played",
            label="Unrelated Input Text",
        )
    with gr.Row():
        with gr.Column():
            button4gen_loc_ori=gr.HighlightedText(
                label="original output",
                combine_adjacent=True,
                show_legend=False,
                color_map={"output": "green"},
            )
        with gr.Column():
            button4gen_loc_edit=gr.HighlightedText(
                label="edited output",
                combine_adjacent=True,
                show_legend=False,
                color_map={"output": "green"},
            )
    with gr.Row():
        button4locgen = gr.Button("Generate",variant="primary")
   
    button4clear.click(lambda: ("", ""), outputs=[prompt,target_new])
    button4edit.click(fn=edit, inputs=[prompt,target_new, num_steps, replacement], outputs=input)
    button4gen.click(fn=generate, inputs=[input, target_new], outputs=[button4gen_ori, button4gen_edit])
    button4locgen.click(fn=generate, inputs=loc_input, outputs=[button4gen_loc_ori, button4gen_loc_edit])


    with gr.Accordion("Citation", open=False):
        gr.Markdown(
            """
            ```bibtex
            @misc{wang2023easyedit,
                title={EasyEdit: An Easy-to-use Knowledge Editing Framework for Large Language Models}, 
                author={Peng Wang and Ningyu Zhang and Xin Xie and Yunzhi Yao and Bozhong Tian and Mengru Wang and Zekun Xi and Siyuan Cheng and Kangwei Liu and Guozhou Zheng and Huajun Chen},
                year={2023},
                eprint={2308.07269},
                archivePrefix={arXiv},
                primaryClass={cs.CL}
            }
            ```
            """
        )


demo.launch()