File size: 1,627 Bytes
0fdee06
8b57d58
43040b7
8b57d58
0fdee06
82cdd19
 
 
0fdee06
 
dcf6f0c
0fdee06
82cdd19
 
 
 
 
 
 
 
 
 
 
 
 
0fdee06
 
 
82cdd19
 
 
 
e51bd22
1823594
bca9ece
 
43040b7
 
 
1823594
 
43040b7
0fdee06
 
 
 
82cdd19
 
bca9ece
dcf6f0c
4115668
82cdd19
0f77545
82cdd19
 
 
dcf6f0c
e51bd22
dcf6f0c
0fdee06
82cdd19
 
0fdee06
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
import json
import logging
from logging import Logger
from logging.handlers import SysLogHandler

import streamlit as st
import tokenizers
import torch
from transformers import Pipeline, pipeline

from utils import get_answer, get_context


@st.cache(
    hash_funcs={
        torch.nn.parameter.Parameter: lambda _: None,
        tokenizers.Tokenizer: lambda _: None,
        tokenizers.AddedToken: lambda _: None,
    },
    allow_output_mutation=True,
    show_spinner=False,
)
def load_engine() -> Pipeline:

    nlp_qa = pipeline(
        "question-answering",
        model="mrm8488/bert-italian-finedtuned-squadv1-it-alfa",
        tokenizer="mrm8488/bert-italian-finedtuned-squadv1-it-alfa",
    )

    return nlp_qa

syslog = SysLogHandler(address=(st.secrets["logging_address"], int(st.secrets["logging_port"])))

@st.cache(hash_funcs={SysLogHandler: id})
def load_logger(syslog: SysLogHandler) -> Logger: 
    logger = logging.getLogger()
    logger.addHandler(syslog)
    logger.setLevel(logging.INFO)
    
    return logger


with st.spinner(
    text="Sto preparando il necessario per rispondere alle tue domande personali..."
):

    engine = load_engine()
    logger = load_logger(syslog)

st.title("Le risposte alle tue domande personali")

input = st.text_input("Scrivi una domanda in italiano e comparirà la risposta!")

if input:
    try:
        context = get_context()
        logger.info(input) 
        answer = get_answer(input, context, engine)
        st.subheader(answer)
    except:

        st.error(
            "Qualcosa é andato storto. Prova di nuovo con un'altra domanda magari!"
        )