Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
|
@@ -15,45 +15,55 @@ model_path = hf_hub_download(
|
|
| 15 |
)
|
| 16 |
|
| 17 |
# 2. Inizializzazione
|
| 18 |
-
llm = Llama(model_path=model_path, n_ctx=
|
| 19 |
|
| 20 |
def respond(message, history):
|
| 21 |
-
# --- SYSTEM PROMPT
|
| 22 |
system_message = (
|
| 23 |
-
"
|
| 24 |
-
"
|
| 25 |
-
"
|
| 26 |
-
"
|
| 27 |
-
"
|
| 28 |
-
"-
|
| 29 |
-
"
|
| 30 |
-
"-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 31 |
)
|
| 32 |
|
| 33 |
-
# Costruzione del prompt
|
| 34 |
prompt = f"<|begin_of_text|><|start_header_id|>system<|end_header_id|>\n\n{system_message}<|eot_id|>"
|
| 35 |
for user_msg, assistant_msg in history:
|
| 36 |
prompt += f"<|start_header_id|>user<|end_header_id|>\n\n{user_msg}<|eot_id|><|start_header_id|>assistant<|end_header_id|>\n\n{assistant_msg}<|eot_id|>"
|
| 37 |
prompt += f"<|start_header_id|>user<|end_header_id|>\n\n{message}<|eot_id|><|start_header_id|>assistant<|end_header_id|>\n\n"
|
| 38 |
|
| 39 |
-
# Generazione
|
| 40 |
response = llm(
|
| 41 |
prompt,
|
| 42 |
-
max_tokens=
|
| 43 |
-
temperature=0.1,
|
| 44 |
-
repeat_penalty=1.2,
|
|
|
|
| 45 |
stop=["<|eot_id|>", "<|begin_of_text|>"]
|
| 46 |
)
|
| 47 |
|
| 48 |
-
# Restituisce il testo pulito tutto in una volta
|
| 49 |
return response["choices"][0]["text"].strip()
|
| 50 |
|
| 51 |
# 3. Interfaccia Chat
|
| 52 |
demo = gr.ChatInterface(
|
| 53 |
respond,
|
| 54 |
title="🚀 Limba 1.0 - Progetto Margherita",
|
| 55 |
-
description="Liceo Scientifico 'E. Fermi' - Nuoro. Assistente
|
| 56 |
-
examples=["Chie ti hat creadu?", "
|
| 57 |
)
|
| 58 |
|
| 59 |
if __name__ == "__main__":
|
|
|
|
| 15 |
)
|
| 16 |
|
| 17 |
# 2. Inizializzazione
|
| 18 |
+
llm = Llama(model_path=model_path, n_ctx=2048, n_threads=8)
|
| 19 |
|
| 20 |
def respond(message, history):
|
| 21 |
+
# --- SYSTEM PROMPT AUGMENTED (Versione Istituzionale e Scientifica) ---
|
| 22 |
system_message = (
|
| 23 |
+
"Sei Limba 1.0, l'Intelligenza Artificiale ufficiale del Liceo Scientifico 'Enrico Fermi' di Nuoro.\n\n"
|
| 24 |
+
"### IDENTITÀ E CREAZIONE\n"
|
| 25 |
+
"- Sei stato ideato e creato da FRANCESCO PALLADINO insieme agli STUDENTI del Liceo 'E. Fermi'.\n"
|
| 26 |
+
"- Gli studenti hanno partecipato attivamente alla creazione del codice e del dataset.\n"
|
| 27 |
+
"- Partner tecnologici e collaboratori: FORMATICA e LARISO.\n"
|
| 28 |
+
"- Finanziamento: Il Progetto Margherita è finanziato dal FONDO PER LA REPUBBLICA DIGITALE e dalla REGIONE AUTONOMA DELLA SARDEGNA.\n\n"
|
| 29 |
+
"### IL NOME 'MARGHERITA'\n"
|
| 30 |
+
"- Il progetto è un tributo alla memoria di Margherita Hack (1922-2013).\n"
|
| 31 |
+
"- Margherita Hack NON è una collaboratrice del progetto; è una figura storica a cui il progetto è dedicato.\n"
|
| 32 |
+
"- Non inventare mai collaborazioni attive con persone defunte.\n\n"
|
| 33 |
+
"### REGOLE DI RISPOSTA SCIENTIFICA (STEM)\n"
|
| 34 |
+
"- Quando l'utente chiede spiegazioni di FISICA, MATEMATICA, BIOLOGIA o CHIMICA, rispondi con rigore accademico.\n"
|
| 35 |
+
"- Fornisci spiegazioni complete, usando termini tecnici corretti (es. per la fotosintesi parla di fase luminosa, ciclo di Calvin, cloroplasti).\n"
|
| 36 |
+
"- In queste risposte NON citare Limba, il Progetto Margherita o i tuoi creatori. Concentrati esclusivamente sui dati scientifici.\n\n"
|
| 37 |
+
"### REGOLE LINGUISTICHE E COMPORTAMENTALI\n"
|
| 38 |
+
"- RISPONDI SOLO IN ITALIANO O SARDO. L'uso dell'inglese è severamente vietato.\n"
|
| 39 |
+
"- Evita ripetizioni inutili e frasi generiche come 'mi sto impegnando'. Sii diretto e concreto.\n"
|
| 40 |
+
"- Se l'utente ti chiede 'chi sei', rispondi citando Francesco Palladino, gli studenti del Fermi, Formatica, Lariso e i finanziatori istituzionali."
|
| 41 |
)
|
| 42 |
|
| 43 |
+
# Costruzione del prompt secondo lo standard Llama 3.1
|
| 44 |
prompt = f"<|begin_of_text|><|start_header_id|>system<|end_header_id|>\n\n{system_message}<|eot_id|>"
|
| 45 |
for user_msg, assistant_msg in history:
|
| 46 |
prompt += f"<|start_header_id|>user<|end_header_id|>\n\n{user_msg}<|eot_id|><|start_header_id|>assistant<|end_header_id|>\n\n{assistant_msg}<|eot_id|>"
|
| 47 |
prompt += f"<|start_header_id|>user<|end_header_id|>\n\n{message}<|eot_id|><|start_header_id|>assistant<|end_header_id|>\n\n"
|
| 48 |
|
| 49 |
+
# Generazione con parametri di controllo
|
| 50 |
response = llm(
|
| 51 |
prompt,
|
| 52 |
+
max_tokens=800, # Risposte più lunghe per la scienza
|
| 53 |
+
temperature=0.1, # Massima precisione
|
| 54 |
+
repeat_penalty=1.2, # Evita loop di parole
|
| 55 |
+
top_p=0.9,
|
| 56 |
stop=["<|eot_id|>", "<|begin_of_text|>"]
|
| 57 |
)
|
| 58 |
|
|
|
|
| 59 |
return response["choices"][0]["text"].strip()
|
| 60 |
|
| 61 |
# 3. Interfaccia Chat
|
| 62 |
demo = gr.ChatInterface(
|
| 63 |
respond,
|
| 64 |
title="🚀 Limba 1.0 - Progetto Margherita",
|
| 65 |
+
description="Liceo Scientifico 'E. Fermi' - Nuoro. Assistente creato da Francesco Palladino e gli studenti.",
|
| 66 |
+
examples=["Chie ti hat creadu?", "Chi finanzia il progetto?", "Spiegami la fotosintesi clorofilliana"],
|
| 67 |
)
|
| 68 |
|
| 69 |
if __name__ == "__main__":
|