JohanBeytell commited on
Commit
8e6a5e9
·
verified ·
1 Parent(s): 635ffdb

Removed flagging

Browse files
Files changed (1) hide show
  1. app.py +5 -134
app.py CHANGED
@@ -1,93 +1,9 @@
1
- # import sentencepiece as spm
2
- # import numpy as np
3
- # import tensorflow as tf
4
- # from tensorflow.keras.preprocessing.sequence import pad_sequences
5
- # from valx import detect_profanity, detect_hate_speech
6
- # import gradio as gr
7
-
8
- # sp = spm.SentencePieceProcessor()
9
- # sp.Load("dungen_dev_preview.model")
10
-
11
- # model = tf.keras.models.load_model("dungen_dev_preview_model.keras")
12
-
13
- # max_seq_len = 25
14
-
15
- # def generate_text(seed_text, next_words=30, temperature=0.5):
16
- # seed_text = seed_text.strip().lower()
17
-
18
- # if "|" in seed_text:
19
- # gr.Warning("The prompt should not contain the '|' character. Using default prompt.")
20
- # seed_text = 'game name | '
21
- # elif detect_profanity([seed_text], language='All'):
22
- # gr.Warning("Profanity detected in the prompt, using the default prompt.")
23
- # seed_text = 'game name | '
24
- # elif (hate_speech_result := detect_hate_speech(seed_text)) and hate_speech_result[0] in ['Hate Speech', 'Offensive Speech']:
25
- # gr.Warning('Harmful speech detected in the prompt, using default prompt.')
26
- # seed_text = 'game name | '
27
- # else:
28
- # seed_text += ' | '
29
-
30
- # generated_text = seed_text
31
- # if generated_text != 'game name | ': # only generate if not the default prompt
32
- # for _ in range(next_words):
33
- # token_list = sp.encode_as_ids(generated_text)
34
- # token_list = pad_sequences([token_list], maxlen=max_seq_len - 1, padding='pre')
35
- # predicted = model.predict(token_list, verbose=0)[0]
36
-
37
- # predicted = np.asarray(predicted).astype("float64")
38
- # predicted = np.log(predicted + 1e-8) / temperature
39
- # exp_preds = np.exp(predicted)
40
- # predicted = exp_preds / np.sum(exp_preds)
41
-
42
- # next_index = np.random.choice(len(predicted), p=predicted)
43
- # next_token = sp.id_to_piece(next_index)
44
- # generated_text += next_token
45
-
46
- # if next_token.endswith('</s>') or next_token.endswith('<unk>'):
47
- # break
48
-
49
- # decoded = sp.decode_pieces(sp.encode_as_pieces(generated_text))
50
- # decoded = decoded.replace("</s>", "").replace("<unk>", "").strip()
51
-
52
- # if '|' in decoded:
53
- # decoded = decoded.split('|', 1)[1].strip()
54
-
55
- # if any(detect_profanity([decoded], language='All')) or (hate_speech_result := detect_hate_speech(decoded)) and hate_speech_result[0] in ['Hate Speech', 'Offensive Speech']:
56
- # gr.Warning("Flagged potentially harmful output.")
57
- # decoded = 'Flagged Output'
58
-
59
- # return decoded
60
-
61
- # demo = gr.Interface(
62
- # fn=generate_text,
63
- # inputs=[
64
- # gr.Textbox(label="Prompt", value="a female character name", max_lines=1),
65
- # gr.Slider(1, 100, step=1, label='Next Words', value=30),
66
- # gr.Slider(0.1, 1, value=0.5, label='Temperature', info='Controls randomness of generation, higher values = more creative, lower values = more probalistic')
67
- # ],
68
- # outputs=gr.Textbox(label="Generated Names"),
69
- # title='Dungen Dev - Name Generator',
70
- # description='A prompt-based name generator for game developers. Dungen Dev is an experimental model, and may produce outputs that are inappropriate, biased, or potentially harmful and inaccurate. Caution is advised.',
71
- # examples=[
72
- # ["a male character name", 30, 0.5],
73
- # ["a futuristic city name", 30, 0.5],
74
- # ["an item name", 30, 0.5],
75
- # ["a dark and mysterious forest name", 30, 0.5],
76
- # ["an evil character name", 30, 0.5]
77
- # ]
78
- # )
79
-
80
- # demo.launch()
81
-
82
  import sentencepiece as spm
83
  import numpy as np
84
  import tensorflow as tf
85
  from tensorflow.keras.preprocessing.sequence import pad_sequences
86
  from valx import detect_profanity, detect_hate_speech
87
  import gradio as gr
88
- from datasets import load_dataset, DatasetDict, Dataset
89
- from huggingface_hub import HfApi
90
- from datetime import datetime
91
 
92
  sp = spm.SentencePieceProcessor()
93
  sp.Load("dungen_dev_preview.model")
@@ -112,7 +28,7 @@ def generate_text(seed_text, next_words=30, temperature=0.5):
112
  seed_text += ' | '
113
 
114
  generated_text = seed_text
115
- if generated_text != 'game name | ': # only generate if not the default prompt
116
  for _ in range(next_words):
