Spaces:
Running
Running
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) |