Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
@@ -12,7 +12,7 @@ load_dotenv()
|
|
12 |
URL_APP_SCRIPT = os.getenv('URL_APP_SCRIPT')
|
13 |
|
14 |
CHAT_BOTS = {"Mixtral 8x7B v0.1" :"mistralai/Mixtral-8x7B-Instruct-v0.1"}
|
15 |
-
SYSTEM_PROMPT = ["Sei
|
16 |
options_old = {
|
17 |
'Email Genitori': {'systemRole': 'Tu sei un esperto scrittore di email. Attieniti allo stile che ti ho fornito nelle instruction e inserici il contenuto richiesto. Genera il testo di una mail a partire da questo contenuto, con lo stile ricevuto in precedenza: ',
|
18 |
'systemStyle': 'Utilizza lo stile fornito come esempio e parla in ITALIANO e firmati sempre come il Signor Preside',
|
@@ -28,7 +28,7 @@ options_old = {
|
|
28 |
'RAG': True}
|
29 |
}
|
30 |
|
31 |
-
st.set_page_config(page_title="
|
32 |
|
33 |
def init_state() :
|
34 |
if "messages" not in st.session_state:
|
@@ -71,12 +71,8 @@ def sidebar():
|
|
71 |
st.session_state.instruction = st.text_area("Istruzioni", st.session_state.instruction, help='Testo di riferimento sul quale il modello si basa per generare il testo')
|
72 |
|
73 |
st.session_state.rag_enabled = st.session_state.selected_option.get('tipo', '')=='RAG'
|
74 |
-
if st.session_state.selected_option_key == '
|
75 |
st.session_state.top_k = st.slider(label="Documenti da ricercare", min_value=1, max_value=20, value=4, disabled=not st.session_state.rag_enabled)
|
76 |
-
st.session_state.decreti_escludere = st.multiselect(
|
77 |
-
'Decreti da escludere',
|
78 |
-
['23.10.2 destinazione risorse residue pnrr DGR 1051-2023_Destinazione risorse PNRR Duale.pdf', '23.10.25 accompagnatoria Circolare Inail assicurazione.pdf', '23.10.26 circolare Inail assicurazione.pdf', '23.10.3 FAQ in attesa di avviso_.pdf', '23.11.2 avviso 24_24 Decreto 17106-2023 Approvazione Avviso IeFP 2023-2024.pdf', '23.5.15 decreto linee inclusione x enti locali.pdf', '23.6.21 Circolare+esplicativa+DGR+312-2023.pdf', '23.7.3 1° Decreto R.L. 23_24 .pdf', '23.9 Regolamento_prevenzione_bullismo_e_cyberbullismo__Centro_Bonsignori.pdf', '23.9.1 FAQ inizio anno formativo.pdf', '23.9.15 DECRETO VERIFICHE AMMINISTR 15-09-23.pdf', '23.9.4 modifica decreto GRS.pdf', '23.9.8 Budget 23_24.pdf', '24.10.2022 DECRETO loghi N.15176.pdf', 'ALLEGATO C_Scheda Supporti al funzionamento.pdf', 'ALLEGATO_ B_ Linee Guida.pdf', 'ALLEGATO_A1_PEI_INFANZIA.pdf', 'ALLEGATO_A2_PEI_PRIMARIA.pdf', 'ALLEGATO_A3_PEI_SEC_1_GRADO.pdf', 'ALLEGATO_A4_PEI_SEC_2_GRADO.pdf', 'ALLEGATO_C_1_Tabella_Fabbisogni.pdf', 'Brand+Guidelines+FSE+.pdf', 'Decreto 20797 del 22-12-2023_Aggiornamento budget PNRR.pdf', 'Decreto 20874 del 29-12-2023 Avviso IeFP PNRR 2023-2024_file unico.pdf'],
|
79 |
-
[])
|
80 |
st.markdown("---")
|
81 |
|
82 |
def model_settings() :
|
@@ -91,10 +87,10 @@ def sidebar():
|
|
91 |
st.markdown("""> **Creato da [Matteo Bergamelli] 🔗**""")
|
92 |
|
93 |
def header() :
|
94 |
-
st.title("
|
95 |
-
with st.expander("Cos'è
|
96 |
-
st.info("""
|
97 |
-
La sua funzione principale ruota attorno alla gestione di un ampio repository di
|
98 |
Questo approccio garantisce una risposta più precisa sulla base della richiesta degli utenti.""")
|
99 |
|
100 |
def chat_box() :
|
@@ -127,7 +123,7 @@ def formattaPrompt(prompt, systemRole, systemStyle, instruction):
|
|
127 |
def gen_augmented_prompt(prompt, top_k) :
|
128 |
links = ""
|
129 |
embedding = HuggingFaceEmbeddings(model_name="sentence-transformers/paraphrase-multilingual-MiniLM-L12-v2")
|
130 |
-
db = Chroma(persist_directory='./
|
131 |
docs = db.similarity_search(prompt, k=top_k)
|
132 |
|
133 |
links = []
|
@@ -150,7 +146,7 @@ def generate_chat_stream(prompt) :
|
|
150 |
links = []
|
151 |
prompt_originale = prompt
|
152 |
if st.session_state.rag_enabled :
|
153 |
-
with st.spinner("Ricerca nei
|
154 |
time.sleep(1)
|
155 |
st.session_state.instruction, links = gen_augmented_prompt(prompt=prompt_originale, top_k=st.session_state.top_k)
|
156 |
prompt = formattaPrompt(prompt, st.session_state.systemRole, st.session_state.systemStyle, st.session_state.instruction)
|
@@ -182,7 +178,7 @@ sidebar()
|
|
182 |
header()
|
183 |
chat_box()
|
184 |
|
185 |
-
if prompt := st.chat_input("Chatta con
|
186 |
st.chat_message("user").markdown(prompt)
|
187 |
st.session_state.messages.append({"role": "user", "content": prompt})
|
188 |
|
|
|
12 |
URL_APP_SCRIPT = os.getenv('URL_APP_SCRIPT')
|
13 |
|
14 |
CHAT_BOTS = {"Mixtral 8x7B v0.1" :"mistralai/Mixtral-8x7B-Instruct-v0.1"}
|
15 |
+
SYSTEM_PROMPT = ["Sei ZucchettiAI e mi aiuterai nelle mie richieste (Parla in ITALIANO)", "Esatto, sono ZucchettiAI. Di cosa hai bisogno?"]
|
16 |
options_old = {
|
17 |
'Email Genitori': {'systemRole': 'Tu sei un esperto scrittore di email. Attieniti allo stile che ti ho fornito nelle instruction e inserici il contenuto richiesto. Genera il testo di una mail a partire da questo contenuto, con lo stile ricevuto in precedenza: ',
|
18 |
'systemStyle': 'Utilizza lo stile fornito come esempio e parla in ITALIANO e firmati sempre come il Signor Preside',
|
|
|
28 |
'RAG': True}
|
29 |
}
|
30 |
|
31 |
+
st.set_page_config(page_title="ZucchettiAI", page_icon="🤖")
|
32 |
|
33 |
def init_state() :
|
34 |
if "messages" not in st.session_state:
|
|
|
71 |
st.session_state.instruction = st.text_area("Istruzioni", st.session_state.instruction, help='Testo di riferimento sul quale il modello si basa per generare il testo')
|
72 |
|
73 |
st.session_state.rag_enabled = st.session_state.selected_option.get('tipo', '')=='RAG'
|
74 |
+
if st.session_state.selected_option_key == 'Manuali':
|
75 |
st.session_state.top_k = st.slider(label="Documenti da ricercare", min_value=1, max_value=20, value=4, disabled=not st.session_state.rag_enabled)
|
|
|
|
|
|
|
|
|
76 |
st.markdown("---")
|
77 |
|
78 |
def model_settings() :
|
|
|
87 |
st.markdown("""> **Creato da [Matteo Bergamelli] 🔗**""")
|
88 |
|
89 |
def header() :
|
90 |
+
st.title("ZucchettiAI")
|
91 |
+
with st.expander("Cos'è ZucchettiAI?"):
|
92 |
+
st.info("""ZucchettiAI Chat è un ChatBot personalizzato basato su un database vettoriale, funziona secondo il principio della Generazione potenziata da Recupero (RAG).
|
93 |
+
La sua funzione principale ruota attorno alla gestione di un ampio repository di manuali di Zucchetti e fornisce agli utenti risposte in linea con le loro domande.
|
94 |
Questo approccio garantisce una risposta più precisa sulla base della richiesta degli utenti.""")
|
95 |
|
96 |
def chat_box() :
|
|
|
123 |
def gen_augmented_prompt(prompt, top_k) :
|
124 |
links = ""
|
125 |
embedding = HuggingFaceEmbeddings(model_name="sentence-transformers/paraphrase-multilingual-MiniLM-L12-v2")
|
126 |
+
db = Chroma(persist_directory='./DB_Manuali', embedding_function=embedding)
|
127 |
docs = db.similarity_search(prompt, k=top_k)
|
128 |
|
129 |
links = []
|
|
|
146 |
links = []
|
147 |
prompt_originale = prompt
|
148 |
if st.session_state.rag_enabled :
|
149 |
+
with st.spinner("Ricerca nei Manuali...."):
|
150 |
time.sleep(1)
|
151 |
st.session_state.instruction, links = gen_augmented_prompt(prompt=prompt_originale, top_k=st.session_state.top_k)
|
152 |
prompt = formattaPrompt(prompt, st.session_state.systemRole, st.session_state.systemStyle, st.session_state.instruction)
|
|
|
178 |
header()
|
179 |
chat_box()
|
180 |
|
181 |
+
if prompt := st.chat_input("Chatta con ZucchettiAI..."):
|
182 |
st.chat_message("user").markdown(prompt)
|
183 |
st.session_state.messages.append({"role": "user", "content": prompt})
|
184 |
|