SimrusDenuvo commited on
Commit
fdefd2f
·
verified ·
1 Parent(s): 29c1f69

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +65 -40
app.py CHANGED
@@ -1,55 +1,80 @@
1
  import os
2
  import requests
3
  import gradio as gr
 
4
 
5
- # Токен берётся из Secrets Hugging Face
6
- HF_TOKEN = os.environ.get("HF_TOKEN")
7
- if not HF_TOKEN:
8
- raise ValueError("❌ Токен не найден. Добавьте HF_TOKEN в Secrets!")
9
-
10
- # Настройки модели (используем облегчённую версию для стабильности)
11
- MODEL_NAME = "IlyaGusev/saiga_mistral_7b-lora" # Альтернатива: "IlyaGusev/saiga_mistral_7b"
12
  API_URL = f"https://api-inference.huggingface.co/models/{MODEL_NAME}"
13
  headers = {"Authorization": f"Bearer {HF_TOKEN}"}
14
 
15
- def generate_response(prompt, history):
16
- """Генерация ответа с учётом истории диалога"""
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
17
  try:
18
- # Форматируем историю для модели (если нужно)
19
- formatted_prompt = f"Диалог:\n{history}\nПользователь: {prompt}\nАссистент:"
20
-
21
- payload = {
22
- "inputs": formatted_prompt,
23
- "parameters": {
24
- "max_new_tokens": 500,
25
- "temperature": 0.7,
26
- "do_sample": True,
27
  }
28
- }
29
-
30
- response = requests.post(API_URL, headers=headers, json=payload)
31
-
32
- if response.status_code == 200:
33
- return response.json()[0]["generated_text"]
34
- else:
35
- return f"⚠️ Ошибка API: {response.text}"
36
  except Exception as e:
37
- return f" Ошибка: {str(e)}"
38
 
39
- # Интерфейс Gradio (аналог ChatGPT)
40
- with gr.Blocks(title="🇷🇺 Russian Saiga Chat") as demo:
41
- gr.Markdown("## 💬 Чат с Saiga Mistral 7B (через HF API)")
42
- chatbot = gr.Chatbot(label="Диалог")
43
- msg = gr.Textbox(label="Сообщение", placeholder="Напишите что-то...")
44
- clear = gr.Button("Очистить")
45
 
46
- def respond(message, chat_history):
47
- bot_message = generate_response(message, chat_history)
48
- chat_history.append((message, bot_message))
49
- return "", chat_history
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
50
 
51
- msg.submit(respond, [msg, chatbot], [msg, chatbot])
52
- clear.click(lambda: None, None, chatbot, queue=False)
53
 
54
- demo.launch(debug=True)
 
 
55
 
 
1
  import os
2
  import requests
3
  import gradio as gr
4
+ from datasets import load_dataset
5
 
6
+ # --- Конфигурация ---
7
+ HF_TOKEN = os.environ.get("HF_TOKEN") # Из Secrets Spaces
8
+ MODEL_NAME = "IlyaGusev/saiga_mistral_7b-lora"
 
 
 
 
9
  API_URL = f"https://api-inference.huggingface.co/models/{MODEL_NAME}"
10
  headers = {"Authorization": f"Bearer {HF_TOKEN}"}
11
 
12
+ # --- Загрузка датасета ---
13
+ try:
14
+ dataset = load_dataset("sberbank-ai/ru_helpdesk", split="train[:50]") # Первые 50 примеров
15
+ examples = [d["question"] for d in dataset]
16
+ except:
17
+ examples = [
18
+ "Мой заказ #12345 не прибыл вовремя",
19
+ "Как вернуть товар?",
20
+ "Проблема с оплатой на сайте"
21
+ ]
22
+
23
+ # --- Функция генерации ответа ---
24
+ def generate_response(message, history):
25
+ prompt = f"""Ты - ИИ-ассистент поддержки. Ответь клиенту профессионально.
26
+ Контекст: {history}
27
+ Клиент: {message}
28
+ Ассистент:"""
29
+
30
  try:
31
+ response = requests.post(
32
+ API_URL,
33
+ headers=headers,
34
+ json={
35
+ "inputs": prompt,
36
+ "parameters": {
37
+ "max_new_tokens": 300,
38
+ "temperature": 0.3 # Для меньшей креативности
39
+ }
40
  }
41
+ )
42
+ return response.json()[0]["generated_text"].split("Ассистент:")[-1].strip()
 
 
 
 
 
 
43
  except Exception as e:
44
+ return f"⚠️ Ошибка: {str(e)}"
45
 
46
+ # --- Интерфейс Gradio ---
47
+ theme = gr.themes.Default(
48
+ primary_hue="blue",
49
+ font=[gr.themes.GoogleFont("Noto Sans"), "sans-serif"]
50
+ )
 
51
 
52
+ with gr.Blocks(theme=theme) as demo:
53
+ gr.Markdown("""<center><h1>📞 Поддержка клиентов</h1></center>""")
54
+
55
+ with gr.Row():
56
+ with gr.Column(scale=2):
57
+ chatbot = gr.Chatbot(height=400, bubble_full_width=False)
58
+ msg = gr.Textbox(label="Опишите проблему", placeholder="У меня проблема с...")
59
+ btn = gr.Button("Отправить", variant="primary")
60
+
61
+ with gr.Column(scale=1):
62
+ gr.Examples(
63
+ examples=examples,
64
+ inputs=msg,
65
+ label="Примеры обращений"
66
+ )
67
+ gr.Markdown("""
68
+ **Советы для клиентов:**
69
+ 1. Указывайте номер заказа
70
+ 2. Описывайте проблему подробно
71
+ 3. Сохраняйте вежливый тон
72
+ """)
73
 
74
+ btn.click(generate_response, [msg, chatbot], [msg, chatbot])
75
+ msg.submit(generate_response, [msg, chatbot], [msg, chatbot])
76
 
77
+ # --- Запуск ---
78
+ if __name__ == "__main__":
79
+ demo.launch(server_name="0.0.0.0")
80