AshenClock commited on
Commit
d72ce3d
·
verified ·
1 Parent(s): 4388f57

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +29 -17
app.py CHANGED
@@ -7,6 +7,11 @@ import rdflib
7
  from rdflib.plugins.sparql.parser import parseQuery
8
  from huggingface_hub import InferenceClient
9
  import re
 
 
 
 
 
10
  # ---------------------------------------------------------------------------
11
  # CONFIGURAZIONE LOGGING
12
  # ---------------------------------------------------------------------------
@@ -23,12 +28,20 @@ logger = logging.getLogger(__name__)
23
  # Nota: HF_API_KEY deve essere impostata a una chiave valida di Hugging Face.
24
  HF_API_KEY = os.getenv("HF_API_KEY")
25
  if not HF_API_KEY:
26
- # Se la chiave API non è impostata, solleva un errore
27
  logger.error("HF_API_KEY non impostata.")
28
  raise EnvironmentError("HF_API_KEY non impostata.")
29
 
 
 
 
 
 
 
 
30
  # Nome del modello Hugging Face per generare query SPARQL e risposte finali
31
- HF_MODEL = "meta-llama/Llama-3.3-70B-Instruct"
 
 
32
 
33
  # Nome del modello Hugging Face per rilevamento lingua
34
  LANG_DETECT_MODEL = "papluca/xlm-roberta-base-language-detection"
@@ -46,11 +59,8 @@ continuamente nuovi oggetti InferenceClient a ogni chiamata delle funzioni.
46
  - lang_detect_client: per rilevare la lingua della domanda e della risposta
47
  """
48
  try:
49
- logger.info("[Startup] Inizializzazione client HF per generazione (modello di LLM).")
50
- hf_generation_client = InferenceClient(
51
- token=HF_API_KEY,
52
- model=HF_MODEL
53
- )
54
  logger.info("[Startup] Inizializzazione client HF per rilevamento lingua.")
55
  lang_detect_client = InferenceClient(
56
  token=HF_API_KEY,
@@ -390,15 +400,16 @@ def assistant_endpoint(req: AssistantRequest):
390
  # Chiamata al modello per generare la query SPARQL
391
  try:
392
  logger.debug("[assistant_endpoint] Chiamata HF per generare la query SPARQL...")
393
- gen_sparql_output = hf_generation_client.chat.completions.create(
394
- messages=[
395
- {"role": "system", "content": system_prompt_sparql},
396
- {"role": "user", "content": user_message}
397
- ],
398
- max_tokens=512, # max_tokens per la generazione della query
399
- temperature=0.2 # temperatura bassa per avere risposte più "deterministiche"
 
400
  )
401
- possible_query = gen_sparql_output["choices"][0]["message"]["content"].strip()
402
  logger.info(f"[assistant_endpoint] Query generata dal modello: {possible_query}")
403
  except Exception as ex:
404
  logger.error(f"Errore nella generazione della query SPARQL: {ex}")
@@ -483,7 +494,8 @@ def assistant_endpoint(req: AssistantRequest):
483
  # Chiamata finale al modello per la risposta "guida museale"
484
  try:
485
  logger.debug("[assistant_endpoint] Chiamata HF per generare la risposta finale...")
486
- final_output = hf_generation_client.chat.completions.create(
 
487
  messages=[
488
  {"role": "system", "content": second_prompt},
489
  {"role": "user", "content": "Fornisci la risposta finale."}
@@ -491,7 +503,7 @@ def assistant_endpoint(req: AssistantRequest):
491
  max_tokens=512,
492
  temperature=0.5
493
  )
494
- final_answer = final_output["choices"][0]["message"]["content"].strip()
495
  logger.info(f"[assistant_endpoint] Risposta finale generata: {final_answer}")
496
  except Exception as ex:
497
  logger.error(f"Errore nella generazione della risposta finale: {ex}")
 
7
  from rdflib.plugins.sparql.parser import parseQuery
8
  from huggingface_hub import InferenceClient
9
  import re
10
+ from openai import OpenAI
11
+ from dotenv import load_dotenv, find_dotenv
12
+
13
+ # Carica variabili da .env (senza sovrascrivere variabili già presenti nell'ambiente)
14
+ load_dotenv(find_dotenv(), override=False)
15
  # ---------------------------------------------------------------------------
16
  # CONFIGURAZIONE LOGGING
17
  # ---------------------------------------------------------------------------
 
28
  # Nota: HF_API_KEY deve essere impostata a una chiave valida di Hugging Face.
29
  HF_API_KEY = os.getenv("HF_API_KEY")
30
  if not HF_API_KEY:
 
31
  logger.error("HF_API_KEY non impostata.")
32
  raise EnvironmentError("HF_API_KEY non impostata.")
33
 
34
+ DEEPSEEK_API_KEY = os.getenv("DEEPSEEK_API_KEY")
35
+ if not DEEPSEEK_API_KEY:
36
+ logger.error("DEEPSEEK_API_KEY non impostata.")
37
+ raise EnvironmentError("DEEPSEEK_API_KEY non impostata.")
38
+
39
+ DEEPSEEK_MODEL = os.getenv("DEEPSEEK_MODEL", "deepseek-chat")
40
+
41
  # Nome del modello Hugging Face per generare query SPARQL e risposte finali
42
+ logger.info(f"DeepSeek model: {DEEPSEEK_MODEL}")
43
+ logger.info(f"HF key loaded: {'OK' if HF_API_KEY else 'MISSING'}")
44
+ logger.info(f"DeepSeek key loaded: {'OK' if DEEPSEEK_API_KEY else 'MISSING'}")
45
 
46
  # Nome del modello Hugging Face per rilevamento lingua
47
  LANG_DETECT_MODEL = "papluca/xlm-roberta-base-language-detection"
 
59
  - lang_detect_client: per rilevare la lingua della domanda e della risposta
60
  """
