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)
         
     |