File size: 1,672 Bytes
0fdee06
8b57d58
43040b7
8b57d58
0fdee06
82cdd19
 
 
0fdee06
 
dcf6f0c
0fdee06
82cdd19
 
 
 
 
 
 
 
 
 
 
 
 
0fdee06
 
 
82cdd19
 
 
 
e5ef708
c39d485
 
e5ef708
 
c39d485
 
 
 
 
0fdee06
 
 
 
82cdd19
 
dcf6f0c
4115668
82cdd19
0f77545
82cdd19
 
 
dcf6f0c
e5ef708
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
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


if ("syslog" not in st.session_state) and ("logger" not in st.session_state):
    syslog = SysLogHandler(
        address=(st.secrets["logging_address"], int(st.secrets["logging_port"]))
    )
    logger = logging.getLogger()
    logger.setLevel(logging.INFO)
    logger.addHandler(syslog)
    st.session_state["syslog"] = syslog
    st.session_state["logger"] = logger

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

    engine = load_engine()

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()
        st.session_state["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!"
        )