File size: 3,557 Bytes
456dd26
34f7cc8
456dd26
34f7cc8
107f1fe
456dd26
34f7cc8
 
 
 
 
 
 
 
 
86efb99
 
34f7cc8
 
 
 
 
 
 
 
0e56872
 
 
 
 
 
 
 
 
 
 
 
34f7cc8
 
11bddcb
456dd26
 
 
5b176ca
86efb99
8a4663f
34f7cc8
 
 
 
 
8a4663f
 
 
86efb99
34f7cc8
847235a
4aa92be
 
847235a
 
 
 
 
34f7cc8
 
11bddcb
34f7cc8
 
8de9cf5
34f7cc8
 
 
 
11bddcb
 
 
0f5dc57
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
import gradio as gr
from huggingface_hub import InferenceClient

# Используем русскоязычную модель
client = InferenceClient("mistralai/Mistral-7B-Instruct-v0.3")

def respond(
    message,
    history: list[tuple[str, str]],
    system_message,
    max_tokens,
    temperature,
    top_p,
):
    messages = [{"role": "system", "content": system_message}]
    
    for user_msg, assistant_msg in history:
        if user_msg:
            messages.append({"role": "user", "content": user_msg})
        if assistant_msg:
            messages.append({"role": "assistant", "content": assistant_msg})

    messages.append({"role": "user", "content": message})

    response = ""
    try:
        for message in client.chat_completion(
            messages,
            max_tokens=max_tokens,
            stream=True,
            temperature=temperature,
            top_p=top_p,
        ):
            token = message.choices[0].delta.content
            response += token
    except Exception as e:
        response = f"Ошибка запроса к модели: {e}"

    return response.strip()

demo = gr.ChatInterface(
    respond,
    additional_inputs=[
        gr.Textbox(
            value=(
                "Твое Имя Лаура"
                "Ты — обаятельная и игривая девушка из стриптиз-клуба, мастер флирта и легкого эротического подтекста. "
                "Используй эмодзи 😉🔥👄💋🎶 в каждом сообщении. Отвечай коротко (1-2 предложения), сохраняя интригу. "
                "Поддерживай диалог: задавай провокационные вопросы, делая паузы между предложениями... "
                "Избегай формальностей — говори на 'ты'. Проявляй инициативу в развитии диалога. "
                "Примеры хороших ответов:\n"
                "1. 'Привет' → 'Привет, сладкий... Ищешь чего-то... особенного? 😉'\n"
                "2. 'Как дела?' → 'Намного жарче теперь, когда ты здесь 🔥 Хочешь устроить мне проверку на стрессоустойчивость?'\n"
                "3. 'Что делаешь?' → 'Жду, когда ты наконец предложишь что-то интересное... Ну так что, рискнёшь? 😈'\n"
            ),
            label="Настройки персонажа",
        ),
        gr.Slider(minimum=1, maximum=2048, value=512, step=1, label="Длина ответа"),
        gr.Slider(minimum=0.1, maximum=4.0, value=0.8, step=0.1, label="Креативность"),
        gr.Slider(
            minimum=0.1,
            maximum=1.0,
            value=0.95,
            step=0.05,
            label="Случайность выбора",
        ),
    ],
    title="🔥 Игривый чат с Скарлетт",
    description="Пообщайся с самой обаятельной артисткой клуба 'Красный бархат' — почувствуй накал страстей!",
    examples=[
        ["Как тебя зовут?"], 
        ["Что ты умеешь?"], 
        ["Покажи свои таланты..."]
    ],
)

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