Makaria commited on
Commit
0033364
·
1 Parent(s): 5138869
Files changed (1) hide show
  1. app.py +22 -20
app.py CHANGED
@@ -2,19 +2,32 @@ import os
2
  import gradio as gr
3
  from transformers import AutoTokenizer, AutoModelForCausalLM
4
  import torch
 
5
 
6
  # Импортируем токены из переменных окружения
7
  HUGGINGFACE_TOKEN = os.getenv("HUGGINGFACE_TOKEN")
8
 
9
  # Загрузка модели и токенизатора DialoGPT
10
  model_name = "microsoft/DialoGPT-medium" # Можно использовать small или large версии
11
- tokenizer = AutoTokenizer.from_pretrained(model_name, token=HUGGINGFACE_TOKEN)
12
- model = AutoModelForCausalLM.from_pretrained(model_name, token=HUGGINGFACE_TOKEN)
 
 
 
 
 
 
 
 
 
13
 
14
  # Функция для ведения диалога
15
  def chat_with_model(user_input, chat_history=[]):
 
 
 
16
  # Кодируем входное сообщение и добавляем к истории
17
- new_user_input_ids = tokenizer.encode(user_input + tokenizer.eos_token, return_tensors='pt')
18
 
19
  # Объединяем новую информацию с историей
20
  bot_input_ids = torch.cat([torch.tensor(chat_history), new_user_input_ids], dim=-1) if chat_history else new_user_input_ids
@@ -23,9 +36,10 @@ def chat_with_model(user_input, chat_history=[]):
23
  chat_history_ids = model.generate(
24
  bot_input_ids,
25
  max_length=100,
 
26
  num_return_sequences=1,
27
  pad_token_id=tokenizer.eos_token_id,
28
- temperature=0.7,
29
  top_k=50,
30
  top_p=0.95
31
  )
@@ -33,20 +47,8 @@ def chat_with_model(user_input, chat_history=[]):
33
  # Декодируем ответ
34
  bot_response = tokenizer.decode(chat_history_ids[:, bot_input_ids.shape[-1]:][0], skip_special_tokens=True)
35
 
36
- # Обновляем историю
37
- chat_history.append(new_user_input_ids)
38
- chat_history.append(chat_history_ids[:, bot_input_ids.shape[-1]:])
39
-
40
- return bot_response, chat_history
41
-
42
- # Создание интерфейса Gradio
43
- iface = gr.Interface(
44
- fn=chat_with_model,
45
- inputs="text",
46
- outputs="text",
47
- title="Чатбот на DialoGPT",
48
- description="Поболтай со своим чатботом!"
49
- )
50
 
51
- # Запуск интерфейса
52
- iface.launch()
 
2
  import gradio as gr
3
  from transformers import AutoTokenizer, AutoModelForCausalLM
4
  import torch
5
+ import random
6
 
7
  # Импортируем токены из переменных окружения
8
  HUGGINGFACE_TOKEN = os.getenv("HUGGINGFACE_TOKEN")
9
 
10
  # Загрузка модели и токенизатора DialoGPT
11
  model_name = "microsoft/DialoGPT-medium" # Можно использовать small или large версии
12
+ tokenizer = AutoTokenizer.from_pretrained(model_name, use_auth_token=HUGGINGFACE_TOKEN, padding_side='left')
13
+ model = AutoModelForCausalLM.from_pretrained(model_name, use_auth_token=HUGGINGFACE_TOKEN)
14
+
15
+ # Список саркастических фраз
16
+ sarcastic_phrases = [
17
+ "О, да, я в полном восторге от твоего вопроса!",
18
+ "Конечно, я это именно так и ожидал.",
19
+ "Как же я давно не слышал чего-то столь оригинального!",
20
+ "Ух ты, ты просто гений, не так ли?",
21
+ "Да, да, именно это я и хотел услышать. Неужели ты прав?"
22
+ ]
23
 
24
  # Функция для ведения диалога
25
  def chat_with_model(user_input, chat_history=[]):
26
+ # Добавляем немного абсурда в вопрос
27
+ absurd_input = user_input + " И как насчет того, чтобы обсудить синий единорог, который варит кофе?"
28
+
29
  # Кодируем входное сообщение и добавляем к истории
30
+ new_user_input_ids = tokenizer.encode(absurd_input + tokenizer.eos_token, return_tensors='pt')
31
 
32
  # Объединяем новую информацию с историей
33
  bot_input_ids = torch.cat([torch.tensor(chat_history), new_user_input_ids], dim=-1) if chat_history else new_user_input_ids
 
36
  chat_history_ids = model.generate(
37
  bot_input_ids,
38
  max_length=100,
39
+ do_sample=True, # Включаем выборку
40
  num_return_sequences=1,
41
  pad_token_id=tokenizer.eos_token_id,
42
+ temperature=1.2, # Увеличиваем температуру для абсурдных ответов
43
  top_k=50,
44
  top_p=0.95
45
  )
 
47
  # Декодируем ответ
48
  bot_response = tokenizer.decode(chat_history_ids[:, bot_input_ids.shape[-1]:][0], skip_special_tokens=True)
49
 
50
+ # Добавляем сарказм, если это уместно
51
+ if random.random() < 0.5: # 50% шанс на сарказм
52
+ bot_response += " " + random.choice(sarcastic_phrases)
 
 
 
 
 
 
 
 
 
 
 
53
 
54
+ # Обновляем истори