File size: 1,843 Bytes
de0a6cb
 
bbe7ddd
d182d11
bbe7ddd
de0a6cb
dfde0fa
bbe7ddd
 
dfde0fa
30a54fa
d182d11
 
 
dfde0fa
bbe7ddd
7607d4f
de0a6cb
 
7607d4f
de0a6cb
 
 
7607d4f
 
d182d11
de0a6cb
30a54fa
d182d11
7607d4f
 
 
d182d11
4053793
d182d11
de0a6cb
4053793
7607d4f
 
de0a6cb
d182d11
dfde0fa
7607d4f
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
import requests
import gradio as gr

def generate_image(prompt, quality, size, style, api_key, request_url):
    headers = {
        "Authorization": f"Bearer {api_key}",
        "Content-Type": "application/json",
    }
    data = {
        "prompt": prompt,
        "model": "dall-e-3",
        "quality": quality,
        "size": size,
        "style": style,
        "num_images": 1,
    }
    response = requests.post(request_url, headers=headers, json=data)
    response_json = response.json()
    
    # Get the URL of the first generated image
    image_url = response_json["data"][0]["url"]
    
    return image_url

# Create the interface using Gradio
with gr.Blocks() as demo:
    with gr.Row():
        gr.Markdown("# <center> OpenAI dall-e-3 API with Gradio </center>")
        gr.Markdown("This demo uses the OpenAI dall-e-3 API to generate an image from text. You get a free session key from https://dongsiqie.me/sess")
    with gr.Row():
        api_key_input = gr.Textbox(label="API Key", type="password")
        request_url_input = gr.Textbox(label="Request URL", value="https://api.openai.com/v1/images/generations")
        quality_input = gr.Dropdown(label="Quality", choices=["standard", "hd"], value="standard")
        size_input = gr.Dropdown(label="Size", choices=["1792x1024", "1024x1024", "1024x1792"], value="1024x1024")
        style_input = gr.Dropdown(label="Style", choices=["vivid", "natural"], value="vivid")
    with gr.Row():
        prompt_input = gr.Textbox(label="Image Description", value="A cute cat.")
    submit_btn = gr.Button("Generate Image", variant='primary')
    image_output = gr.Image(label="Generated Image")
    
    submit_btn.click(fn=generate_image, inputs=[prompt_input, quality_input, size_input, style_input, api_key_input, request_url_input], outputs=image_output)

demo.launch()