File size: 2,188 Bytes
3691aa7
9680c0d
3691aa7
 
442b581
3691aa7
442b581
3691aa7
9680c0d
442b581
3691aa7
9680c0d
3691aa7
442b581
9680c0d
 
442b581
3691aa7
 
 
9680c0d
 
3691aa7
9680c0d
 
442b581
 
 
3691aa7
 
442b581
 
 
3691aa7
442b581
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
9680c0d
442b581
 
 
 
 
3691aa7
 
 
9680c0d
442b581
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
import gradio as gr
from openai import OpenAI


def complete_text(prompt, max_tokens, temperature, top_p, openai_api_key):
    """
    Get a plain text completion from OpenAI gpt-3.5-turbo-instruct.
    """
    if not openai_api_key:
        return "⚠️ Please enter a valid OpenAI API key."

    client = OpenAI(api_key=openai_api_key)

    response_text = ""
    stream = client.completions.create(
        model="gpt-3.5-turbo-instruct",
        prompt=prompt,
        max_tokens=max_tokens,
        temperature=temperature,
        top_p=top_p,
        stream=True,
    )

    for event in stream:
        if hasattr(event, "choices") and event.choices:
            token = event.choices[0].text or ""
            response_text += token
            yield response_text


with gr.Blocks() as demo:
    gr.Markdown("## ✍️ Text Completion Demo (OpenAI gpt-3.5-turbo-instruct)")
    gr.Markdown("Enter a prompt, adjust decoding parameters, and watch the model complete your text.")

    with gr.Row():
        with gr.Column(scale=2):
            prompt = gr.Textbox(
                label="Prompt",
                placeholder="Type the beginning of your text...",
                lines=4,
            )
            max_tokens = gr.Slider(
                minimum=1, maximum=1024, value=100, step=1, label="Max tokens"
            )
            temperature = gr.Slider(
                minimum=0.0, maximum=2.0, value=0.7, step=0.1, label="Temperature"
            )
            top_p = gr.Slider(
                minimum=0.1, maximum=1.0, value=1.0, step=0.05, label="Top-p"
            )
            api_key = gr.Textbox(
                placeholder="sk-... Paste your OpenAI API key here",
                label="🔑 OpenAI API Key",
                type="password",
            )
            submit = gr.Button("Generate Completion")
        with gr.Column(scale=3):
            output = gr.Textbox(
                label="Generated Completion",
                lines=15,
            )

    submit.click(
        fn=complete_text,
        inputs=[prompt, max_tokens, temperature, top_p, api_key],
        outputs=output,
    )

if __name__ == "__main__":
    demo.launch()