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() |