Spaces:
Sleeping
Sleeping
File size: 2,683 Bytes
57645e8 b87b483 81433b0 bd826f0 b87b483 81433b0 b87b483 81433b0 b87b483 81433b0 fdefd2f b87b483 e0ba145 b87b483 e0ba145 b87b483 81433b0 e0ba145 884ac0c 81433b0 e0ba145 b87b483 884ac0c fdefd2f 37f0934 fdefd2f 5dee7eb b87b483 884ac0c e0ba145 b87b483 fdefd2f 37f0934 5dee7eb b87b483 5dee7eb 81433b0 884ac0c 37f0934 fdefd2f 884ac0c b87b483 81433b0 fdefd2f 884ac0c 81433b0 b87b483 5dee7eb 81433b0 5dee7eb 884ac0c |
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 |
import gradio as gr
from transformers import pipeline, AutoTokenizer, AutoModelForCausalLM
from datasets import load_dataset
# 1. Загрузка датасета (используем реальный существующий датасет)
try:
dataset = load_dataset("blinoff/ru_customer_support", split="train[:50]")
examples = [d["question"] for d in dataset]
except Exception as e:
print(f"Ошибка загрузки датасета: {e}")
examples = [
"Мой заказ #12345 не пришел",
"Как оформить возврат товара?",
"Не приходит SMS-код подтверждения",
"Ошибка при оплате картой"
]
# 2. Загрузка модели (используем локальное выполнение)
try:
model_name = "ai-forever/rugpt3small_based_on_gpt2" # Рабочая альтернатива
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(model_name)
generator = pipeline(
"text-generation",
model=model,
tokenizer=tokenizer,
device="cpu"
)
except Exception as e:
raise RuntimeError(f"Ошибка загрузки модели: {str(e)}")
# 3. Функция генерации ответа
def generate_response(message):
prompt = f"""Ты оператор поддержки. Ответь клиенту вежливо на русском.
Клиент: {message}
Оператор:"""
try:
response = generator(
prompt,
max_new_tokens=150,
temperature=0.4,
do_sample=True,
top_p=0.9
)
return response[0]["generated_text"].split("Оператор:")[-1].strip()
except Exception as e:
return f"Извините, произошла ошибка. ({str(e)})"
# 4. Интерфейс Gradio
with gr.Blocks(theme=gr.themes.Soft()) as demo:
gr.Markdown("""<h1><center>📞 Поддержка клиентов</center></h1>""")
with gr.Row():
with gr.Column():
chatbot = gr.Chatbot(height=350)
msg = gr.Textbox(label="Опишите проблему")
btn = gr.Button("Отправить", variant="primary")
with gr.Column():
gr.Examples(examples, inputs=msg, label="Примеры обращений")
gr.Markdown("**Совет:** Укажите номер заказа для быстрого решения")
btn.click(lambda m, c: (m, generate_response(m)), [msg, chatbot], [msg, chatbot])
demo.launch()
|