File size: 3,207 Bytes
56da996
1afab97
ec5fbdc
56da996
1afab97
 
56da996
db5829b
 
 
 
 
 
 
 
8cc4d1a
 
 
db5829b
 
 
 
 
 
 
 
 
 
 
1afab97
db5829b
1afab97
 
56da996
 
 
1afab97
 
db5829b
8cc4d1a
 
 
 
1afab97
6d96487
 
 
 
 
360de49
c481706
360de49
 
 
 
 
 
 
8cc4d1a
360de49
 
 
 
 
 
 
 
 
 
 
 
8cc4d1a
 
 
 
 
 
 
 
360de49
8922e87
1afab97
db5829b
c02e53f
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
85
import gradio as gr
from gradio_client import Client
import requests

# Создаем клиент для взаимодействия с API
client = Client("llamameta/Pixtral-Large-Instruct-2411")

def respond(
    message,
    history: list[tuple[str, str]],
    system_message,
    max_tokens,
    temperature,
    top_p,
):
    if not message:
        return history, ""
    
    # Формируем сообщения для отправки в API
    messages = [{"role": "system", "content": system_message}]
    
    for val in history:
        if val[0]:
            messages.append({"role": "user", "content": val[0]})
        if val[1]:
            messages.append({"role": "assistant", "content": val[1]})
    
    messages.append({"role": "user", "content": message})
    
    # Генерируем ответ от чат-бота
    response = client.predict(
        message=message,
        system_message=system_message,
        max_tokens=max_tokens,
        temperature=temperature,
        top_p=top_p,
        api_name="/chat"
    )
    
    # Обновляем историю сообщений
    history.append((message, response))
    
    return history, ""

# Ссылка на файл 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}"

# Создаем интерфейс с использованием gr.Blocks
with gr.Blocks(css=css) as demo:
    gr.Markdown("# Чат-бот")
    
    with gr.Row():
        with gr.Column():
            chatbot = gr.Chatbot(label="Чат")
            message = gr.Textbox(label="Введите ваше сообщение", placeholder="Введите ваше сообщение здесь...", lines=3, container=False)
            submit = gr.Button("Отправить")
    
    with gr.Accordion("Настройки", open=False):
        system_message = gr.Textbox(value="Вы дружелюбный чат-бот, созданный balianone.com", label="Системное сообщение")
        max_tokens = gr.Slider(minimum=100, maximum=18000, value=18000, step=1, label="Максимальное количество новых токенов")
        temperature = gr.Slider(minimum=0.0, maximum=1.0, value=0.7, step=0.1, label="Температура")
        top_p = gr.Slider(minimum=0.0, maximum=1.0, value=0.95, step=0.05, label="Top-p (нуклеарное сэмплирование)")
    
    # Обработка отправки сообщения
    submit.click(
        fn=respond,
        inputs=[message, chatbot, system_message, max_tokens, temperature, top_p],
        outputs=[chatbot, message]
    )
    
    # Обработка отправки сообщения при нажатии Ctrl+Enter
    message.submit(
        fn=respond,
        inputs=[message, chatbot, system_message, max_tokens, temperature, top_p],
        outputs=[chatbot, message]
    )

# Запускаем интерфейс
if __name__ == "__main__":
    demo.queue(max_size=250).launch(show_api=False, share=False)