fra-lupo's picture
Update app.py
27a29d0 verified
import streamlit as st
import requests
import pandas as pd
import io
import re
from io import StringIO
def queryMistral(payload):
response = requests.post(API_URLMistral, headers=headersMistral, json=payload)
return response.json()
def queryGemma(payload):
return requests.post(API_URLGemma, headers=headersGemma, json=payload).json() #post and get
#Upload csv
uploaded_file = st.file_uploader("Choose a file")
if uploaded_file is not None:
# To read file as bytes:
bytes_data = uploaded_file.getvalue()
#st.write(bytes_data)
my_df = pd.read_csv(uploaded_file)
st.write(my_df)
token = st.secrets["HF_TOKEN"]
modello1 = "Gemma-1.1-7b-it"
API_URLGemma = "https://api-inference.huggingface.co/models/google/gemma-1.1-7b-it"
headersGemma = {"Authorization": "Bearer " + token }
#accesso a Mistral tramite Token realizzare dataset_semplice csv:( nome del campo, descrizione)
modello2 = "Mistral-7B-Instruct-v0.2"
API_URLMistral = "https://api-inference.huggingface.co/models/mistralai/Mistral-7B-Instruct-v0.2"
headersMistral = {"Authorization": "Bearer " + token }
#Stampa delle colonne del cvs ( my df) ti da una lista delle colonne
colonne = ""
for col in my_df.columns:
colonne =colonne + col + ","
print(col)
#colonne.pop()
print(colonne)
contesto = "dati di impianti industriali."
# Dividi la stringa in righe
righe = colonne.strip().split(',') #--> questo ritorna una lista
# Estrai i valori e crea il DataFrame
df = pd.DataFrame(righe, columns=['campo'])
print(df.shape)
print("===========================")
print(df["campo"][1])
try:
df.insert(1,"descrizioneGemma","")
except:
pass
try:
df.insert(1,"descrizioneMistral","")
except:
pass
"Descrivi il campo di una tabella che contiene dati di un impianto industriale. Il nome del campo è id_plant. Il formato desiderato è descrizione: <<risposta>>"
for i in range(0,4):
rispostaGemma = queryGemma({
"inputs": "Descrivi il campo di una tabella che contiene" + contesto+ ". Il nome del campo è " + df["campo"][i] + " Il formato desiderato è descrizione: <<risposta>>",
})
df["descrizioneGemma"][i] = rispostaGemma[0]["generated_text"]
rispostaMistral = queryMistral({
"inputs": "Descrivi il campo di una tabella che contiene" + contesto+ ". Il nome del campo è " + df["campo"][i] + " Il formato desiderato è descrizione: <<risposta>>",
})
df["descrizioneMistral"][i] = rispostaMistral[0]["generated_text"]
#TASK 23/MAGG/ per prossima sett inizio giugno
#FARE UN ALTRA REGEX ( SISTEMARLA IN MODO CHE RITORNI LA RISPOSTA, OVVERO LA DESCRIZIONE PULITA)
#CICLARLO SU TUTTI I CAMPI, ANCHE PER MISTRAL
# + UNA TERZA AI GRATUTITA
#OBBIETTIVO: OTENERE UN DATAFRAME CON SCRITTE PULITE ALL INTERNO
#COME PASSARE UNA VARIABILE (CONTESTO) INVECE CHE SCRUBVERLA COME OGGETTO DI STREAMLIT , la scriviamo a mano quando runiamo il programma
print("!!!!!!!!!!!")
print(rispostaGemma[0]["generated_text"])
print("!!!!!!!!!!!")
#PULIZIA STRINGA
# La stringa fornita
#for i in df.shape()[0]:
input_string = df["descrizioneGemma"][0]
# Utilizzo di un'espressione regolare per estrarre la descrizione
description_pattern = r'<<(.*?)>>'
# Cerca la descrizione nella stringa
match = re.search(description_pattern, input_string)
if match:
description = match.group(1)
print(description)
df["descrizioneGemma"][0] = description
else:
print("Descrizione non trovata.")
print("RISPOSTA DOPO REGEX:" + df["descrizioneGemma"][0])
## le letterea a caso sono le descrizioni dei campi che DEVE generare l AI
print("============")
#caricamento descrizioni Gemma
risposteGemma = []
for col in my_df.columns:
risposteGemma = queryGemma({
"inputs": "Descrivi il seguente camo industriale: " + col # + ".Esempio formato-risposta: 'il campo contiene dati di ' .Il nome del campo è " + df["campo"][i],
})
#Aggiungo alla liste delle stringhe pulite.
risposteGemma.append(rispostaMistral[0]["generated_text"])
print(risposteGemma)
df['descrizioneMistral'] = [rispostaMistral[0]["generated_text"] ,"bb","cc","dd","ee","ff"]
print(df)
st.table(df)
#stringa = "To create a schema for a table in an industrial plant, I'd suggest the following:\n\n1. Product_Table\n\nThis table keeps records of all the products manufactured or processed within the industrial plant.\n\n| Field | Data Type | Description |\n| ------------- | --------- | ------------------------------------------------ |\n| id | INT | Unique identifier for each product record |\n| product_name | VARCHAR "
#print(stringa)