File size: 2,590 Bytes
f92a51b
 
6eccccd
ec1e4af
c7ba344
f92a51b
eb4df2e
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
fde6e17
eb4df2e
d8abe74
6eccccd
23a6746
d8abe74
6eccccd
b2592e7
fde6e17
01868c2
d8abe74
ec1e4af
6eccccd
2ed3994
6eccccd
18f89c2
715e65d
 
d74acb3
2ed3994
715e65d
10954e8
715e65d
10954e8
adc769b
fde6e17
eb4df2e
 
 
 
 
 
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
import gradio as gr
import requests
import json
import os
import markdown2

# HTML-код для анимации загрузки
loading_html = """
<div>
    <style>
        .lds-ring {
            display: inline-block;
            position: relative;
            width: 80px;
            height: 80px;
        }
        .lds-ring div {
            box-sizing: border-box;
            display: block;
            position: absolute;
            width: 64px;
            height: 64px;
            margin: 8px;
            border: 8px solid #000;
            border-radius: 50%;
            animation: lds-ring 1.2s cubic-bezier(0.5, 0, 0.5, 1) infinite;
            border-color: #000 transparent transparent transparent;
        }
        .lds-ring div:nth-child(1) {
            animation-delay: -0.45s;
        }
        .lds-ring div:nth-child(2) {
            animation-delay: -0.3s;
        }
        .lds-ring div:nth-child(3) {
            animation-delay: -0.15s;
        }
        @keyframes lds-ring {
            0% {
                transform: rotate(0deg);
            }
            100% {
                transform: rotate(360deg);
            }
        }
    </style>
    <div class="lds-ring"><div></div><div></div><div></div><div></div></div>
</div>
"""

def generate_minecraft_command(description):
    # Оставим это без изменений
    headers = {
        'Content-Type': 'application/json',
        'Authorization': f'Bearer {os.getenv("API_KEY")}'
    }
    payload = {
        'messages': [{'role': 'system', 'content': f'{description}'}],
        'max_tokens': 10000,
        'model': os.getenv("MODEL")
    }
    response = requests.post(os.getenv("BASE_URL"), headers=headers, json=payload)
    data = json.loads(response.text)

    if 'choices' in data and len(data['choices']) > 0:
        command = data['choices'][0]['message']['content'].strip()
        command_html = markdown2.markdown(command)
        return command_html
    elif 'error' in data:
        error_message = data['error']['message']
        return f'Ошибка: {error_message}'
    else:
        return f'Не удалось сгенерировать команду. {data}'

iface = gr.Interface(fn=generate_minecraft_command, inputs=[
    gr.Textbox(label="Запрос")
], outputs=gr.HTML(label="Ответ"), title="GPT")

# Добавляем анимацию загрузки через HTML
iface.launch(inline=True, examples=[
    ["Пример запроса"]
], examples_per_page=1, enable_queue=True, layout="unaligned", server_port=os.getenv("PORT"))