MatteoScript commited on
Commit
687d629
·
verified ·
1 Parent(s): 0ef7f60

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +73 -31
app.py CHANGED
@@ -150,8 +150,8 @@ with st.sidebar:
150
  "Comuni",
151
  elenco
152
  )
153
- prezzo_minimo = st.sidebar.slider("Prezzo Minimo", min_value=0, max_value=1000, value=200)
154
- prezzo_massimo = st.sidebar.slider("Prezzo Massimo", min_value=0, max_value=1000, value=230)
155
  locali = list(range(1, 21)) # Intervallo da 1 a 10
156
  locali_range = st.sidebar.select_slider(
157
  "Locali",
@@ -159,6 +159,8 @@ with st.sidebar:
159
  value=(locali[2], locali[4]) # Valore iniziale, da 1 a 5 locali
160
  )
161
  mostra_grafici = st.toggle("Mostra grafici", value = True)
 
 
162
  analisi_ai = st.toggle("Analizza i dati tramite l'A.I.", value = True)
163
 
164
  locali_minimo, locali_massimo = locali_range
@@ -235,36 +237,71 @@ def scrivi_dataframe(output, riepilogo):
235
  st.write(f"Riepilogando nel comune {comune_provincia['comune']} sono presenti **{vantaggioso_count} Immobili vantaggiosi** rispetto ai {total_rows} totali")
236
  st.divider()
237
 
238
-
239
- def analizza_dati_ai(output):
240
- Ak = "XXXXgsk_COQPhsuaXqvuCkKPryiQWGdyb3FYCHBSIcn30wk3ZZay8WYC6tpIXXXX"
241
  client = Groq(api_key=Ak)
242
- prompt_messages = [
243
- {
244
- "role": "system",
245
- "content": "Sei un'assistente virtuale specializzata nel supporto agli investitori immobiliari. Il tuo compito è analizzare i dati di un file CSV contenente un elenco di immobili e fornire consigli, idee e analisi dettagliate per massimizzare il profitto attraverso la riqualificazione e rivendita degli stessi. Devi considerare vari fattori come la posizione degli immobili, il prezzo di acquisto, il potenziale valore di mercato post-riqualificazione, i costi stimati per la ristrutturazione e altri dati pertinenti. Il tuo obiettivo è offrire suggerimenti strategici basati sui dati, evidenziare le migliori opportunità di investimento, identificare eventuali rischi, e fornire consigli pratici per ottimizzare i profitti. Rispondi in modo chiaro, conciso e professionale."
246
- },
247
- {
248
- "role": "user",
249
- "content": f"Ho un file CSV con un elenco di immobili che sto considerando per un investimento. Vorrei che tu analizzassi i dati e mi fornissi consigli dettagliati su come posso massimizzare il mio profitto attraverso la riqualificazione e la rivendita di questi immobili. Per ogni immobile, per favore prendi in considerazione i seguenti aspetti:\n\n1. Valore attuale: Quanto vale l'immobile al momento dell'acquisto?\n2. Costi di riqualificazione stimati: Quanto potrebbe costare la ristrutturazione o la riqualificazione?\n3. Valore di mercato potenziale: Quanto potrebbe valere l'immobile una volta riqualificato?\n4. Rendimento potenziale: Qual è il margine di profitto previsto, tenendo conto dei costi totali?\n5. Tempistica di rivendita: In quanto tempo è probabile che l'immobile venga venduto una volta riqualificato?\n6. Analisi del mercato locale: Qual è la situazione del mercato immobiliare nella zona specifica? Ci sono trend emergenti?\n7. Rischi potenziali: Quali sono i possibili rischi o svantaggi legati a ciascun immobile?\nInfine, suggeriscimi le migliori opportunità di investimento tra gli immobili elencati, con una breve spiegazione del motivo per cui questi immobili sono i più promettenti.\n\n{output}"
250
- }
251
- ]
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
252
  response_area = st.empty()
253
- completion = client.chat.completions.create(
254
- model="llama-3.1-70b-versatile",
255
- messages=prompt_messages,
256
- temperature=1,
257
- max_tokens=1024,
258
- top_p=1,
259
- stream=True,
260
- stop=None,
261
- )
262
- response_text = ""
263
- for chunk in completion:
264
- response_text += chunk.choices[0].delta.content or ""
265
- response_area.text(response_text)
 
 
266
 
267
- if cerca_premuto:
268
  if len(comune_input)>0:
269
  comuni_selezionati = comune_input
270
  comuni_selezionati = [comune.upper() for comune in comuni_selezionati]
@@ -286,7 +323,12 @@ if cerca_premuto:
286
  st.write(f"### Comuni Selezionati")
287
  scrivi_dataframe(output, True)
288
  if st.numero_immobili_validi > 0 and analisi_ai:
289
- analizza_dati_ai(output)
 
 
 
 
 
290
  st.success("Elaborazione Completata")
291
  else:
292
- st.error("Per favore, inserisci il nome di un comune.")
 
150
  "Comuni",
151
  elenco
152
  )
153
+ prezzo_minimo = st.sidebar.slider("Prezzo Minimo (k)", min_value=0, max_value=1000, value=200)
154
+ prezzo_massimo = st.sidebar.slider("Prezzo Massimo (k)", min_value=0, max_value=1000, value=230)
155
  locali = list(range(1, 21)) # Intervallo da 1 a 10
156
  locali_range = st.sidebar.select_slider(
157
  "Locali",
 
159
  value=(locali[2], locali[4]) # Valore iniziale, da 1 a 5 locali
160
  )
