Spaces:
Sleeping
Sleeping
| import gradio as gr | |
| import requests | |
| import json | |
| import os | |
| APIKEY = os.environ.get("APIKEY") | |
| APISECRET = os.environ.get("APISECRET") | |
| def predict(text, seed, out_seq_length, min_gen_length, sampling_strategy, | |
| num_beams, length_penalty, no_repeat_ngram_size, | |
| temperature, topk, topp): | |
| global APIKEY | |
| global APISECRET | |
| url = 'https://wudao.aminer.cn/os/api/api/v2/completions_130B' | |
| payload = json.dumps({ | |
| "apikey": APIKEY, | |
| "apisecret": APISECRET , | |
| "language": "zh-CN", | |
| "prompt": text, | |
| "length_penalty": length_penalty, | |
| "temperature": temperature, | |
| "top_k": topk, | |
| "top_p": topp, | |
| "min_gen_length": min_gen_length, | |
| "sampling_strategy": sampling_strategy, | |
| "num_beams": num_beams, | |
| "max_tokens": out_seq_length | |
| }) | |
| headers = { | |
| 'Content-Type': 'application/json' | |
| } | |
| response = requests.request("POST", url, headers=headers, data=payload) | |
| print(response.json()) | |
| answer = response.json()['result']['output']['raw'] | |
| if isinstance(answer, list): | |
| answer = answer[0] | |
| answer = answer.replace('[</s>]', '') | |
| return answer | |
| if __name__ == "__main__": | |
| with gr.Blocks() as demo: | |
| gr.Markdown( | |
| """ | |
| # GLM-130B | |
| An Open Bilingual Pre-Trained Model | |
| """) | |
| with gr.Row(): | |
| with gr.Column(): | |
| model_input = gr.Textbox(lines=7, placeholder='Input something in English or Chinese', label='Input') | |
| with gr.Row(): | |
| gen = gr.Button("Generate") | |
| clr = gr.Button("Clear") | |
| outputs = gr.Textbox(lines=7, label='Output') | |
| with gr.Row(): | |
| with gr.Column(): | |
| seed = gr.Slider(maximum=100000, value=1234, step=1, label='Seed') | |
| out_seq_length = gr.Slider(maximum=256, value=128, minimum=32, step=1, label='Output Sequence Length') | |
| with gr.Column(): | |
| min_gen_length = gr.Slider(maximum=64, value=0, step=1, label='Min Generate Length') | |
| sampling_strategy = gr.Radio(choices=['BeamSearchStrategy', 'BaseStrategy'], value='BeamSearchStrategy', label='Search Strategy') | |
| with gr.Row(): | |
| with gr.Column(): | |
| # beam search | |
| gr.Markdown( | |
| """ | |
| Beam Search Parameter | |
| """) | |
| num_beams = gr.Slider(maximum=4, value=1, minimum=1, step=1, label='Number of Beams') | |
| length_penalty = gr.Slider(maximum=1, value=0.8, minimum=0, label='Length Penalty') | |
| no_repeat_ngram_size = gr.Slider(maximum=5, value=3, minimum=1, step=1, label='No Repeat Ngram Size') | |
| with gr.Column(): | |
| # base search | |
| gr.Markdown( | |
| """ | |
| Base Search Parameter | |
| """) | |
| temperature = gr.Slider(maximum=1, value=1, minimum=0, label='Temperature') | |
| topk = gr.Slider(maximum=8, value=1, minimum=0, step=1, label='Top K') | |
| topp = gr.Slider(maximum=1, value=0, minimum=0, label='Top P') | |
| inputs = [model_input, seed, out_seq_length, min_gen_length, sampling_strategy, num_beams, length_penalty, no_repeat_ngram_size, temperature, topk, topp] | |
| gen.click(fn=predict, inputs=inputs, outputs=outputs) | |
| clr.click(fn=lambda value: gr.update(value=""), inputs=clr, outputs=model_input) | |
| demo.launch() |