test3 / app.py
tonybur's picture
Update app.py
e944500 verified
Raw
History Blame Contribute Delete
5.29 kB
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()