Skip to content
This repository was archived by the owner on Dec 2, 2025. It is now read-only.

Commit 7247cad

Browse files
Merge pull request #33 from LyaaaaaGames/sfw
Implemented the banned_words feature.
2 parents 6b76d8d + a2141cd commit 7247cad

3 files changed

Lines changed: 32 additions & 7 deletions

File tree

server/generator.py

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,10 @@
4040
#-- - 31/01/2024 Lyaaaaa
4141
#-- - generate_text now longer receives memory and context as parameters.
4242
#-- They are embedded in the prompt parameter by the client.
43+
#--
44+
#-- - 07/05/2024 Lyaaaaa
45+
#-- - Updated generate_text to now be able to censor generation. The words
46+
#-- passed in p_banned_words parameters won't be generated anymore.
4347
#------------------------------------------------------------------------------
4448

4549
from model import Model
@@ -48,16 +52,24 @@
4852
import logger
4953

5054
class Generator(Model):
51-
5255
#------------------------------------------------------------------------------
5356
#-- generate_text
5457
#------------------------------------------------------------------------------
5558
def generate_text(self,
56-
p_prompt = None,
57-
p_parameters = None):
59+
p_prompt = None,
60+
p_parameters = None,
61+
p_banned_words = []):
5862

5963
model_input = self._Tokenizer(p_prompt, return_tensors = "pt")
6064

65+
if p_banned_words:
66+
banned_words_ids = self._Tokenizer(
67+
p_banned_words,
68+
add_special_tokens=False
69+
).input_ids
70+
71+
p_parameters["bad_words_ids"] = banned_words_ids
72+
6173
if self.is_cuda_available:
6274
logger.log.info("Loading inputs to GPU")
6375
model_input.to("cuda")

server/model.py

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -203,6 +203,11 @@
203203
#-- - Added a log message to display the model's name and its path.
204204
#-- - Added a log message to display if cuda is supported.
205205
#--
206+
#--
207+
#-- - 07/05/2024 Lyaaaaa
208+
#-- - Updated _load_tokens to set add_prefix_space to True. It is needed
209+
#-- for using bad_words_ids parameter for generation.
210+
#--
206211
#-- - 08/05/2024 Lyaaaaa
207212
#-- - Updated _load_model to force (if config.TORCH_DTYPE_SAFETY is True)
208213
#-- torch_dtype to be set to float32 if cuda isn't available.
@@ -302,7 +307,10 @@ def _load(self):
302307
#------------------------------------------------------------------------------
303308
def _load_tokens(self):
304309
try:
305-
self._Tokenizer = AutoTokenizer.from_pretrained(self._model_path)
310+
self._Tokenizer = AutoTokenizer.from_pretrained(
311+
self._model_path,
312+
add_prefix_space=True
313+
)
306314
except Exception as e:
307315
logger.log.error("Error loading tokens in " + self._model_path)
308316
logger.log.error(e)

server/server.py

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -118,6 +118,10 @@
118118
#-- - 31/01/2024 Lyaaaaa
119119
#-- - generate_text now longer receives memory and context as parameters.
120120
#-- They are embedded in the prompt parameter by the client.
121+
#--
122+
#-- - 07/05/2024 Lyaaaaa
123+
#-- - Updated handle_request and generation case to receive a banned_words
124+
#-- parameter and pass it to generator.generate_text
121125
#------------------------------------------------------------------------------
122126

123127
import asyncio
@@ -177,10 +181,11 @@ def handle_request(p_websocket, p_data : dict):
177181
request = p_data['request']
178182

179183
if request == Request.TEXT_GENERATION.value:
180-
prompt = p_data['prompt']
181-
parameters = p_data['parameters']
184+
prompt = p_data['prompt']
185+
parameters = p_data['parameters']
186+
banned_words = p_data['banned_words']
182187

183-
generated_text = generator.generate_text(prompt, parameters)
188+
generated_text = generator.generate_text(prompt, parameters, banned_words)
184189

185190
p_data["generated_text"] = generated_text
186191

0 commit comments

Comments
 (0)