AshenClock commited on
Commit
a264007
·
verified ·
1 Parent(s): ff8bfcc

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +12 -10
app.py CHANGED
@@ -17,7 +17,7 @@ load_dotenv()
17
 
18
  # Configura il logging
19
  logging.basicConfig(
20
- level=logging.DEBUG,
21
  format="%(asctime)s - %(levelname)s - %(message)s",
22
  handlers=[logging.FileHandler("app.log"), logging.StreamHandler()]
23
  )
@@ -35,7 +35,7 @@ client = InferenceClient(token=API_KEY)
35
  # Definisci i percorsi dei file
36
  BASE_DIR = os.path.dirname(os.path.abspath(__file__))
37
  RDF_FILE = os.path.join(BASE_DIR, "Ontologia.rdf")
38
- HF_MODEL = "Qwen/Qwen2.5-72B-Instruct"
39
 
40
  MAX_CLASSES = 30
41
  MAX_PROPERTIES = 30
@@ -171,7 +171,7 @@ def prepare_retrieval():
171
  else:
172
  logger.info(f"File RDF trovato: {RDF_FILE}")
173
 
174
- # Verifica se documents.json esiste, altrimenti generalo
175
  if not os.path.exists(DOCUMENTS_FILE):
176
  logger.info(f"File {DOCUMENTS_FILE} non trovato. Estrazione dell'ontologia.")
177
  try:
@@ -182,7 +182,7 @@ def prepare_retrieval():
182
  else:
183
  logger.info(f"File {DOCUMENTS_FILE} trovato.")
184
 
185
- # Verifica se faiss.index esiste, altrimenti crealo
186
  if not os.path.exists(FAISS_INDEX_FILE):
187
  logger.info(f"File {FAISS_INDEX_FILE} non trovato. Creazione dell'indice FAISS.")
188
  try:
@@ -307,11 +307,11 @@ REGOLE STRINGENTI:
307
  4) Se la domanda è generica (tipo 'Ciao, come stai?'), rispondi breve.
308
  5) Se trovi risultati, la risposta finale deve essere la query SPARQL (una sola riga).
309
  6) Se non trovi nulla, rispondi con 'Nessuna info.'
310
- 7) Non multiline. Esempio: PREFIX base: <...> SELECT ?x WHERE {{ ... }}.
311
 
312
  Esempio:
313
  Utente: Chi ha creato l'opera 'Amore e Psiche'?
314
- Risposta: PREFIX base: <http://www.semanticweb.org/lucreziamosca/ontologies/progettoMuseo#> SELECT ?creatore WHERE {{ ?opera base:hasName "Amore e Psiche" . ?opera base:creatoDa ?creatore . }}
315
 
316
  FINE REGOLE
317
  """
@@ -324,7 +324,7 @@ Ho ottenuto questi risultati SPARQL:
324
  Ora fornisci una breve spiegazione museale (massimo ~10 righe), senza inventare oltre i risultati.
325
  """
326
 
327
- async def call_hf_model(prompt: str, temperature=0.5, max_tokens=1024) -> str:
328
  """Chiama il modello Hugging Face e gestisce la risposta."""
329
  logger.debug("Chiamo HF con il seguente prompt:")
330
  content_preview = (prompt[:300] + '...') if len(prompt) > 300 else prompt
@@ -332,15 +332,17 @@ async def call_hf_model(prompt: str, temperature=0.5, max_tokens=1024) -> str:
332
  try:
333
  resp = client.text_generation(
334
  model=HF_MODEL,
335
- inputs=prompt,
336
  parameters={
337
  "temperature": temperature,
338
  "max_new_tokens": max_tokens,
339
  "top_p": 0.9
340
  }
341
  )
342
- # La struttura della risposta dipende dall'API; verifica se "generated_text" è il campo corretto
343
- raw = resp["generated_text"]
 
 
344
  # Forza la risposta su una singola linea se multilinea
345
  single_line = " ".join(raw.splitlines())
346
  logger.debug(f"Risposta HF single-line: {single_line}")
 
17
 
18
  # Configura il logging
19
  logging.basicConfig(
20
+ level=logging.INFO, # Riduci il livello di logging per migliorare le prestazioni
21
  format="%(asctime)s - %(levelname)s - %(message)s",
22
  handlers=[logging.FileHandler("app.log"), logging.StreamHandler()]
23
  )
 
35
  # Definisci i percorsi dei file
36
  BASE_DIR = os.path.dirname(os.path.abspath(__file__))
37
  RDF_FILE = os.path.join(BASE_DIR, "Ontologia.rdf")
38
+ HF_MODEL = "Qwen/Qwen2.5-72B-Instruct" # Assicurati che il modello sia supportato
39
 
40
  MAX_CLASSES = 30
41
  MAX_PROPERTIES = 30
 
171
  else:
172
  logger.info(f"File RDF trovato: {RDF_FILE}")
173
 
174
+ # Verifica se documents.json esiste, altrimenti generarlo
175
  if not os.path.exists(DOCUMENTS_FILE):
176
  logger.info(f"File {DOCUMENTS_FILE} non trovato. Estrazione dell'ontologia.")
177
  try:
 
182
  else:
183
  logger.info(f"File {DOCUMENTS_FILE} trovato.")
184
 
185
+ # Verifica se faiss.index esiste, altrimenti crearlo
186
  if not os.path.exists(FAISS_INDEX_FILE):
187
  logger.info(f"File {FAISS_INDEX_FILE} non trovato. Creazione dell'indice FAISS.")
188
  try:
 
307
  4) Se la domanda è generica (tipo 'Ciao, come stai?'), rispondi breve.
308
  5) Se trovi risultati, la risposta finale deve essere la query SPARQL (una sola riga).
309
  6) Se non trovi nulla, rispondi con 'Nessuna info.'
310
+ 7) Non multiline. Esempio: PREFIX base: <...> SELECT ?x WHERE { ... }.
311
 
312
  Esempio:
313
  Utente: Chi ha creato l'opera 'Amore e Psiche'?
314
+ Risposta: PREFIX base: <http://www.semanticweb.org/lucreziamosca/ontologies/progettoMuseo#> SELECT ?creatore WHERE { ?opera base:hasName "Amore e Psiche" . ?opera base:creatoDa ?creatore . }
315
 
316
  FINE REGOLE
317
  """
 
324
  Ora fornisci una breve spiegazione museale (massimo ~10 righe), senza inventare oltre i risultati.
325
  """
326
 
327
+ async def call_hf_model(prompt: str, temperature: float = 0.5, max_tokens: int = 1024) -> str:
328
  """Chiama il modello Hugging Face e gestisce la risposta."""
329
  logger.debug("Chiamo HF con il seguente prompt:")
330
  content_preview = (prompt[:300] + '...') if len(prompt) > 300 else prompt
 
332
  try:
333
  resp = client.text_generation(
334
  model=HF_MODEL,
335
+ prompt, # Passa il prompt come argomento posizionale
336
  parameters={
337
  "temperature": temperature,
338
  "max_new_tokens": max_tokens,
339
  "top_p": 0.9
340
  }
341
  )
342
+ # La struttura della risposta potrebbe variare; verifica il campo corretto
343
+ raw = resp.get("generated_text", "")
344
+ if not raw:
345
+ raise ValueError("Nessun testo generato dal modello.")
346
  # Forza la risposta su una singola linea se multilinea
347
  single_line = " ".join(raw.splitlines())
348
  logger.debug(f"Risposta HF single-line: {single_line}")