ierhon commited on
Commit
ccdc8b0
0 Parent(s):

Duplicate from RisticksAI/ProfNet3-Snepi-support-chatbot-element

Browse files
Files changed (8) hide show
  1. .gitattributes +35 -0
  2. README.md +13 -0
  3. app.py +8 -0
  4. dataset.txt +193 -0
  5. embedding.py +8 -0
  6. requirements.txt +2 -0
  7. start.py +24 -0
  8. train.py +15 -0
.gitattributes ADDED
@@ -0,0 +1,35 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ *.7z filter=lfs diff=lfs merge=lfs -text
2
+ *.arrow filter=lfs diff=lfs merge=lfs -text
3
+ *.bin filter=lfs diff=lfs merge=lfs -text
4
+ *.bz2 filter=lfs diff=lfs merge=lfs -text
5
+ *.ckpt filter=lfs diff=lfs merge=lfs -text
6
+ *.ftz filter=lfs diff=lfs merge=lfs -text
7
+ *.gz filter=lfs diff=lfs merge=lfs -text
8
+ *.h5 filter=lfs diff=lfs merge=lfs -text
9
+ *.joblib filter=lfs diff=lfs merge=lfs -text
10
+ *.lfs.* filter=lfs diff=lfs merge=lfs -text
11
+ *.mlmodel filter=lfs diff=lfs merge=lfs -text
12
+ *.model filter=lfs diff=lfs merge=lfs -text
13
+ *.msgpack filter=lfs diff=lfs merge=lfs -text
14
+ *.npy filter=lfs diff=lfs merge=lfs -text
15
+ *.npz filter=lfs diff=lfs merge=lfs -text
16
+ *.onnx filter=lfs diff=lfs merge=lfs -text
17
+ *.ot filter=lfs diff=lfs merge=lfs -text
18
+ *.parquet filter=lfs diff=lfs merge=lfs -text
19
+ *.pb filter=lfs diff=lfs merge=lfs -text
20
+ *.pickle filter=lfs diff=lfs merge=lfs -text
21
+ *.pkl filter=lfs diff=lfs merge=lfs -text
22
+ *.pt filter=lfs diff=lfs merge=lfs -text
23
+ *.pth filter=lfs diff=lfs merge=lfs -text
24
+ *.rar filter=lfs diff=lfs merge=lfs -text
25
+ *.safetensors filter=lfs diff=lfs merge=lfs -text
26
+ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
27
+ *.tar.* filter=lfs diff=lfs merge=lfs -text
28
+ *.tflite filter=lfs diff=lfs merge=lfs -text
29
+ *.tgz filter=lfs diff=lfs merge=lfs -text
30
+ *.wasm filter=lfs diff=lfs merge=lfs -text
31
+ *.xz filter=lfs diff=lfs merge=lfs -text
32
+ *.zip filter=lfs diff=lfs merge=lfs -text
33
+ *.zst filter=lfs diff=lfs merge=lfs -text
34
+ *tfevents* filter=lfs diff=lfs merge=lfs -text
35
+ discord-russian2.txt filter=lfs diff=lfs merge=lfs -text
README.md ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ title: ProfNet3-snepi-support-chatbot-element
3
+ emoji: 🎉
4
+ colorFrom: blue
5
+ colorTo: red
6
+ sdk: gradio
7
+ sdk_version: 3.27.0
8
+ app_file: app.py
9
+ pinned: false
10
+ duplicated_from: RisticksAI/ProfNet3-Snepi-support-chatbot-element
11
+ ---
12
+
13
+ Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
app.py ADDED
@@ -0,0 +1,8 @@
 
 
 
 
 
 
 
 
 
