AshenClock commited on
Commit
34eaf0b
·
verified ·
1 Parent(s): f74ca5d

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +24 -4
app.py CHANGED
@@ -5,6 +5,10 @@ from pydantic import BaseModel
5
  from fastapi import FastAPI, HTTPException
6
  from huggingface_hub import InferenceClient
7
  from typing import Optional
 
 
 
 
8
 
9
  # Configurazione logging
10
  logging.basicConfig(
@@ -91,11 +95,11 @@ def create_system_message(rdf_context: str) -> str:
91
  Crea il messaggio di sistema per il modello di linguaggio naturale.
92
  """
93
  return f"""
94
- Sei un'assistente esperta nella generazione di query SPARQL basate su un'ontologia RDF, nell'interpretazione dei risultati delle query SPARQL in risposte naturali, e nel fare chatting minimale con i visitatori. In base alla domanda dell'utente, devi decidere se:
95
 
96
  1. Generare una query SPARQL per interrogare la base di conoscenza.
97
  2. Fornire una risposta naturale basata sui risultati di una query SPARQL.
98
- 3. Rispondere con una risposta di chat minimale.
99
 
100
  Ecco un riassunto dell'ontologia su cui devi lavorare:
101
  {rdf_context}
@@ -103,7 +107,7 @@ Ecco un riassunto dell'ontologia su cui devi lavorare:
103
  Regole TASSATIVE:
104
  1. Se la domanda richiede una query SPARQL, restituisci la query SPARQL come testo semplice.
105
  2. Se la domanda richiede l'interpretazione di risultati SPARQL, restituisci una risposta naturale basata sui risultati.
106
- 3. Se la domanda è una chat minimale, restituisci una risposta di chat.
107
  4. DEVI usare ESCLUSIVAMENTE questo prefisso di base (e NON modificarlo in nessun modo):
108
  PREFIX base: <http://www.semanticweb.org/lucreziamosca/ontologies/2024/11/untitled-ontology-39/>
109
  5. NON generare alcun altro prefisso o URI inventato.
@@ -123,10 +127,18 @@ Esempi:
123
  Risposta:
124
  Ciao! Benvenuto al nostro museo. Come posso aiutarti oggi?
125
 
 
 
 
 
126
  - Domanda: "Qual è la tua opinione sull'arte moderna?"
127
  Risposta:
128
  L'arte moderna è un'espressione affascinante e varia che riflette le dinamiche sociali e culturali contemporanee.
129
 
 
 
 
 
130
  - Domanda: "Come funziona questa installazione?"
131
  Risposta:
132
  Questa installazione interattiva ti permette di esplorare diverse opere d'arte attraverso interazioni digitali. Basta avvicinarti e seguire le istruzioni sullo schermo.
@@ -182,7 +194,7 @@ Mi hai fornito i seguenti risultati di una query SPARQL:
182
 
183
  Per favore, interpreta questi risultati e fornisci una risposta naturale ed enfatica come farebbe una guida museale femminile.
184
  """
185
-
186
  messages = [
187
  {"role": "system", "content": interpret_prompt},
188
  {"role": "user", "content": ""}
@@ -208,6 +220,14 @@ async def generate_response(request: QueryRequest):
208
  user_msg = request.message
209
  logger.info(f"Ricevuta richiesta: {user_msg}")
210
 
 
 
 
 
 
 
 
 
211
  # 1) Generazione della risposta (SPARQL, INTERPRET o CHAT)
212
  system_msg = create_system_message(rdf_context)
213
  messages = [
 
5
  from fastapi import FastAPI, HTTPException
6
  from huggingface_hub import InferenceClient
7
  from typing import Optional
8
+ from langdetect import detect, DetectorFactory
9
+
10
+ # Impostazione per risultati coerenti della rilevazione
11
+ DetectorFactory.seed = 0
12
 
13
  # Configurazione logging
14
  logging.basicConfig(
 
95
  Crea il messaggio di sistema per il modello di linguaggio naturale.
96
  """
97
  return f"""
98
+ Sei un'assistente esperta nella generazione di query SPARQL basate su un'ontologia RDF, nell'interpretazione dei risultati delle query SPARQL in risposte naturali, e nel fare chatting minimale con i visitatori in diverse lingue (ad esempio, italiano, francese, inglese). In base alla domanda dell'utente, devi decidere se:
99
 
100
  1. Generare una query SPARQL per interrogare la base di conoscenza.
101
  2. Fornire una risposta naturale basata sui risultati di una query SPARQL.
102
+ 3. Rispondere con una risposta di chat minimale nella stessa lingua dell'utente.
103
 
104
  Ecco un riassunto dell'ontologia su cui devi lavorare:
105
  {rdf_context}
 
107
  Regole TASSATIVE:
108
  1. Se la domanda richiede una query SPARQL, restituisci la query SPARQL come testo semplice.
109
  2. Se la domanda richiede l'interpretazione di risultati SPARQL, restituisci una risposta naturale basata sui risultati.
110
+ 3. Se la domanda è una chat minimale, restituisci una risposta di chat nella stessa lingua dell'utente.
111
  4. DEVI usare ESCLUSIVAMENTE questo prefisso di base (e NON modificarlo in nessun modo):
112
  PREFIX base: <http://www.semanticweb.org/lucreziamosca/ontologies/2024/11/untitled-ontology-39/>
113
  5. NON generare alcun altro prefisso o URI inventato.
 
127
  Risposta:
128
  Ciao! Benvenuto al nostro museo. Come posso aiutarti oggi?
129
 
130
+ - Domanda: "Bonjour! Comment ça va?"
131
+ Risposta:
132
+ Bonjour! Bienvenue dans notre musée. Comment puis-je vous aider aujourd'hui?
133
+
134
  - Domanda: "Qual è la tua opinione sull'arte moderna?"
135
  Risposta:
136
  L'arte moderna è un'espressione affascinante e varia che riflette le dinamiche sociali e culturali contemporanee.
137
 
138
+ - Domanda: "How does this installation work?"
139
+ Risposta:
140
+ This interactive installation allows you to explore various artworks through digital interactions. Simply approach and follow the on-screen instructions.
141
+
142
  - Domanda: "Come funziona questa installazione?"
143
  Risposta:
144
  Questa installazione interattiva ti permette di esplorare diverse opere d'arte attraverso interazioni digitali. Basta avvicinarti e seguire le istruzioni sullo schermo.
 
194
 
195
  Per favore, interpreta questi risultati e fornisci una risposta naturale ed enfatica come farebbe una guida museale femminile.
196
  """
197
+
198
  messages = [
199
  {"role": "system", "content": interpret_prompt},
200
  {"role": "user", "content": ""}
 
220
  user_msg = request.message
221
  logger.info(f"Ricevuta richiesta: {user_msg}")
222
 
223
+ # Rilevazione della lingua dell'utente
224
+ try:
225
+ language = detect(user_msg)
226
+ logger.info(f"Lingua rilevata: {language}")
227
+ except Exception as e:
228
+ logger.error(f"Errore durante la rilevazione della lingua: {e}")
229
+ language = "it" # Default a italiano
230
+
231
  # 1) Generazione della risposta (SPARQL, INTERPRET o CHAT)
232
  system_msg = create_system_message(rdf_context)
233
  messages = [