61
  try:
62
+ logger.info("[Startup] Inizializzazione client DeepSeek (OpenAI SDK).")
63
+ deepseek_client = OpenAI(api_key=DEEPSEEK_API_KEY, base_url="https://api.deepseek.com/v1")
 
 
 
64
  logger.info("[Startup] Inizializzazione client HF per rilevamento lingua.")
65
  lang_detect_client = InferenceClient(
66
  token=HF_API_KEY,
 
400
  # Chiamata al modello per generare la query SPARQL
401
  try:
402
  logger.debug("[assistant_endpoint] Chiamata HF per generare la query SPARQL...")
403
+ gen_sparql_output = deepseek_client.chat.completions.create(
404
+ model=DEEPSEEK_MODEL,
405
+ messages=[
406
+ {"role": "system", "content": system_prompt_sparql},
407
+ {"role": "user", "content": user_message}
408
+ ],
409
+ max_tokens=512,
410
+ temperature=0.2
411
  )
412
+ possible_query = gen_sparql_output.choices[0].message.content.strip()
413
  logger.info(f"[assistant_endpoint] Query generata dal modello: {possible_query}")
414
  except Exception as ex:
415
  logger.error(f"Errore nella generazione della query SPARQL: {ex}")
 
494
  # Chiamata finale al modello per la risposta "guida museale"
495
  try:
496
  logger.debug("[assistant_endpoint] Chiamata HF per generare la risposta finale...")
497
+ final_output = deepseek_client.chat.completions.create(
498
+ model=DEEPSEEK_MODEL,
499
  messages=[
500
  {"role": "system", "content": second_prompt},
501
  {"role": "user", "content": "Fornisci la risposta finale."}
 
503
  max_tokens=512,
504
  temperature=0.5
505
  )
506
+ final_answer = final_output.choices[0].message.content.strip()
507
  logger.info(f"[assistant_endpoint] Risposta finale generata: {final_answer}")
508
  except Exception as ex:
509
  logger.error(f"Errore nella generazione della risposta finale: {ex}")