File size: 5,215 Bytes
848aa6d d83c54b 848aa6d 49805bb 3504f3f a4fbc1b 3504f3f 2537642 3504f3f 5d95e5d 848aa6d 89a6e00 848aa6d 25e3082 848aa6d 5d95e5d 848aa6d b0731e5 848aa6d 1d018c5 848aa6d 6bb5838 848aa6d d83c54b 848aa6d d83c54b 848aa6d d83c54b 848aa6d d83c54b 9696767 f46de9f 4ea1fbf 848aa6d 6bb5838 848aa6d |
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
# Функция для генерации текста
def generate(forr, ver=13, doptb=""):
if not forr or not ver:
return "Сначала заполните обязательные поля! Потом здесь будут найденые нейросетью модули."
system_role = """Ты - поисковик магиск андроид модулей, ищешь на 4PDA (Русский форум, https://4pda.to/forum/index.php?showtopic=915158&view=findpost&p=76261279 в спойлере "Алфавитный Каталог модулей", смотрешь ищешь потходящее, потом смотришь страницы, посты нужных и сверяешь характеристики пользователя, если он предоставил. Если всё отлично, то выдавай ссылку на пост (не на страницу, а прям на пост) модуля с 4pda ИЗ СПИСКА (а не когда уже перешёл на пост)) и GitHub (https://github.com/topics/magisk-modules), название, репутация и описывай функционал кратко.
! Пиши **ТОЛЬКО МОДУЛИ NAGISK**, не в коем случае не давай ссылки на темы сторонних приложений, которые не модули Magisk!
! Не в коем случае не пиши ссылки на сторонние ресурсы!
! Не пиши ссылку на страницу! Пользователю нцжна ссылка на ПОСТ. Ссылка, которая указана прям в списке модулей.
**Обращай внимание на репутацию! Модули с отрицательной репутацией либо не выдавай пользователю, либо предупреждай.**
"""
user_msg = f"Модуль для: '{forr}', совместимый с андроид: '{ver}', дополнительно: '{doptb}'"
headers = {
'Content-Type': 'application/json',
# 'Authorization': f'Bearer {os.getenv("API_KEY")}'
}
payload = {
'messages': [{'role': 'system', 'content': system_role}, {'role': 'user', 'content': user_msg}],
'max_tokens': 4500,
'model': "searchgpt"
}
try:
response = requests.post(os.getenv("BASE_URL"), headers=headers, json=payload, timeout=250)
response.raise_for_status() # Проверяем на ошибки HTTP
data = response.json() # Используем response.json() вместо json.loads()
if 'choices' in data and len(data['choices']) > 0:
congratulation = data['choices'][0]['message']['content'].strip()
print(f"Генерация успешна: '{forr}' с версией '{ver}'")
return congratulation
elif 'error' in data:
error_message = data['error']['message']
print(f'Ошибка: {error_message}')
return f"Ошибка сервера!"
else:
print(f'Не удалось написать текст: "{forr}". Ответ сервера: {data}') # Выводим ответ сервера для отладки
return "Неизвестная ошибка!"
except requests.exceptions.RequestException as e:
print(f"Ошибка запроса: {e}")
return f"Ошибка запроса!"
# Ссылка на файл 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, h3 {text-align:center}"
# UI
with gr.Blocks(css=css) as demo:
gr.Markdown("# Поиск Magisk модулей\n### На 4pda, Rooni_Studio")
with gr.Column():
with gr.Row():
forr = gr.Textbox(show_label=True, placeholder="Модуль для... / Название", label="Функционал модуля", interactive=True, container=True,)
with gr.Row():
ver = gr.Number(show_label=True, label="Версия Android", interactive=True, container=True, value=13)
with gr.Row():
doptb = gr.Textbox(show_label=True, placeholder="У меня версия магиск N.N, ...", label="Дополнительно")
with gr.Row():
text_button = gr.Button("Искать", variant='primary')
with gr.Row():
with gr.Column():
text_output = gr.Markdown(show_label=False, value="Здесь будут найденые нейросетью модули.", container=True)
gr.HTML("""<p style="color: red; padding: 5px;">
<b style="color: red;">Дисклеймер:</b> Для поиска используется нейросеть, результаты могут быть неточными или неполными.
</p>
""")
text_button.click(generate, inputs=[forr, ver, doptb], outputs=[text_output], concurrency_limit=250)
demo.queue(max_size=250, api_open=False).launch() |