| import json |
|
|
| import gradio as gr |
| from rex.utils.initialization import set_seed_and_log_path |
|
|
| from src.task import SchemaGuidedInstructBertTask |
|
|
| set_seed_and_log_path(log_path="debug.log") |
|
|
|
|
| task = SchemaGuidedInstructBertTask.from_taskdir( |
| "mirror_outputs/Mirror_Pretrain_AllExcluded_2", |
| load_best_model=True, |
| initialize=False, |
| dump_configfile=False, |
| update_config={ |
| "regenerate_cache": False, |
| }, |
| ) |
|
|
|
|
| def ask_mirror(instruction, schema, text): |
| input_data = { |
| "id": "app", |
| "instruction": instruction, |
| "schema": json.loads(schema), |
| "text": text, |
| "ans": {}, |
| } |
| results = task.predict(input_data) |
| return results |
|
|
|
|
| with gr.Blocks() as demo: |
| gr.Markdown("# 🪞Mirror") |
| gr.Markdown( |
| "🪞Mirror can help you deal with a wide range of Natural Language Understanding and Information Extraction tasks." |
| ) |
| gr.Markdown( |
| "[[paper]](https://arxiv.org/abs/2311.05419) | [[code]](https://github.com/Spico197/Mirror)" |
| ) |
|
|
| instruction = gr.Textbox(label="Instruction") |
| schema = gr.Textbox( |
| label="schema", |
| placeholder='{"cls": ["class1", "class2"], "ent": ["type1", "type2"], "rel": ["relation1", "relation2"]} leave it as {} to support span extraction.', |
| ) |
| text = gr.TextArea(label="Text") |
| output = gr.Textbox(label="Output") |
|
|
| submit_btn = gr.Button("Ask Mirror") |
| submit_btn.click(ask_mirror, inputs=[instruction, schema, text], outputs=output) |
|
|
| gr.Markdown("Made by Mirror Team w/ 💖") |
|
|
|
|
| if __name__ == "__main__": |
| demo.launch() |
|
|