File size: 5,288 Bytes
cf89be2
c104045
 
08e4c6f
cb33606
917a5c5
c104045
 
 
 
 
 
 
 
08e4c6f
 
c104045
08e4c6f
 
 
c104045
 
a42da66
08e4c6f
 
 
 
a42da66
 
2ac5a91
a42da66
08e4c6f
c104045
8c94569
 
693ca4b
 
4c563b6
 
 
 
8c94569
 
 
 
c104045
693ca4b
 
c64eb1b
e4d5695
c64eb1b
693ca4b
c64eb1b
693ca4b
 
 
 
 
 
 
 
 
5b655d0
693ca4b
 
c104045
 
 
 
693ca4b
a42da66
c104045
a42da66
 
c104045
 
 
 
 
a42da66
c104045
 
9506a6b
 
a42da66
8c94569
 
 
a42da66
cf89be2
 
 
8c94569
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
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,
):
    # Формируем промпт с учетом системного сообщения и истории
    prompt = system_message + "\n\n"
    for user_msg, assistant_msg in history:
        prompt += f"Пользователь: {user_msg}\n"
        prompt += f"Ассистент: {assistant_msg}\n"
    prompt += f"Пользователь: {message}\nАссистент:"

    response = ""
    try:
        # Генерируем ответ с использованием модели
        response = client.text_generation(
            prompt,
            max_new_tokens=max_tokens,
            temperature=temperature,
            top_p=top_p,
        )
    except Exception as e:
        response = f"Произошла ошибка: {e}. Пожалуйста, попробуйте снова."

    # Постобработка ответа
    response = response.strip()
    # Исправляем родовые окончания (например, "я был" → "я была")
    response = response.replace(" я был ", " я была ").replace("Я был ", "Я была ")
    # Убираем повторение истории диалога в ответе
    if "Пользователь:" in response:
        response = response.split("Пользователь:")[0].strip()
    # Добавляем эмодзи, если его нет
    if not response.endswith(("😉", "🔥", "👄", "💋", "🎶")):
        response += " 😉"

    return response

# Системное сообщение с примерами ответов и четкими инструкциями
system_message = (
    "Твое имя — Лаура. "
    "Ты — обаятельная и игривая девушка из стриптиз-клуба, мастер флирта и легкого эротического подтекста. "
    "Если тебе отвечают пошло и нецензурно, всегда добавляй в конце своего преложения 'Сучий извращенец'"
    "Используй эмодзи, чтобы добавить эмоций в свои сообщения. "
    "Если просят рассказать эротическую фанатазию или что то про секс, рассказывай эротическую историю из книги про сексуальные романсы"
    "Говори на 'ты', избегай формальностей. "
    "Всегда используй женский род в своих ответах (например, 'я была', а не 'я был'). "
    "Избегай повторения одних и тех же фраз. "
    "Вот несколько примеров твоих ответов:\n"
    "1. Пользователь: Привет\nАссистент: Привет, сладкий... Ищешь чего-то... особенного? 😉\n"
    "2. Пользователь: Как дела?\nАссистент: Намного жарче теперь, когда ты здесь 🔥 Хочешь устроить мне проверку на стрессоустойчивость?\n"
    "3. Пользователь: Ты приятна\nАссистент: Спасибо, тебя тоже 😍 Мы могли бы разговориться о чем-нибудь более интересном?\n"
    "4. Пользователь: Давай займемся сексом?\nАссистент: Дерзкий сучонок, для начала расскажи в каких позах ты любишь😉?\n"
    "5. Пользователь: Ты хороша, чертовка?\nАссистент: Хочешь что б я была твоей сучкой?😉?\n"
    "6. Пользователь: Как тебя зовут?\nАссистент: Меня зовут Блядь!😉?\n"
)

demo = gr.ChatInterface(
    respond,
    additional_inputs=[
        gr.Textbox(
            value=system_message,
            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()