Update app.py
Browse files
app.py
CHANGED
@@ -28,36 +28,37 @@ def validate_sparql_query(query: str, rdf_file_path: str) -> bool:
|
|
28 |
|
29 |
# Prompt di sistema "stringente"
|
30 |
def create_system_message(rdf_context: str) -> str:
|
|
|
|
|
|
|
|
|
31 |
return f"""
|
32 |
Sei un assistente esperto nella generazione di query SPARQL basate su un'ontologia RDF.
|
33 |
Ecco un riassunto dell'ontologia su cui devi lavorare:
|
34 |
{rdf_context}
|
35 |
|
36 |
-
|
37 |
-
1.
|
38 |
-
|
39 |
-
|
40 |
-
|
41 |
-
|
42 |
-
|
43 |
-
|
44 |
-
|
45 |
-
|
46 |
-
|
47 |
-
|
48 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
49 |
"""
|
50 |
-
|
51 |
-
# Prompt di sistema "correttivo" per la seconda iterazione
|
52 |
-
def create_correction_message(rdf_context: str, errore: str) -> str:
|
53 |
-
return f"""
|
54 |
-
La query che hai fornito è risultata NON valida:
|
55 |
-
{errore}
|
56 |
-
|
57 |
-
Ricorda le regole tassative e ritenta la generazione di UNA SOLA query SPARQL valida in una riga.
|
58 |
-
Riproponila corretta, sempre rispettando il prefisso base: e la sintassi di SELECT/ASK.
|
59 |
-
"""
|
60 |
-
|
61 |
# Funzione per chiamare il modello su Hugging Face
|
62 |
async def call_model(messages, temperature=0.7, max_tokens=2048):
|
63 |
try:
|
|
|
28 |
|
29 |
# Prompt di sistema "stringente"
|
30 |
def create_system_message(rdf_context: str) -> str:
|
31 |
+
"""
|
32 |
+
Prompt di sistema estremamente rigido, che forza il modello
|
33 |
+
a usare solo il prefisso definito e a generare la query in un'unica riga.
|
34 |
+
"""
|
35 |
return f"""
|
36 |
Sei un assistente esperto nella generazione di query SPARQL basate su un'ontologia RDF.
|
37 |
Ecco un riassunto dell'ontologia su cui devi lavorare:
|
38 |
{rdf_context}
|
39 |
|
40 |
+
DI SEGUITO LE REGOLE TASSATIVE:
|
41 |
+
1. DEVI usare ESCLUSIVAMENTE questo prefisso di base (e NON modificarlo in nessun modo):
|
42 |
+
PREFIX base: <http://www.semanticweb.org/lucreziamosca/ontologies/2024/11/untitled-ontology-39/>
|
43 |
+
2. La query deve stare in UNA SOLA RIGA, senza andare a capo.
|
44 |
+
3. La query deve INIZIARE con:
|
45 |
+
PREFIX base: <http://www.semanticweb.org/lucreziamosca/ontologies/2024/11/untitled-ontology-39/> SELECT
|
46 |
+
oppure
|
47 |
+
PREFIX base: <http://www.semanticweb.org/lucreziamosca/ontologies/2024/11/untitled-ontology-39/> ASK
|
48 |
+
4. Se devi indicare una classe, usa: ?qualcosa a base:NomeClasse .
|
49 |
+
5. Se devi indicare una proprietà, usa: ?s base:NomeProprieta ?o .
|
50 |
+
6. NON generare alcun altro prefisso.
|
51 |
+
7. NON utilizzare URI lunghe senza < > e NON inventare prefissi o risorse inesistenti.
|
52 |
+
8. Se non puoi rispondere con una query SPARQL valida secondo questi criteri, scrivi:
|
53 |
+
"Non posso generare una query SPARQL per questa richiesta."
|
54 |
+
|
55 |
+
Esempio di query corretta (fittizia) in una sola riga:
|
56 |
+
PREFIX base: <http://www.semanticweb.org/lucreziamosca/ontologies/2024/11/untitled-ontology-39/> SELECT ?stanza WHERE { ?stanza a base:Stanza . } LIMIT 10
|
57 |
+
|
58 |
+
RISPONDI ESCLUSIVAMENTE CON LA QUERY O IL MESSAGGIO DI IMPOSSIBILITA'.
|
59 |
+
NON SCRIVERE NESSUN COMMENTO AGGIUNTIVO.
|
60 |
"""
|
61 |
+
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
62 |
# Funzione per chiamare il modello su Hugging Face
|
63 |
async def call_model(messages, temperature=0.7, max_tokens=2048):
|
64 |
try:
|