FPll commited on
Commit
5f2f621
·
verified ·
1 Parent(s): 1655b3f

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +32 -1
app.py CHANGED
@@ -14,6 +14,10 @@ if not os.path.exists(musl_path):
14
  import gradio as gr
15
  from huggingface_hub import hf_hub_download
16
  from llama_cpp import Llama
 
 
 
 
17
 
18
  REPO_ID = "FPll/limba-mentor-llama3-gguf"
19
  FILENAME = "Meta-Llama-3.1-8B.Q4_K_M.gguf"
@@ -33,15 +37,41 @@ llm = Llama(
33
  verbose=False
34
  )
35
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
36
  def respond(message, history):
37
  # 1. IL SALVAVITA: Emette un segnale vuoto per impedire a Gradio di andare in crash (StopAsyncIteration)
38
  partial_message = ""
39
  yield partial_message
40
 
41
  try:
42
- # Estrazione sicura del testo nel caso Gradio invii un dizionario
43
  msg_text = message.get("text", "") if isinstance(message, dict) else str(message)
44
 
 
 
 
 
 
 
 
 
 
 
 
45
  system_instruction = (
46
  "Sei Limba 2.0, creato da Francesco Palladino. Sei un modello di linguaggio che parla sardo (LSC) e italiano.\n"
47
  "REGOLE DA RISPETTARE:\n"
@@ -49,6 +79,7 @@ def respond(message, history):
49
  "2. Se l'utente chiede una formula o se nella risposta scrivi formule, usa il formato LaTeX racchiuso tra doppi simboli di dollaro ($$) su una riga separata, esempio: $$E=mc^2$$.\n"
50
  "3. Se l'utente ti saluta (es. 'Ciao', 'Buongiorno'), rispondi esclusivamente con: 'Salude! So Limba 2.0, comente ti potzo agiudare?' e fermati.\n"
51
  "4. Se l'utente fa una richiesta su un argomento specifico, rispondi alla richiesta in modo completo e accurato.\n"
 
52
  )
53
 
54
  few_shot = (
 
14
  import gradio as gr
15
  from huggingface_hub import hf_hub_download
16
  from llama_cpp import Llama
17
+ import wikipedia
18
+
19
+ # 1. Imposta Wikipedia Ufficialmente in Sardo (LSC/Logudorese/Campidanese)
20
+ wikipedia.set_lang("sc")
21
 
22
  REPO_ID = "FPll/limba-mentor-llama3-gguf"
23
  FILENAME = "Meta-Llama-3.1-8B.Q4_K_M.gguf"
 
37
  verbose=False
38
  )
39
 
40
+ def cerca_su_wikipedia(query):
41
+ """Cerca su Wikipedia in sardo e restituisce un piccolo riassunto"""
42
+ try:
43
+ # Pulisce la domanda per trovare meglio l'argomento (es. da "Chi è Grazia Deledda?" a "Grazia Deledda")
44
+ query_pulita = query.replace("Chie est", "").replace("Chi è", "").replace("Cos'è", "").replace("Ite est", "").strip()
45
+
46
+ risultati = wikipedia.search(query_pulita, results=1)
47
+ if risultati:
48
+ titolo = risultati[0]
49
+ riassunto = wikipedia.summary(titolo, sentences=3) # Prende le prime 3 frasi
50
+ return f"[INFORMATZIONES CORTAS DAE WIKIPEDIA: {riassunto}]"
51
+ return ""
52
+ except Exception as e:
53
+ # Se la pagina non esiste o c'è un errore, proseguiamo senza
54
+ return ""
55
+
56
  def respond(message, history):
57
  # 1. IL SALVAVITA: Emette un segnale vuoto per impedire a Gradio di andare in crash (StopAsyncIteration)
58
  partial_message = ""
59
  yield partial_message
60
 
61
  try:
 
62
  msg_text = message.get("text", "") if isinstance(message, dict) else str(message)
63
 
64
+ # --- IL TRUCCO RAG (Retrieval-Augmented Generation) ---
65
+ contesto_wiki = cerca_su_wikipedia(msg_text)
66
+
67
+ if contesto_wiki:
68
+ # Se trova qualcosa, lo inietta di nascosto nella domanda
69
+ msg_arricchito = f"{contesto_wiki}\n\nRispondi alla seguente domanda basandoti ESCLUSIVAMENTE sulle informatziones de Wikipedia fornite qui sopra. Domanda: {msg_text}"
70
+ else:
71
+ # Se non trova niente, fa una domanda normale
72
+ msg_arricchito = msg_text
73
+ # ------------------------------------------------------
74
+
75
  system_instruction = (
76
  "Sei Limba 2.0, creato da Francesco Palladino. Sei un modello di linguaggio che parla sardo (LSC) e italiano.\n"
77
  "REGOLE DA RISPETTARE:\n"
 
79
  "2. Se l'utente chiede una formula o se nella risposta scrivi formule, usa il formato LaTeX racchiuso tra doppi simboli di dollaro ($$) su una riga separata, esempio: $$E=mc^2$$.\n"
80
  "3. Se l'utente ti saluta (es. 'Ciao', 'Buongiorno'), rispondi esclusivamente con: 'Salude! So Limba 2.0, comente ti potzo agiudare?' e fermati.\n"
81
  "4. Se l'utente fa una richiesta su un argomento specifico, rispondi alla richiesta in modo completo e accurato.\n"
82
+ "5. Se ricevi informazioni con il tag [INFORMATZIONES CORTAS DAE WIKIPEDIA], usale per rispondere senza inventare ASSOLUTAMENTE nulla. Traduci in sardo se necessario.\n"
83
  )
84
 
85
  few_shot = (