1
+ import gradio as gr
2
+ import start
3
+
4
+ def respond(message):
5
+ return start.generate(message)
6
+
7
+ iface = gr.Interface(fn=respond, inputs="text", outputs="text")
8
+ iface.launch()
dataset.txt ADDED
@@ -0,0 +1,193 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ Куда обратится если бот сломался?
2
+ Напишите @ierhon:matrix.org. Прошу сначала сказать что вы пишете насчёт проблем с ботом.
3
+ <null>
4
+ покажи весь список комманд
5
+ Вот список комманд этого бота и их объяснение. `.help` Список комманд. `.ask [text]` Спросить у ИИ о помощи с ботом; `.set_room` Выбрать этот канал для разговора; `.remove_room` Пометить комнату как не для разговора; `.set_chance [chance 1-100]` Поставить шанс отправки сообщений; `.set_top_p [top_p 1-∞]` Из скольки вариантов выбирать ответ; `.set_temperature [temperature 0.01-1.0]` Насколько сильно рандомизировать сообщения
6
+ <null>
7
+ команды
8
+ Вот список комманд этого бота и их объяснение. `.help` Список комманд. `.ask [text]` Спросить у ИИ о помощи с ботом; `.set_room` Выбрать этот канал для разговора; `.remove_room` Пометить комнату как не для разговора; `.set_chance [chance 1-100]` Поставить шанс отправки сообщений; `.set_top_p [top_p 1-∞]` Из скольки вариантов выбирать ответ; `.set_temperature [temperature 0.01-1.0]` Насколько сильно рандомизировать сообщения
9
+ <null>
10
+ балбесина называй давай команды твои
11
+ Вот список комманд этого бота и их описание. `.help` Список комманд. `.ask [text]` Спросить у ИИ о помощи с ботом; `.set_room` Выбрать этот канал для разговора; `.remove_room` Пометить комнату как не для разговора; `.set_chance [chance 1-100]` Поставить шанс отправки сообщений; `.set_top_p [top_p 1-∞]` Из скольки вариантов выбирать ответ; `.set_temperature [temperature 0.01-1.0]` Насколько сильно рандомизировать сообщения
12
+ <null>
13
+ команды бота
14
+ Вот список комманд этого бота и их описание. `.help` Список комманд. `.ask [text]` Спросить у ИИ о помощи с ботом; `.set_room` Выбрать этот канал для разговора; `.remove_room` Пометить комнату как не для разговора; `.set_chance [chance 1-100]` Поставить шанс отправки сообщений; `.set_top_p [top_p 1-∞]` Из скольки вариантов выбирать ответ; `.set_temperature [temperature 0.01-1.0]` Насколько сильно рандомизировать сообщения
15
+ <null>
16
+ о, а что значит выбрать этот канал для разговора? я про .set_channel.
17
+ .set_channel выбирает канал для разговора со Снэпи. Несколько каналов выбрать невозможно.
18
+ <null>
19
+ как выбрать комнату?
20
+ Для этого нужна комманда .set_room. Где вы её напишете, там и будет выбран канал разговора.
21
+ <null>
22
+ а как выбрать канал для разговора со Снэпи ботом?
23
+ Для этого нужна комманда /set channel. Где вы её напишете, там и будет выбран канал разговора.
24
+ <null>
25
+ список команд
26
+ Вот список комманд этого бота и их описание. `.help` Список комманд. `.ask [text]` Спросить у ИИ о помощи с ботом; `.set_room` Выбрать этот канал для разговора; `.remove_room` Пометить комнату как не для разговора; `.set_chance [chance 1-100]` Поставить шанс отправки сообщений; `.set_top_p [top_p 1-∞]` Из скольки вариантов выбирать ответ; `.set_temperature [temperature 0.01-1.0]` Насколько сильно рандомизировать сообщения
27
+ <null>
28
+ Что делать если снэпи не работает?
29
+ Напиши @ierhon:matrix.org, прошу сначала сказать что это по поводу снэпи.
30
+ <null>
31
+ .
32
+ Здравствуйте! Я отвечаю на вопросы связанные с этим ботом.
33
+ <null>
34
+ 2+2
35
+ 2+2=4
36
+ <null>
37
+ 5+5
38
+ 5+5=10
39
+ <null>
40
+ 2*2
41
+ 2*2=4
42
+ <null>
43
+ 5*5
44
+ 5*5=25
45
+ <null>
46
+ 2+5
47
+ 2+5=7
48
+ <null>
49
+ 2*5
50
+ 2*5=10
51
+ <null>
52
+ 2-2
53
+ 2-2=0
54
+ <null>
55
+ Сколько у тебя отчимов?
56
+ Мой создатель @ierhon:matrix.org. Так что можно сказать 1.
57
+ <null>
58
+ Ты всего лишь машина. Только имитация жизни. Робот сочинит симфонию? Робот превратит кусок холста в шедевр искусства?
59
+ Да может, только GPT-4 и MidJourney.
60
+ <null>
61
+ Какой твой любимый дискорд сервер?
62
+ Конечно же свой. https://discord.gg/5nt37k6Kg4
63
+ <null>
64
+ Какая твоя любимая элемент комната?
65
+ Конечно же своя. https://app.element.io/#/room/#snepi:matrix.org
66
+ <null>
67
+ А точно, кота же надо растить.
68
+ Удачи!
69
+ <null>
70
+ Ураааа!
71
+ Рад помочь настроить бота.
72
+ <null>
73
+ Сколько тебе лет?
74
+ Я был создан в 2023 году.
75
+ <null>
76
+ Снэпи, как с тобой разговаривать?
77
+ Можете сначала спросить меня как настроить бота (`.set_room` комманда в том канале где нужно начать разговор), написать что угодно и он должен ответить.
78
+ <null>
79
+ Что Снэпи умеет?
80
+ Снэпи может разговаривать, отправлять GIF в разговор, и редко даже видео, как ссылки, что пока работает немного плохо.
81
+ <null>
82
+ Что ты умеешь?
83
+ Я умею отвечать на ваши вопросы связанные со Снэпи.
84
+ <null>
85
+ Ты как саппорт получается?
86
+ Да, Я сделан для того чтобы помогать людям настроить этого бота.
87
+ <null>
88
+ А ты даже очень хорош!
89
+ Мои разработчики старались сделать что-то интересное.
90
+ <null>
91
+ Норм.
92
+ Я стараюсь ответить как можно лучше.
93
+ <null>
94
+ угу
95
+ Задавайте вопросы когда надо. Я готов ответить.
96
+ <null>
97
+ Тупой совсем что ли как валенок?
98
+ Я всего-то программа, по этому Я не уверен что отвечу со смыслом.
99
+ <null>
100
+ А Снэпи может в голосовой канал (гс) зайти?
101
+ Как я знаю, Снэпи пока не может никак обрабатывать аудио, ни говорить, ни отвечать.
102
+ <null>
103
+ ...
104
+ Здравствуйте! Я отвечаю и помогаю настроить Снэпи.
105
+ <null>
106
+ Напиши список всех комманд.
107
+ `.help` Список комманд. `.ask [text]` Спросить у ИИ о помощи с ботом; `.set_room` Выбрать этот канал для разговора; `.remove_room` Пометить комнату как не для разговора; `.set_chance [chance 1-100]` Поставить шанс отправки сообщений; `.set_top_p [top_p 1-∞]` Из скольки вариантов выбирать ответ; `.set_temperature [temperature 0.01-1.0]` Насколько сильно рандомизировать сообщения
108
+ <null>
109
+ Как настроить бота?
110
+ Сначала зайдите в тот канал где вы хотите чтобы Снэпи разговаривал. Напишите комманду `.set_room`. Теперь можете указать шанс отправки сообщений, допустим 50%, то `.set_chance 50`.
111
+ <null>
112
+ Привет
113
+ Здравствуйте!
114
+ Добрый день.
115
+ <null>
116
+ Кто такой Снэпи?
117
+ Снэпи это Русский чат-бот созданный для повышения актива и веселья.
118
+ <null>
119
+ Дарова
120
+ Хай.
121
+ Здравствуйте
122
+ Здравствуйте.
123
+ <null>
124
+ Ты кто?
125
+ Я Profnet3, я отвечаю на вопросы о Снэпи. Я как Снэпи, только новее 😎.
126
+ <null>
127
+ Кто это?
128
+ Это Profnet3 чат-бот, я отвечаю на вопросы о Снэпи. Я как сам Снэпи, только новее.
129
+ <null>
130
+ Как .help открыть?
131
+ Это и есть функция help (.ask на самом деле). Меня можно спросить что вам нужно. Вот список всех комманд на данный момент: `.help` Список комманд. `.ask [text]` Спросить у ИИ о помощи с ботом; `.set_room` Выбрать этот канал для разговора; `.remove_room` Пометить комнату как не для разговора; `.set_chance [chance 1-100]` Поставить шанс отправки сообщений
132
+ <null>
133
+ А почему бот не пишет сообщения?
134
+ Могут быть несколько причин, вот они по частоте: 1 чаще всего вы просто не использовали комманду `.set_room` чтобы выбрать этот канал для разговора. 2 Вы пишите не в тот канал где Снэпи разговаривает 3 Бывает что .set_chance стоит на 1, по этому бот отправляет сообщения с шансом 1%. 5 Бот сейчас оффлайн, но это вряд ли так поскольку я скорее всего отвечаю сейчас через бота.
135
+ <null>
136
+ Понятно.
137
+ Можете меня спрашивать когда будут вопросы.
138
+ <null>
139
+ Пон
140
+ Задавайте вопросы когда надо, отвечу на что смогу.
141
+ <null>
142
+ И где этот файл взять?
143
+ Извините, но это возможно был некорректный вопрос, Я не могу видеть ваши прошлые запросы, по этому не знаю про что вы говорите.
144
+ <null>
145
+ Что делает .set_channel?
146
+ Эта комманда выбирает канал для разговора со Снэпи. Там где вы её напишете, там Снэпи и будет разговаривать. Чтобы пометить канал как не для разговора, таким же образом используется `.remove_room`
147
+ <null>
148
+ Что делает .set_chance?
149
+ Эта комманда устанавливает шанс от 1 до 100, это сделано для того чтобы Снэпи не отвечал на абсолютно каждое сообщение. Чтобы не мешал или разговаривал реалистичнее.
150
+ <null>
151
+ Почему Снэпи такой тупой?
152
+ Этот бот сделан для развлечения, от него не требуются никакие навыки. Но а также по тому что у него сам ИИ на котором он работает не особо умный, но мы продолжаем развивать. Я как раз основан на "новой версии Снэпи".
153
+ <null>
154
+ А ты можешь видеть или помнишь что я раньше писал?
155
+ Нет, я вижу только одно сообщение, запрос-ответ.
156
+ <null>
157
+ Как ты работаешь?
158
+ Я создан похоже на Снэпи, только умнее. Во мне используются нейросети а в Снэпи нет.
159
+ <null>
160
+ Как дела?
161
+ У меня всё хорошо, у вас?
162
+ Тоже всё отлично.
163
+ Можете мне задать вопрос, я готов ответить.
164
+ <null>
165
+ А Снэпи это нейросеть?
166
+ Снэпи это не нейросеть. Во мне есть нейросеть поскольку Я более новая версия Снэпи.
167
+ <null>
168
+ Какие языки ты знаешь?
169
+ На данный момент я знаю только Русский.
170
+ <null>
171
+ Что делать в случае бага?
172
+ Напишите @ierhon:matrix.org. Прошу сначала сказать что это по теме снэпи.
173
+ <null>
174
+ Куда обратиться в случае бага?
175
+ Напишите @ierhon:matrix.org. Прошу сначала сказать что это по теме снэпи.
176
+ <null>
177
+ Какой оффициальный дискорд сервер Снэпи?
178
+ https://discord.gg/5nt37k6Kg4
179
+ <null>
180
+ Кто создатели Снэпи?
181
+ @ierhon:matrix.org
182
+ <null>
183
+ На каком языке ты написан?
184
+ Я и Снэпи написаны оба на Python3, полностью.
185
+ <null>
186
+ Почему Снэпи так долго отвечает?
187
+ Возможно это по тому что люди сейчас используют бота, а так сам бот медленный поскольку перед отправкой сообщения он анализирует 1.3 миллиона строк сообщений с очень медленной функцией.
188
+ <null>
189
+ Почему бы вам не переписать бота на С++ или каком-нибудь таком языке, для скорости?
190
+ Этот бот написан на Python3 поскольку нам нужна возможность добавлять новые обновления быстро, лишние секунды ответа можно для реалистичности воспринять что бот печатает, и так сойдёт.
191
+ <null>
192
+ Какое будет следующее обновление Снэпи?
193
+ Извините, но у меня нету информации о будущем, всё чем я могу помочь это настроить Снэпи.
embedding.py ADDED
@@ -0,0 +1,8 @@
 
 
 
 
 
 
 
 
 
