File size: 5,482 Bytes
848aa6d 864a06e d83c54b 848aa6d 49805bb 3504f3f d04a2c3 3504f3f d04a2c3 2537642 3504f3f 5d95e5d 848aa6d 89a6e00 848aa6d efc78a6 bf8c42d d04a2c3 848aa6d d04a2c3 dd6ed94 d04a2c3 848aa6d d04a2c3 848aa6d d04a2c3 848aa6d d04a2c3 848aa6d d04a2c3 848aa6d 1d018c5 848aa6d d04a2c3 848aa6d 864a06e 848aa6d 864a06e 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 84 |
import gradio as gr
import requests
import os
def generate(forr, ver=15, 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), название, репутация и описывай функционал кратко.
! Пиши **ТОЛЬКО МОДУЛИ MAGISK**, не в коем случае не давай ссылки на темы сторонних приложений, которые не модули Magisk!
! Не в коем случае не пиши ссылки на сторонние ресурсы!
! Не пиши ссылку на страницу! Пользователю нужна ссылка на ПОСТ. Ссылка, которая указана прям в списке модулей.
**Обращай внимание на репутацию! Модули с отрицательной репутацией либо не выдавай пользователю, либо предупреждай.**
"""
user_msg = f"Модуль для: '{forr}', совместимый с андроид: '{ver}', дополнительно: '{doptb}'"
headers = {
'Content-Type': 'application/json',
}
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()
data = response.json()
# Улучшенная обработка ответа
if not isinstance(data, dict):
return "Некорректный формат ответа от сервера."
if 'choices' in data and isinstance(data['choices'], list) and len(data['choices']) > 0:
choice = data['choices'][0]
if 'message' in choice and isinstance(choice['message'], dict):
content = choice['message'].get('content')
if content and isinstance(content, str):
return content.strip()
else:
return "Сервер вернул пустой или некорректный ответ."
else:
return "Отсутствует поле 'message' в ответе."
elif 'error' in data:
error_msg = data.get('error', {}).get('message', 'Неизвестная ошибка сервера')
return f"Ошибка сервера: {error_msg}"
else:
return "Неизвестный формат ответа от сервера."
except requests.exceptions.RequestException as e:
return f"Ошибка запроса: {str(e)}"
except Exception as e:
return f"Неожиданная ошибка: {str(e)}"
# UI (остаётся без изменений)
css_url = "https://neurixyufi-aihub.static.hf.space/style.css"
response = requests.get(css_url)
css = response.text + ".gradio-container{max-width: 700px !important} h1, h3 {text-align:center}"
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=15)
with gr.Row():
doptb = gr.Textbox(show_label=True, placeholder="Пример: У меня версия магиск 28.1, использую прошивку ColorOs на OnePlus 13, ...", 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() |