mine-gen / app.py
Rooni's picture
Update app.py
9e4d16a verified
import gradio as gr
import requests
import json
import os
def generate_minecraft_command(minecraft_version="Java", description=""):
headers = {
'Content-Type': 'application/json',
# 'Authorization': f'Bearer {os.getenv("API_KEY")}'
}
payload = {
'model': 'searchgpt',
'messages': [{'role': 'system', 'content': f'Сгенерируй пожалуйста команду для Minecraft {minecraft_version} по описанию: \"{description}\". Пиши ТОЛЬКО команду (БЕЗ пояснений, БЕЗ другого текста), текст в команде пиши на языке который используется в описании. Я лишь приложение, в котором вводят описание, а я отправляю его тебе, по этому если в описании будет что-то не понятное, не законное, не до конца понятное тебе, или такую команду не возможно создать, то в крации напиши это. Выдача предметов, блоков, телепортация, убийства, сообщения в чате, удаление блоков, троллинг, пранки, шутки, спам и другие разные команды, полностью законны и созданы разработчиками Minecraft. ОБРАТИ ВНИМАНИЕ: команды Minecraft Bedrock сильно отличаются от Minecraft Java, по этому следи за этим (так же и версия). Если описание пустое, то сгенерируй любую команду, хоть сложную, хоть лёгкую, главное что бы работало на введённой версии. Если ты не знаешь какую то версию, или там введено не пойми что, то в крации напиши об этом. Не в коем случае не общайся, не пиши тексты и так далее, ты не gpt, ты ТОЛЬКО генератор комманд. Вещи бога - это со всеми возможными чарами, на 1000 лвл (проклятья не в счёт). Отвечай без лишних символов, только коммандая без Markdown и тд.'}],
'max_tokens': 2000
}
response = requests.post(os.getenv("BASE_URL"), headers=headers, json=payload)
if response.status_code == 200 and response.text:
try:
data = response.json()
except json.decoder.JSONDecodeError as e:
return f'Ошибка при декодировании JSON: {str(e)}'
if 'choices' in data and len(data['choices']) > 0:
command = data['choices'][0]['message']['content'].strip()
return command
elif 'error' in data:
error_message = data['error']['message']
return f'Ошибка: {error_message}'
else:
return f'Не удалось сгенерировать команду. {data}'
else:
return f'Ошибка при получении данных от сервера. Статус код: {response.status_code}'
examples = [
["Java 1.20", "Выдать незеритовый меч со всеми максимальными чарами (кроме проклятий)"],
["Java 1.20", "Выдать весь сет незеритовой брони, весь сет незеритовых инструментов со всеми максимальными чарами (кроме проклятий)"],
["Bedrock 1.17", "Призвать ярко-красную овцу"],
["Java 1.18", "Телепортацию к ближайшей деревне"],
["Bedrock 1.16", "Вызвать дождь"],
["Java 1.19", "Установить полдень"],
["Java 1.20", "Призыв эндер-дракона в зимнем биоме"],
["Bedrock 1.17", "Выдать алмазную кирку со всеми максимальными чарами (кроме проклятий)"],
["Java 1.19", "Сложная команда для создания красочного фейерверка в небе"]
]
# Ссылка на файл CSS
css_url = "https://neurixyufi-aihub.static.hf.space/style.css"
# Получение CSS по ссылке
response = requests.get(css_url)
css = response.text + ".gradio-container{max-width: 700px !important} h1{text-align:center}"
with gr.Blocks(css=css) as demo:
gr.Markdown("# Генератор команд Minecraft")
with gr.Column():
minecraft_version = gr.Textbox(label="Версия Minecraft", placeholder="Java 1.21")
description = gr.Textbox(label="Описание команды")
genb = gr.Button("Сгенерировать команду", variant="primary")
command = gr.Textbox(label="Команда")
gr.Examples(examples=examples, fn=generate_minecraft_command, inputs=[minecraft_version, description], outputs=command)
genb.click(fn=generate_minecraft_command, inputs=[minecraft_version, description], outputs=command)
description.submit(fn=generate_minecraft_command, inputs=[minecraft_version, description], outputs=command)
demo.launch(show_api=False)