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:
|