Update app.py
Browse files
app.py
CHANGED
@@ -1,42 +1,45 @@
|
|
1 |
import gradio as gr
|
2 |
from transformers import pipeline
|
|
|
3 |
|
4 |
-
|
5 |
-
QA_modelo = pipeline('question-answering', model='deepset/roberta-base-squad2')
|
|
|
|
|
|
|
6 |
|
7 |
-
|
8 |
-
|
9 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
10 |
|
11 |
-
# Dicionário com perguntas e contextos
|
12 |
-
contextos = {
|
13 |
-
"How do I create an account?": "You can create an account by clicking on the 'Sign Up' button on our homepage...",
|
14 |
-
"Which payment methods do you accept?": "We accept a wide range of payment methods including Visa, MasterCard...",
|
15 |
-
"How can I track my order?": "Once your order has shipped, you will receive an email with a tracking number...",
|
16 |
-
"Do you offer international shipping?": "Yes, we offer international shipping to most countries...",
|
17 |
-
"How long does delivery take?": "For standard shipping, deliveries typically take between 3 to 5 business days...",
|
18 |
-
"What is your return policy?": "Our return policy allows you to return products within 30 days of receiving them...",
|
19 |
-
"Can I change or cancel my order after it's been placed?": "You can change or cancel your order within 24 hours...",
|
20 |
-
"What should I do if I receive a damaged item?": "If you receive a damaged item, please contact our customer service...",
|
21 |
-
"How do I reset my password?": "If you've forgotten your password, go to the login page and click on 'Forgot Password'..."
|
22 |
-
}
|
23 |
-
|
24 |
-
# Função para responder perguntas da FAQ
|
25 |
def respondendo_faq(pergunta):
|
26 |
-
contexto = contextos.get(pergunta)
|
27 |
if not contexto:
|
28 |
-
return "
|
|
|
29 |
resultado = obter_resposta(pergunta, contexto)
|
30 |
return resultado['answer']
|
31 |
|
32 |
-
# Interface Gradio
|
33 |
app = gr.Interface(
|
34 |
fn=respondendo_faq,
|
35 |
inputs=gr.Dropdown(choices=list(contextos.keys()), label="Select your question"),
|
36 |
outputs=gr.Textbox(label="Answer"),
|
37 |
title='E-commerce FAQ',
|
38 |
-
description='Select a question to get an answer from our FAQ.'
|
|
|
|
|
39 |
)
|
40 |
|
41 |
if __name__ == "__main__":
|
42 |
-
app.launch(share=True)
|
|
|
1 |
import gradio as gr
|
2 |
from transformers import pipeline
|
3 |
+
import time
|
4 |
|
5 |
+
try:
|
6 |
+
QA_modelo = pipeline('question-answering', model='deepset/roberta-base-squad2')
|
7 |
+
except Exception as e:
|
8 |
+
print(f"Error loading model: {e}")
|
9 |
+
exit(1)
|
10 |
|
11 |
+
def obter_resposta(pergunta, contexto, max_context_length=512):
|
12 |
+
try:
|
13 |
+
if len(contexto) > max_context_length:
|
14 |
+
contexto = contexto[:max_context_length]
|
15 |
+
|
16 |
+
start_time = time.time()
|
17 |
+
resultado = QA_modelo(question=pergunta, context=contexto)
|
18 |
+
|
19 |
+
if time.time() - start_time > 30:
|
20 |
+
return {"answer": "Response timeout. Please try again."}
|
21 |
+
|
22 |
+
return resultado
|
23 |
+
except Exception as e:
|
24 |
+
return {"answer": f"Error processing question: {e}"}
|
25 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
26 |
def respondendo_faq(pergunta):
|
27 |
+
contexto = contextos.get(pergunta)
|
28 |
if not contexto:
|
29 |
+
return "Question not found. Please select a valid question."
|
30 |
+
|
31 |
resultado = obter_resposta(pergunta, contexto)
|
32 |
return resultado['answer']
|
33 |
|
|
|
34 |
app = gr.Interface(
|
35 |
fn=respondendo_faq,
|
36 |
inputs=gr.Dropdown(choices=list(contextos.keys()), label="Select your question"),
|
37 |
outputs=gr.Textbox(label="Answer"),
|
38 |
title='E-commerce FAQ',
|
39 |
+
description='Select a question to get an answer from our FAQ.',
|
40 |
+
examples=list(contextos.keys())[:3],
|
41 |
+
theme="huggingface"
|
42 |
)
|
43 |
|
44 |
if __name__ == "__main__":
|
45 |
+
app.launch(share=True)
|