Artinity_bot / app.py
Carlosito16's picture
Update app.py
00f0cb3
import torch
import gradio as gr
from transformers import AutoTokenizer, pipeline,AutoModelWithLMHead
prob_model_name = 'deepset/roberta-base-squad2'
prob_pipeline = pipeline('question-answering', model=prob_model_name, tokenizer=prob_model_name)
answerer_model_name = "MaRiOrOsSi/t5-base-finetuned-question-answering"
tokenizer = AutoTokenizer.from_pretrained(answerer_model_name)
model = AutoModelWithLMHead.from_pretrained(answerer_model_name)
def retrieve_probability(ctx_input, q_input):
QA_input = {
'question': q_input,
'context': ctx_input
}
response = prob_pipeline(QA_input)
return response['score']
def generate_answer(ctx_input, q_input):
question = q_input
context = ctx_input
input = f"question: {question} context: {context}"
encoded_input = tokenizer([input],
return_tensors='pt',
max_length=512,
truncation=True)
output = model.generate(input_ids = encoded_input.input_ids,
attention_mask = encoded_input.attention_mask,
max_length=126,
num_beams=5,
)
# no_repeat_ngram_size=2) # this return only the tokens
output = tokenizer.decode(output[0], skip_special_tokens=True)
return output
def confidence_star(probability_score):
if probability_score >= 0.8:
stars= "⭐️" * 5
elif probability_score >= 0.6:
stars= "⭐️" * 4
elif probability_score >= 0.4:
stars= "⭐️" * 3
elif probability_score >= 0.2:
stars= "⭐️" * 2
else:
stars= "⭐️"
return stars
def generate_answer_with_confidence(ctx_input, q_input):
answer = generate_answer(ctx_input, q_input)
confidence= retrieve_probability(ctx_input, q_input)
stars = confidence_star(confidence)
complete_answer = f"""confidence: {stars}\n\n{answer}"""
return complete_answer
input_1 = gr.TextArea(label = 'Context')
input_2 = gr.Textbox(label = 'Question')
def chat(context, question, history = []):
message = question
response = generate_answer_with_confidence(context, question)
history.append((message, response))
return history, history
chatbot = gr.Chatbot().style(color_map=("green", "pink"))
examples = [
[r"""
William Shakespeare (April 1564 – 23 April 1616) was an English playwright,
poet and actor. He is widely regarded as the greatest writer in the English language and the world's pre-eminent dramatist.
He is often called England's national poet and the "Bard of Avon"
""", "When was Shakespeare born?"],
[r"""
William Shakespeare (April 1564 – 23 April 1616) was an English playwright,
poet and actor. He is widely regarded as the greatest writer in the English language and the world's pre-eminent dramatist.
He is often called England's national poet and the "Bard of Avon"
""", "Who is Shakespeare?"],
[r"""
William Shakespeare (April 1564 – 23 April 1616) was an English playwright,
poet and actor. He is widely regarded as the greatest writer in the English language and the world's pre-eminent dramatist.
He is often called England's national poet and the "Bard of Avon"
""", "How was Shakespeare referred as?"],
[r"""
William Shakespeare (April 1564 – 23 April 1616) was an English playwright,
poet and actor. He is widely regarded as the greatest writer in the English language and the world's pre-eminent dramatist.
He is often called England's national poet and the "Bard of Avon"
""", "Did Shakespeare go to the moon?"],
[r"""
Shakespeare produced most of his known works between 1589 and 1613.
His early plays were primarily comedies and histories and are regarded as some of the best works produced in these genres.
He then wrote mainly tragedies until 1608, among them Hamlet, Romeo and Juliet, Othello, King Lear, and Macbeth,
all considered to be among the finest works in the English language.
""", "What are the plays by Shakespeare?"],
[r"""
Shakespeare produced most of his known works between 1589 and 1613.
His early plays were primarily comedies and histories and are regarded as some of the best works produced in these genres.
He then wrote mainly tragedies until 1608, among them Hamlet, Romeo and Juliet, Othello, King Lear, and Macbeth,
all considered to be among the finest works in the English language.
""", "Did Shakespeare write the play 'Les Miserables'?"],
]
demo = gr.Interface(
fn = chat,
inputs= [input_1, input_2, 'state'],
outputs= [chatbot, 'state'],
examples = examples,
allow_flagging="never",
)
demo.launch()