117
  token_list = sp.encode_as_ids(generated_text)
118
  token_list = pad_sequences([token_list], maxlen=max_seq_len - 1, padding='pre')
@@ -140,57 +56,16 @@ def generate_text(seed_text, next_words=30, temperature=0.5):
140
  gr.Warning("Flagged potentially harmful output.")
141
  decoded = 'Flagged Output'
142
 
143
- return decoded #, gr.update(interactive=True)
144
-
145
- # Custom flagging callback to use the existing flagging logic
146
- class CustomFlaggingCallback(gr.FlaggingCallback):
147
- def __init__(self, dataset_id):
148
- self.dataset_id = dataset_id
149
-
150
- def flag(self, flag_data, flag_option=None, username=None):
151
- prompt, generated_text, next_words, temperature = flag_data
152
- timestamp = datetime.now().isoformat()
153
-
154
- # Custom flagging logic
155
- try:
156
- dataset = load_dataset(self.dataset_id)
157
- except:
158
- dataset = DatasetDict()
159
-
160
- new_data = [{
161
- "Prompt": prompt,
162
- "Generated Text": generated_text,
163
- "Next Words": next_words,
164
- "Temperature": temperature,
165
- "Timestamp": timestamp
166
- }]
167
-
168
- new_dataset = Dataset.from_list(new_data)
169
-
170
- if "train" in dataset:
171
- dataset["train"] = concatenate_datasets([dataset["train"], new_dataset]) # Append to existing train
172
- else:
173
- dataset["train"] = new_dataset # Create the train split
174
-
175
- dataset.push_to_hub(self.dataset_id)
176
- return "Output flagged successfully."
177
-
178
- # Initialize the custom flagging callback
179
- dataset_id = "InfinitodeLTD/DungenDev-FlaggedOutputs"
180
- custom_flag_callback = CustomFlaggingCallback(dataset_id)
181
 
182
  demo = gr.Interface(
183
  fn=generate_text,
184
  inputs=[
185
  gr.Textbox(label="Prompt", value="a female character name", max_lines=1),
186
  gr.Slider(1, 100, step=1, label='Next Words', value=30),
187
- gr.Slider(0.1, 1, value=0.5, label='Temperature', info='Controls randomness of generation, higher values = more creative, lower values = more probabilistic')
188
- ],
189
- outputs=[
190
- gr.Textbox(label="Generated Name", interactive=True),
191
- # gr.Button("Flag Output", interactive=False, elem_id="flag-button")
192
  ],
193
- live=False,
194
  title='Dungen Dev - Name Generator',
195
  description='A prompt-based name generator for game developers. Dungen Dev is an experimental model, and may produce outputs that are inappropriate, biased, or potentially harmful and inaccurate. Caution is advised.',
196
  examples=[
@@ -199,11 +74,7 @@ demo = gr.Interface(
199
  ["an item name", 30, 0.5],
200
  ["a dark and mysterious forest name", 30, 0.5],
201
  ["an evil character name", 30, 0.5]
202
- ],
203
- theme="default",
204
- flagging_mode="manual",
205
- flagging_callback=custom_flag_callback
206
  )
207
 
208
- demo.queue()
209
  demo.launch()
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  import sentencepiece as spm
2
  import numpy as np
3
  import tensorflow as tf
4
  from tensorflow.keras.preprocessing.sequence import pad_sequences
5
  from valx import detect_profanity, detect_hate_speech
6
  import gradio as gr
 
 
 
7
 
8
  sp = spm.SentencePieceProcessor()
9
  sp.Load("dungen_dev_preview.model")
 
28
  seed_text += ' | '
29
 
30
  generated_text = seed_text
31
+ if generated_text != 'game name | ': # only generate if not the default prompt
32
  for _ in range(next_words):
33
  token_list = sp.encode_as_ids(generated_text)
34
  token_list = pad_sequences([token_list], maxlen=max_seq_len - 1, padding='pre')
 
56
  gr.Warning("Flagged potentially harmful output.")
57
  decoded = 'Flagged Output'
58
 
59
+ return decoded
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
60
 
61
  demo = gr.Interface(
62
  fn=generate_text,
63
  inputs=[
64
  gr.Textbox(label="Prompt", value="a female character name", max_lines=1),
65
  gr.Slider(1, 100, step=1, label='Next Words', value=30),
66
+ gr.Slider(0.1, 1, value=0.5, label='Temperature', info='Controls randomness of generation, higher values = more creative, lower values = more probalistic')
 
 
 
 
67
  ],
68
+ outputs=gr.Textbox(label="Generated Names"),
69
  title='Dungen Dev - Name Generator',
70
  description='A prompt-based name generator for game developers. Dungen Dev is an experimental model, and may produce outputs that are inappropriate, biased, or potentially harmful and inaccurate. Caution is advised.',
71
  examples=[
 
74
  ["an item name", 30, 0.5],
75
  ["a dark and mysterious forest name", 30, 0.5],
76
  ["an evil character name", 30, 0.5]
77
+ ]
 
 
 
78
  )
79
 
 
80
  demo.launch()