File size: 2,167 Bytes
46debe3
 
 
153222f
46debe3
 
153222f
 
 
 
dd6ddcb
153222f
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
46debe3
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
a4a3094
 
 
 
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
import os
import gradio as gr
from openai import OpenAI
from flask import Flask, request, jsonify
client = OpenAI(api_key=os.getenv("API_KEY"))


# Инициализация Flask приложения
app = Flask(__name__)

@app.route('/', methods=['POST'])
def generate_image():
    # Проверка наличия авторизационного ключа в заголовках запроса
    auth_key = request.headers.get('Authorization')
    client = OpenAI(api_key=auth_key)
    
    # Получение описания изображения из тела запроса
    description = request.json.get('description')
    if not description:
        return jsonify({"error": "No description provided"}), 400

    response = client.images.generate(
    model="dall-e-3",
    prompt=prompt,
    size="1024x1024",
    quality="hd",
    n=1,
    )
    image_url = response.data[0].url  # Пример получения URL изображения

    return jsonify({"image_url": image_url})




def generate_image(prompt, code):
    if code != os.getenv("code"):
        raise gr.Error("❗ Не верный ключ!")
        return None
    response = client.images.generate(
    model="dall-e-3",
    prompt=prompt,
    size="1024x1024",
    quality="hd",
    n=1,
    )

    image_url = response.data[0].url
    print(image_url)
    return image_url
css = """
footer {visibility: hidden !important;}
"""
# Создание интерфейса с помощью Gradio
with gr.Blocks(css=css, theme='YTheme/Sketch') as demo:
    with gr.Row():
        with gr.Column():
            with gr.Row():
                code = gr.Textbox(label="Ключ доступа", type="password")
            with gr.Row():
                prompt_input = gr.Textbox(label="Описание изображения", lines=3)
            submit_btn = gr.Button("Генерация", variant='primary')
        with gr.Column():
            image_output = gr.Image(label="Изображение")
    
    submit_btn.click(fn=generate_image, inputs=[prompt_input, code], outputs=image_output)

demo.launch()

if __name__ == '__main__':
    app.run(debug=True)