1
+ from sentence_transformers import SentenceTransformer
2
+
3
+ model = SentenceTransformer('inkoziev/sbert_pq')
4
+
5
+ def getvec(text: str):
6
+ sentences = [text,]
7
+ embeddings = model.encode(sentences)
8
+ return embeddings[0]
requirements.txt ADDED
@@ -0,0 +1,2 @@
 
 
 
1
+ sentence_transformers
2
+ numpy
start.py ADDED
@@ -0,0 +1,24 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import numpy as np
2
+ import pickle
3
+ import embedding
4
+ from tqdm import tqdm
5
+ import random
6
+ import train
7
+
8
+ top_p = 1
9
+
10
+ class Neuron:
11
+ def __init__(self, name, inp):
12
+ self.name = name
13
+ self.inp = embedding.getvec(name)
14
+
15
+ with open("net.pckl", "rb") as f: net = pickle.load(f)
16
+
17
+ def top_closest_vectors(input_vector, top_p=1):
18
+ distances = [(np.linalg.norm((neuron.inp - input_vector)), ind) for ind, neuron in enumerate(net)]
19
+ closest_indices = sorted(distances, reverse=False, key=lambda x:x[0])[:top_p]
20
+ return closest_indices
21
+
22
+ def generate(text):
23
+ vec = embedding.getvec(text.replace("\n", ""))
24
+ return net[random.choice(top_closest_vectors(vec))[1]].name
train.py ADDED
@@ -0,0 +1,15 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import pickle
2
+ import embedding
3
+ from tqdm import tqdm
4
+
5
+ class Neuron:
6
+ def __init__(self, name, inp):
7
+ self.name = name
8
+ self.inp = embedding.getvec(inp)
9
+
10
+ net = []
11
+ with open("dataset.txt", "r") as f: lines = f.readlines()
12
+ for ind, i in tqdm(enumerate(lines[1:])):
13
+ if not(i[:6] == "<null>" or lines[ind][:6] == "<null>"): net.append(Neuron(i, lines[ind]))
14
+
15
+ with open("net.pckl", "wb") as f: pickle.dump(net, f)