File size: 4,833 Bytes
3f53aa9
 
 
 
 
ec6836c
4bf304b
ec6836c
 
4bf304b
3f53aa9
ce0215c
3f53aa9
 
 
 
 
 
 
 
 
380a2db
3f53aa9
 
 
 
 
 
 
 
 
 
ce0215c
e3872e4
ce0215c
 
3f53aa9
ce0215c
 
 
 
 
3f53aa9
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
070bfcf
1296c01
 
3f53aa9
 
 
 
070bfcf
 
 
3f53aa9
 
 
070bfcf
3f53aa9
 
 
 
 
 
 
 
 
 
 
 
 
 
506423b
 
 
 
ec6836c
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
import gradio as gr

demo = gr.Blocks()


#'huggingface/facebook/opt-13b'
#'huggingface/EleutherAI/gpt-neox-20b'
#inference not supported

name_list = ['huggingface/bigscience/T0pp', 'huggingface/EleutherAI/gpt-j-6B', 'huggingface/gpt2-xl', 'huggingface/EleutherAI/gpt-neo-2.7B']

#examples from Figure 1 of the paper                
examples = [#zero-shot 
            ["Q: A juggler can juggle 16 balls. Half of the balls are golf balls, and half of the golf balls are blue. How many blue golf balls are there?\nA: The answer (arabic numerals) is "], 
            #zero-shot-CoT
            ["Q: A juggler can juggle 16 balls. Half of the balls are golf balls, and half of the golf balls are blue. How many blue golf balls are there?\nA: Let’s think step by step."],
            #few-shot
            ["Q: Roger has 5 tennis balls. He buys 2 more cans of tennis balls. Each can has 3 tennis balls. How many tennis balls does he have now?\nA: The answer is 11.\nQ: A juggler can juggle 16 balls. Half of the balls are golf balls, and half of the golf balls are blue. How many blue golf balls are there?\nA:"],
            #few-shot-CoT
            ["Q: Roger has 5 tennis balls. He buys 2 more cans of tennis balls. Each can has 3 tennis balls. How many tennis balls does he have now?\nA: Roger started with 5 balls. 2 cans of 3 tennis balls each is 6 tennis balls. 5 + 6 = 11. The answer is 11.\nQ:A juggler can juggle 16 balls. Half of the balls are golf balls, and half of the golf balls are blue. How many blue golf balls are there?\nA:"],
            ]

def calculator(num1, operation, num2):
    if operation == "add":
        return num1 + num2
    elif operation == "subtract":
        return num1 - num2
    elif operation == "multiply":
        return num1 * num2
    elif operation == "divide":
        return num1 / num2


secrets = ["API_KEY1", "API_KEY2", "API_KEY3", "API_KEY4", "API_KEY5", "API_KEY6"]  


def complete_with_gpt(text):
    for secret in secrets:
        try:
            interfaces = [gr.Interface.load(name, api_key = "secret") for name in name_list]
        except:
            print("Error: API key is not valid") 
    return [interface(text) for interface in interfaces]

def set_example(example: list) -> dict:
    return gr.Textbox.update(value=example[0]) 

with gr.Blocks() as demo:
    gr.Markdown(
            """
            # Let’s think step by step Is all you need ? 
            """
        )
    with gr.Box():
        with gr.Row():
            with gr.Column():
                input_text = gr.Textbox(label = "Write your riddle here", placeholder="Type here the riddles to see if LM can solve the questions", lines=4)
                with gr.Row():
                    btn = gr.Button("Laguage model think brrr ...")
                    
                gr.Markdown("Note due to high number if visitors, inference API rate limit is too high and sometimes results in error, looking for solutions around this problem, thanks for understanding 🤗") 
                example_text = gr.Dataset(components=[input_text], samples=examples)
                example_text.click(fn=set_example,
                                inputs = example_text,
                                outputs= example_text.components)

            with gr.Column():   
                gr.Markdown("Let's see how different LM's multiply matrices/ think 💭") 
                btn.click(complete_with_gpt, inputs = input_text, outputs = [gr.Textbox(label=name_list[_], lines=4) for _ in range(len(name_list))])
            
            with gr.Column():
                gr.Markdown("In case you need to count to verify the answer, you can use the calculator below 😉 ")
                num1 = gr.Number(placeholder="Type here the first number", lines=1)
                num2 = gr.Number(placeholder="Type here the second number", lines=1)
                operation = gr.Dropdown(["add", "subtract", "multiply", "divide"], placeholder="Type here the operation", lines=1)
                with gr.Row():                        
                    calculate = gr.Button("Calculate")
                with gr.Column():
                    calculate.click(calculator, inputs = [num1, operation, num2], outputs = gr.Textbox(label="Result", lines=1))


        gr.Markdown(
                    """
                    <p style='text-align: center'><a href='https://arxiv.org/abs/2205.11916' target='_blank'>Large Language Models are Zero-Shot Reasoners</a> | <a href='https://github.com/kojima-takeshi188/zero_shot_cot target='_blank'>Github Repo</a></p>
                    """
                )
                
        with gr.Row():
            gr.Markdown("![visitor badge](https://visitor-badge.glitch.me/badge?page_id=gradio-blocks_zero-and-few-shot-reasoning)")

demo.launch(enable_queue=True, debug=True)