File size: 2,585 Bytes
fc396f9
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
649e9fd
fc396f9
 
 
 
649e9fd
 
 
 
 
 
 
fc396f9
649e9fd
fc396f9
 
 
 
 
 
 
 
 
 
649e9fd
 
fc396f9
 
 
 
 
 
 
 
 
 
649e9fd
fc396f9
 
 
 
 
 
649e9fd
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
import os
import random
import requests
import gradio as gr

# Загрузка CSS стилей
css_url = "https://neurixyufi-aihub.static.hf.space/style.css"

try:
    response = requests.get(css_url)
    response.raise_for_status()  # Поднимаем исключение, если статус ответа не 200
    css = response.text + " h1{text-align:center} /* Дополнительные стили, если нужны */"
except requests.exceptions.RequestException as e:
    print(f"Ошибка при загрузке CSS: {e}")
    css = " h1{text-align:center} /* Дополнительные стили, если нужны */"  # Используем базовый стиль, если загрузка CSS не удалась

# Функция для отправки запроса к API searchgpt
def chat_with_searchgpt(user_message, history):
    api_url = "https://text.pollinations.ai/searchgpt"
    headers = {
        "Content-Type": "application/json"
    }
    # Формируем массив сообщений
    messages = []
    for msg in history:
        messages.append({"role": "user", "content": msg[0]})
        messages.append({"role": "assistant", "content": msg[1]})
    messages.append({"role": "user", "content": user_message})
    
    data = {
        "messages": messages
    }
    
    try:
        response = requests.post(api_url, headers=headers, json=data)
        response.raise_for_status()  # Поднимаем исключение, если статус ответа не 200
        response_data = response.json()
        bot_reply = response_data.get("response", "Извините, не удалось получить ответ.")
    except requests.exceptions.RequestException as e:
        bot_reply = f"Ошибка при запросе к API: {e}"
    
    history.append((user_message, bot_reply))
    return history, ""

# Определение интерфейса
with gr.Blocks(css=css) as demo:
    gr.Markdown("# Чат с SearchGPT")
    chatbot = gr.Chatbot(label="Чат")
    msg = gr.Textbox(label="Введите ваш запрос")
    clear = gr.Button("Очистить чат")
    
    # Функция для очистки чата
    def clear_chat():
        return [], ""

    # Обработка отправки сообщения
    msg.submit(chat_with_searchgpt, [msg, chatbot], [chatbot, msg], concurrency_limit=250)
    clear.click(clear_chat, None, [chatbot, msg], concurrency_limit=250)

# Запуск интерфейса
demo.launch(show_api=False, share=False)