File size: 2,864 Bytes
32b0450
dccf4fa
 
d97db75
065361a
7fc842c
dccf4fa
 
 
7fc842c
065361a
 
 
 
 
 
 
 
 
 
 
 
 
dccf4fa
 
 
 
315025d
dccf4fa
 
 
2ace237
dccf4fa
 
 
1616f44
351b9e5
081ad0c
9bd8a55
dccf4fa
7fc842c
 
28f307c
 
 
48e0bd2
28f307c
 
 
315025d
 
 
dccf4fa
315025d
dccf4fa
065361a
816a41c
 
 
065361a
dccf4fa
8c28f7d
dccf4fa
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
import gradio as gr
from transformers import AutoModelForCausalLM
from transformers import BloomTokenizerFast
from transformers import pipeline, set_seed
import random

model_name = "bloom-560m"
model = AutoModelForCausalLM.from_pretrained(f"jslin09/{model_name}-finetuned-fraud")
tokenizer = BloomTokenizerFast.from_pretrained(f'bigscience/{model_name}', bos_token = '<s>', eos_token = '</s>')

def rnd_generate(prompt):
    rnd_seed = random.randint(10, 500)
    set_seed(rnd_seed)
    inputs = tokenizer(prompt, return_tensors="pt") # 回傳的張量使用 Pytorch的格式。如果是 Tensorflow 格式的話,則指定為 "tf"。
    results = model.generate(inputs["input_ids"],
                       max_length=500,
                       num_return_sequences=1,
                       do_sample=True,
                       temperature=0.75,
                       top_k=50, 
                       top_p=0.9)
    return tokenizer.decode(results[0])

def generate(prompt):
    result_length = len(prompt) + 4
    inputs = tokenizer(prompt, return_tensors="pt") # 回傳的張量使用 Pytorch的格式。如果是 Tensorflow 格式的話,則指定為 "tf"。
    results = model.generate(inputs["input_ids"],
                       num_return_sequences=2, # 產生 2 個句子回來。
                       max_length=result_length,
                       early_stopping=True,
                       do_sample=True, 
                       top_k=50, 
                       top_p=0.9
                      )
    return tokenizer.decode(results[0])

examples = [
    ["闕很大明知金融帳戶之存摺、提款卡及密碼係供自己使用之重要理財工具,"],
    ["梅友乾明知其無資力支付酒店消費,亦無付款意願,竟意圖為自己不法之所有,"],
    ["王大明意圖為自己不法所有,基於竊盜之犯意,"]
]

with gr.Blocks() as demo:
    gr.Markdown(
    """
    <h1 style="text-align: center;">Legal Document Drafting</h1>
    """)
    with gr.Row():
        with gr.Column():
            result = gr.components.Textbox(lines=7, label="Generative")
            prompt = gr.components.Textbox(lines=2, label="Prompt", placeholder=examples[0], visible=False)
            gr.Examples(examples, label='Examples', inputs=[prompt])
            prompt.change(generate, inputs=[prompt], outputs=[result])
            btn = gr.Button("Next sentence")
            btn.click(generate, inputs=[result], outputs=[result])
        with gr.Column():
            result2 = gr.components.Textbox(lines=7, label="Random Generative", show_label=True, placeholder=examples[0])
            gr.Examples(examples, label='Examples', inputs=[result2])
            btn = gr.Button("Random Drafting")
            btn.click(rnd_generate, inputs=[result2], outputs=[result2])
    
if __name__ == "__main__":
    demo.launch()