File size: 4,411 Bytes
848aa6d
 
 
 
 
 
 
d83c54b
 
 
848aa6d
fa258c4
5d95e5d
848aa6d
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
5d95e5d
848aa6d
 
 
 
 
 
b0731e5
848aa6d
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1d018c5
848aa6d
6bb5838
848aa6d
d83c54b
848aa6d
d83c54b
848aa6d
d83c54b
848aa6d
 
d83c54b
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
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 ИЗ СПИСКА (а не когда уже перешёл на пост) (но иногда можно и гитхаб), название и описывай функционал кратко."""
    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': 2500,
        'model': "searchgpt"
    }

    try:
        response = requests.post(os.getenv("BASE_URL"), headers=headers, json=payload, timeout=200)
        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: white; padding: 5px;">
  <b>Дисклеймер:</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()