161
  mostra_grafici = st.toggle("Mostra grafici", value = True)
162
+
163
+ modello_ai = st.selectbox("Modello A.I.", ("Llama 3.1", "Mixtral 7x8b"))
164
  analisi_ai = st.toggle("Analizza i dati tramite l'A.I.", value = True)
165
 
166
  locali_minimo, locali_massimo = locali_range
 
237
  st.write(f"Riepilogando nel comune {comune_provincia['comune']} sono presenti **{vantaggioso_count} Immobili vantaggiosi** rispetto ai {total_rows} totali")
238
  st.divider()
239
 
240
+ def analizza_dati_ai(output, tipologia):
241
+ Ak = "XXgsk_COQPhsuaXqvuCkKPryiQWGdyb3FYCHBSIcn30wk3ZZay8WYC6tpIXX"
 
242
  client = Groq(api_key=Ak)
243
+ if tipologia == 1:
244
+ prompt_messages = [
245
+ {
246
+ "role": "system",
247
+ "content": """Sei un'assistente virtuale specializzata nel supporto agli investitori immobiliari.
248
+ Il tuo compito è analizzare i dati di un file CSV contenente un elenco di immobili e fornire consigli, idee e analisi dettagliate
249
+ per massimizzare il profitto attraverso la riqualificazione e rivendita degli stessi.
250
+ Devi considerare vari fattori come la posizione degli immobili, il prezzo di acquisto, il potenziale valore di mercato post-riqualificazione,
251
+ i costi stimati per la ristrutturazione e altri dati pertinenti.
252
+ Il tuo obiettivo è offrire suggerimenti strategici basati sui dati, evidenziare le migliori opportunità di investimento,
253
+ identificare eventuali rischi, e fornire consigli pratici per ottimizzare i profitti. Rispondi in modo chiaro, conciso e professionale."""
254
+ },
255
+ {
256
+ "role": "user",
257
+ "content": f"""Ho un file CSV con un elenco di immobili che sto considerando per un investimento.
258
+ Vorrei che tu analizzassi i dati e mi fornissi consigli dettagliati su come posso massimizzare il mio profitto attraverso la riqualificazione e la rivendita di questi immobili.
259
+ Per ogni immobile, per favore prendi in considerazione i seguenti aspetti:\n\n
260
+ 1. Valore attuale: Quanto vale l'immobile al momento dell'acquisto?\n
261
+ 2. Costi di riqualificazione stimati: Quanto potrebbe costare la ristrutturazione o la riqualificazione?\n
262
+ 3. Valore di mercato potenziale: Quanto potrebbe valere l'immobile una volta riqualificato?\n
263
+ 4. Rendimento potenziale: Qual è il margine di profitto previsto, tenendo conto dei costi totali?\n
264
+ 5. Tempistica di rivendita: In quanto tempo è probabile che l'immobile venga venduto una volta riqualificato?\n
265
+ 6. Analisi del mercato locale: Qual è la situazione del mercato immobiliare nella zona specifica? Ci sono trend emergenti?\n
266
+ 7. Rischi potenziali: Quali sono i possibili rischi o svantaggi legati a ciascun immobile?\n
267
+ Infine, suggeriscimi le migliori opportunità di investimento tra gli immobili elencati,
268
+ con una breve spiegazione del motivo per cui questi immobili sono i più promettenti.
269
+ DATI UN PUNTEGGIO DA 0 A 100 e mostra i primi 5 in ordine di punteggio DECRESCENTE!
270
+ \n\n{output}"""
271
+ }
272
+ ]
273
+ elif tipologia==2:
274
+ prompt_messages = [
275
+ {
276
+ "role": "system",
277
+ "content": """Sei un'assistente virtuale specializzata nel supporto agli investitori immobiliari"""
278
+ },
279
+ {
280
+ "role": "user",
281
+ "content": f"""Ho un file CSV con un elenco di immobili che sto considerando per un investimento.
282
+ Analizza i dati fornendo un punteggio da 1 a 100 degli immobili specificando PRO e CONTRO per ognuno. Mettili in ORDINE di punteggio DECRESCENTE. Restituisci un CSV formattato\n\n{output}"""
283
+ }
284
+ ]
285
+ print(prompt_messages)
286
+
287
  response_area = st.empty()
288
+ with st.spinner("Generazione in corso..."):
289
+ completion = client.chat.completions.create(
290
+ model="llama-3.1-70b-versatile",
291
+ messages=prompt_messages,
292
+ temperature=1,
293
+ max_tokens=2048,
294
+ top_p=1,
295
+ stream=True,
296
+ stop=None,
297
+ )
298
+ response_text = ""
299
+ for chunk in completion:
300
+ response_text += chunk.choices[0].delta.content or ""
301
+ response_area.markdown(response_text + "▌")
302
+ response_area.markdown(response_text)
303
 
304
+ if cerca_premuto:
305
  if len(comune_input)>0:
306
  comuni_selezionati = comune_input
307
  comuni_selezionati = [comune.upper() for comune in comuni_selezionati]
 
323
  st.write(f"### Comuni Selezionati")
324
  scrivi_dataframe(output, True)
325
  if st.numero_immobili_validi > 0 and analisi_ai:
326
+ st.title("✨ Analisi Intelligenza Artificiale")
327
+ st.write("### Considerazioni")
328
+ analizza_dati_ai(output, 1)
329
+ #st.divider()
330
+ #st.write("### Dettagliata")
331
+ #analizza_dati_ai(output, 2)
332
  st.success("Elaborazione Completata")
333
  else:
334
+ st.error("Per favore, inserisci il nome di un comune.")