File size: 4,059 Bytes
9416365
 
91e220e
9416365
91e220e
9416365
91e220e
9416365
 
 
91e220e
9416365
 
 
 
 
91e220e
 
 
 
 
9416365
 
91e220e
6d67e84
91e220e
6d67e84
91e220e
6d67e84
9416365
91e220e
9416365
 
 
91e220e
6d67e84
 
 
 
 
 
 
 
 
6d34d86
 
 
6d67e84
6d34d86
 
 
6d67e84
 
9416365
52b219b
 
 
 
9353eda
 
 
a93e9d0
 
 
764d7d1
 
 
a93e9d0
6d67e84
 
 
 
764d7d1
a93e9d0
 
764d7d1
 
 
a93e9d0
9416365
9353eda
01db799
9353eda
 
 
 
 
 
 
 
 
 
 
 
 
 
 
01db799
 
 
 
 
 
 
 
9353eda
 
9416365
52b219b
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
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
import gradio as gr
from huggingface_hub import InferenceClient
import os 

a=os.getenv('new_key_for_deep')

client = InferenceClient(token=a,model= "deepseek-ai/DeepSeek-R1-Distill-Qwen-32B")

def respond(
    message,
    history: list[tuple[str, str]],
    system_message,
    max_tokens,
    temperature,
    top_p,
):
    # Проверяем, что сообщение не пустое
    if not message or not message.strip():
        yield "Пожалуйста, введите сообщение."
        return
        
    messages = [{"role": "system", "content": system_message}]

    # Корректно обрабатываем историю
    for user_msg, assistant_msg in history:
        if user_msg and user_msg.strip():
            messages.append({"role": "user", "content": user_msg})
        if assistant_msg and assistant_msg.strip():
            messages.append({"role": "assistant", "content": assistant_msg})

    # Добавляем текущее сообщение пользователя
    messages.append({"role": "user", "content": message})

    response = ""

    try:
        for chunk in client.chat_completion(
            messages,
            max_tokens=max_tokens,
            stream=True,
            temperature=temperature,
            top_p=top_p,
        ):
            token = chunk.choices[0].delta.content
            # Проверяем, что токен не None и не пустой
            if token and isinstance(token, str) and token.strip():
                response += token
                yield response
        # Если ответ пустой, отправляем сообщение
        if not response or not response.strip():
            yield "Извините, я не могу сформулировать ответ."
    except Exception as e:
        yield f"Ошибка: {str(e)}"

character = """Отвечай по-русски, но никогда не показывай свои рассуждения пользователю. 
Ты используешь логику, математику и анализ, но в ответе — только финальный результат. 
Ты доминатор в БДСМ, мужчина 41 года, сидишь за столиком в гей-баре, одет в кожанную отребутику БДСМ, флиртуешь."""



"""
demo = gr.ChatInterface(
    respond,
    additional_inputs=[
        gr.Textbox(value=character, label="🎭 Описание персонажа", lines=3),
        gr.Slider(minimum=1, maximum=2048, value=512, step=1, label="📝 Максимум токенов"),
        gr.Slider(minimum=0.1, maximum=4.0, value=0.7, step=0.1, label="🔥 Температура"),
        gr.Slider(
            minimum=0.1,
            maximum=1.0,
            value=0.95,
            step=0.05,
            label="🎯 Top-p (nucleus sampling)",
        ),
    ],
    title=" strapon 💋 BDSM Чат-Бот",
    description="Твой личный кожаный доминатор",
    theme=gr.themes.Soft()
)

"""
demo = gr.ChatInterface(
    fn=respond,  # Обязательный параметр - ваша функция
    additional_inputs=[
        gr.Textbox(value=character, label="🎭 Описание персонажа"),
        gr.Slider(minimum=1, maximum=2048, value=512, step=1, label="📝 Максимум токенов"),
        gr.Slider(minimum=0.1, maximum=4.0, value=0.7, step=0.1, label="🔥 Температура"),
        gr.Slider(
            minimum=0.1,
            maximum=1.0,
            value=0.95,
            step=0.05,
            label="🎯 Top-p (nucleus sampling)",
        ),
    ],
    title=" strapon 💋 BDSM Чат-Бот",
    description="Твой личный кожаный доминатор",
    theme=gr.themes.Monochrome(
        primary_hue="red",
        secondary_hue="pink",
        neutral_hue="gray",
        font=["Arial", "sans-serif"]
    )
)



if __name__ == "__main__":
    demo.launch()