LamaAl commited on
Commit
49f7b6e
·
1 Parent(s): ba33053

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +38 -44
app.py CHANGED
@@ -1,45 +1,39 @@
1
  import streamlit as st
2
- import transformers
3
- import gradio as gr
4
- import git
5
-
6
- #Load arabert preprocessor
7
- import git
8
- git.Git("arabert").clone("https://github.com/aub-mind/arabert")
9
- from arabert.preprocess import ArabertPreprocessor
10
- arabert_prep = ArabertPreprocessor(model_name="bert-base-arabert", keep_emojis=False)
11
-
12
-
13
- #Load Model
14
- from transformers import EncoderDecoderModel, AutoTokenizer
15
- tokenizer = AutoTokenizer.from_pretrained("tareknaous/bert2bert-empathetic-response-msa")
16
- model = EncoderDecoderModel.from_pretrained("tareknaous/bert2bert-empathetic-response-msa")
17
- model.eval()
18
-
19
- def generate_response(text, minimum_length, k, p, temperature):
20
- text_clean = arabert_prep.preprocess(text)
21
- inputs = tokenizer.encode_plus(text_clean,return_tensors='pt')
22
- outputs = model.generate(input_ids = inputs.input_ids,
23
- attention_mask = inputs.attention_mask,
24
- do_sample = True,
25
- min_length=minimum_length,
26
- top_k = k,
27
- top_p = p,
28
- temperature = temperature)
29
- preds = tokenizer.batch_decode(outputs)
30
- response = str(preds)
31
- response = response.replace("\'", '')
32
- response = response.replace("[[CLS]", '')
33
- response = response.replace("[SEP]]", '')
34
- response = str(arabert_prep.desegment(response))
35
- return response
36
-
37
- gr.Interface(fn=generate_response,
38
- inputs=[
39
- gr.inputs.Textbox(),
40
- gr.inputs.Slider(5, 20, step=1, label='Minimum Output Length'),
41
- gr.inputs.Slider(0, 1000, step=10, label='Top-K'),
42
- gr.inputs.Slider(0, 1, step=0.1, label='Top-P'),
43
- gr.inputs.Slider(0, 3, step=0.1, label='Temperature'),
44
- ],
45
- outputs="text").launch()
 
1
  import streamlit as st
2
+ from streamlit_chat import message as st_message
3
+ from transformers import BlenderbotTokenizer
4
+ from transformers import BlenderbotForConditionalGeneration
5
+
6
+
7
+ @st.experimental_singleton
8
+ def get_models():
9
+ # it may be necessary for other frameworks to cache the model
10
+ # seems pytorch keeps an internal state of the conversation
11
+ model_name = "facebook/blenderbot-400M-distill"
12
+ tokenizer = BlenderbotTokenizer.from_pretrained(model_name)
13
+ model = BlenderbotForConditionalGeneration.from_pretrained(model_name)
14
+ return tokenizer, model
15
+
16
+
17
+ if "history" not in st.session_state:
18
+ st.session_state.history = []
19
+
20
+ st.title("Hello Chatbot")
21
+
22
+
23
+ def generate_answer():
24
+ tokenizer, model = get_models()
25
+ user_message = st.session_state.input_text
26
+ inputs = tokenizer(st.session_state.input_text, return_tensors="pt")
27
+ result = model.generate(**inputs)
28
+ message_bot = tokenizer.decode(
29
+ result[0], skip_special_tokens=True
30
+ ) # .replace("<s>", "").replace("</s>", "")
31
+
32
+ st.session_state.history.append({"message": user_message, "is_user": True})
33
+ st.session_state.history.append({"message": message_bot, "is_user": False})
34
+
35
+
36
+ st.text_input("Talk to the bot", key="input_text", on_change=generate_answer)
37
+
38
+ for chat in st.session_state.history:
39
+ st_message(**chat) # unpacking