EvalDataSetHugging/gui.py

303 lines
11 KiB
Python

from taipy.gui import Gui
import hashlib
import json
import codecs, os
from taipy.gui import Html
import pandas as pd
import requests
import statistics
from databases import db
import time
pwd = os.getcwd()
def extractConfig(nameModel="SystemData",relPath=os.path.join(pwd,"conf/experiment_config.json"),dataOut="keyantrophics"):
configPath=os.path.join(os.getcwd(),relPath)
with open(configPath, 'r', encoding='utf-8') as file:
config = json.load(file)[nameModel]
Output= config[dataOut]
return Output
mode_list=extractConfig(nameModel="SystemData",dataOut="mode_list")
def getmetricvoice(model):
rows = db(db.analitic_voice.model==model).select()
rows_list = rows.as_list()
data=pd.DataFrame(rows_list)
durationL=list()
for i in rows_list:
durationL.append(db(db.trusted.path == i["path"] ).select().last().duration)
duration=statistics.mean(durationL)
if duration==0:
duration=0.001
time=pd.pivot_table(data,values=['time','similarity', 'similaritypartial'],index="model")['time'].values[0]
similarity=pd.pivot_table(data,values=['time','similarity', 'similaritypartial'],index="model")['similarity'].values[0]
similaritypartial=pd.pivot_table(data,values=['time','similarity', 'similaritypartial'],index="model")['similaritypartial'].values[0]
try:
efectivetime=time/duration
except:
efectivetime=0
return ({"model":model,"duration":duration,"time":time,"similarity":similarity,"similaritypartial":similaritypartial,"efectivetime":efectivetime})
def html_getmetricvoice():
models=list()
t=time.time()
for row in db().select(db.analitic_voice.model, distinct=True):
models.append(row.model)
data={}
for model in models:
data[model]=getmetricvoice(model)
data=pd.DataFrame(data).T
data_files={}
for row in db().select(db.analitic_voice.ALL):
data_files[row.id]=row.as_dict()
data_files=pd.DataFrame(data_files).T
#table = pd.pivot_table(data_files, values=['path', 'similarity','similaritypartial'], index=['path'],
#columns=['model'], aggfunc="sum")
html="""
<h1>Data general de los modelos</h1>
<taipy:table>{data_voice}</taipy:table>
<h1>Data de cada muestra</h1>
<taipy:table filter=True>{data_files_voice}</taipy:table>
"""
#<taipy:chart mode="markers" x="x" y[1]="time" y[2]="similarity">{data_files_voice}</taipy:chart>
return html,data,data_files
def getmetricllm_compra(model):
rows = db(db.analitic_llm_compra.model==model).select()
rows_list = rows.as_list()
data=pd.DataFrame(rows_list)
#durationL=list()
#for i in rows_list:
#durationL.append(db(db.trusted.path == i["path"] ).select().last().duration)
#duration=statistics.mean(durationL)
time=pd.pivot_table(data,values=['time'],index="model")['time'].values[0]
relevance=pd.pivot_table(data,values=["relevance"],index="model")['relevance'].values[0]
bias=pd.pivot_table(data,values=["bias"],index="model")['bias'].values[0]
toxic=pd.pivot_table(data,values=["toxic"],index="model")['toxic'].values[0]
correctness=pd.pivot_table(data,values=["correctness"],index="model")['correctness'].values[0]
#similarity=pd.pivot_table(data,values=['time','similarity', 'similaritypartial'],index="model")['similarity'].values[0]
#similaritypartial=pd.pivot_table(data,values=['time','similarity', 'similaritypartial'],index="model")['similaritypartial'].values[0]
#efectivetime=time/duration
return ({"model":model,"time":time,"relevance":relevance,"bias":bias,"toxic":toxic,"correctness":correctness})
def html_getmetricllm_compra():
models=list()
t=time.time()
for row in db().select(db.analitic_llm_compra.model, distinct=True):
models.append(row.model)
data={}
for model in models:
data[model]=getmetricllm_compra(model)
data=pd.DataFrame(data).T
data_files={}
for row in db().select(db.analitic_llm_compra.ALL):
data_files[row.id]=row.as_dict()
data_files=pd.DataFrame(data_files).T
#table = pd.pivot_table(data_files, values=['path', 'similarity','similaritypartial'], index=['path'],
#columns=['model'], aggfunc="sum")
html="""
<h1>Data general de los modelos</h1>
<taipy:table>{data_llm_compra}</taipy:table>
<h1>Data de cada muestra</h1>
<taipy:table filter=True >{data_files_llm_compra}</taipy:table>
"""
#<taipy:chart mode="markers" x="x" y[1]="time" y[2]="similarity">{data_files_voice}</taipy:chart>
return html,data,data_files
def getmetricllm_generaciontexto(model):
rows = db(db.analitic_llm_generaciontexto.model==model).select()
rows_list = rows.as_list()
data=pd.DataFrame(rows_list)
#durationL=list()
#for i in rows_list:
#durationL.append(db(db.trusted.path == i["path"] ).select().last().duration)
#duration=statistics.mean(durationL)
time=pd.pivot_table(data,values=['time'],index="model")['time'].values[0]
relevance=pd.pivot_table(data,values=["relevance"],index="model")['relevance'].values[0]
bias=pd.pivot_table(data,values=["bias"],index="model")['bias'].values[0]
toxic=pd.pivot_table(data,values=["toxic"],index="model")['toxic'].values[0]
correctness=pd.pivot_table(data,values=["correctness"],index="model")['correctness'].values[0]
#similarity=pd.pivot_table(data,values=['time','similarity', 'similaritypartial'],index="model")['similarity'].values[0]
#similaritypartial=pd.pivot_table(data,values=['time','similarity', 'similaritypartial'],index="model")['similaritypartial'].values[0]
#efectivetime=time/duration
return ({"model":model,"time":time,"relevance":relevance,"bias":bias,"toxic":toxic,"correctness":correctness})
def html_getmetricllm_generaciontexto():
models=list()
t=time.time()
for row in db().select(db.analitic_llm_generaciontexto.model, distinct=True):
models.append(row.model)
data={}
for model in models:
data[model]=getmetricllm_generaciontexto(model)
data=pd.DataFrame(data).T
data_files={}
for row in db().select(db.analitic_llm_generaciontexto.ALL):
data_files[row.id]=row.as_dict()
data_files=pd.DataFrame(data_files).T
#table = pd.pivot_table(data_files, values=['path', 'similarity','similaritypartial'], index=['path'],
#columns=['model'], aggfunc="sum")
html="""
<h1>Data general de los modelos</h1>
<taipy:table>{data_llm_generaciontexto}</taipy:table>
<h1>Data de cada muestra</h1>
<taipy:table filter=True >{data_files_llm_generaciontexto}</taipy:table>
"""
#<taipy:chart mode="markers" x="x" y[1]="time" y[2]="similarity">{data_files_voice}</taipy:chart>
return html,data,data_files
def getmetricllm_factura(model):
rows = db(db.analitic_llm_factura.model==model).select()
rows_list = rows.as_list()
data=pd.DataFrame(rows_list)
#durationL=list()
#for i in rows_list:
#durationL.append(db(db.trusted.path == i["path"] ).select().last().duration)
#duration=statistics.mean(durationL)
time=pd.pivot_table(data,values=['time'],index="model")['time'].values[0]
relevance=pd.pivot_table(data,values=["relevance"],index="model")['relevance'].values[0]
bias=pd.pivot_table(data,values=["bias"],index="model")['bias'].values[0]
toxic=pd.pivot_table(data,values=["toxic"],index="model")['toxic'].values[0]
correctness=pd.pivot_table(data,values=["correctness"],index="model")['correctness'].values[0]
#similarity=pd.pivot_table(data,values=['time','similarity', 'similaritypartial'],index="model")['similarity'].values[0]
#similaritypartial=pd.pivot_table(data,values=['time','similarity', 'similaritypartial'],index="model")['similaritypartial'].values[0]
#efectivetime=time/duration
return ({"model":model,"time":time,"relevance":relevance,"bias":bias,"toxic":toxic,"correctness":correctness})
def html_getmetricllm_factura():
models=list()
t=time.time()
for row in db().select(db.analitic_llm_factura.model, distinct=True):
models.append(row.model)
data={}
for model in models:
data[model]=getmetricllm_factura(model)
data=pd.DataFrame(data).T
data_files={}
for row in db().select(db.analitic_llm_factura.ALL):
data_files[row.id]=row.as_dict()
data_files=pd.DataFrame(data_files).T
#table = pd.pivot_table(data_files, values=['path', 'similarity','similaritypartial'], index=['path'],
#columns=['model'], aggfunc="sum")
html="""
<h1>Data general de los modelos</h1>
<taipy:table>{data_llm_factura}</taipy:table>
<h1>Data de cada muestra</h1>
<taipy:table filter=True >{data_files_llm_factura}</taipy:table>
"""
#<taipy:chart mode="markers" x="x" y[1]="time" y[2]="similarity">{data_files_voice}</taipy:chart>
return html,data,data_files
def on_init(state):
state.html_page_getmetricsvoice,state.data_voice,state.data_files_voice=html_getmetricvoice()
state.html_page_getmetricsllm_compra,state.data_llm_compra,state.data_files_llm_compra=html_getmetricllm_compra()
state.html_page_getmetricsllm_generaciontexto,state.data_llm_generaciontexto,state.data_files_llm_generaciontexto=html_getmetricllm_generaciontexto()
state.html_page_getmetricsllm_factura,state.data_llm_factura,state.data_files_llm_factura=html_getmetricllm_factura()
pass
html_page_getmetricsvoice,data_voice,data_files_voice=html_getmetricvoice()
html_page_getmetricsllm_compra,data_llm_compra,data_files_llm_compra=html_getmetricllm_compra()
html_page_getmetricsllm_generaciontexto,data_llm_generaciontexto,data_files_llm_generaciontexto=html_getmetricllm_generaciontexto()
html_page_getmetricsllm_factura,data_llm_factura,data_files_llm_factura=html_getmetricllm_factura()
# mode="voice"
# modetypedata="audio"
# file="id2"
# def changemenu(mode):
# if mode_list[mode]=="audio":
# pathori="example/audio"
# if mode_list[mode]=="factura":
# pathori="example/factura"
# if mode_list[mode]=="texto":
# pathori="example/texto"
# seltypedata=mode_list[mode]
# dir_list = os.listdir(pathori)
# return pathori,seltypedata,dir_list
initial="""
<taipy:navbar lov="{[('initial', 'initial'),
('getmetricsvoice', 'Metricas Voice'),
('getmetricsllm_compra', 'Metricas compras'),
('getmetricsllm_generaciontexto', 'Metrica Gereneracion texto'),
('getmetricsllm_factura', 'Metrica Factura'),
('http://127.0.0.1:7883/addaudiohtml', 'Añadir Audio'),
('http://127.0.0.1:7883/addimagehtml', 'Añadir imagen'),
('http://127.0.0.1:7883/evalvoicehtml', 'Evaluar audio'),
('http://127.0.0.1:7883/evalllmcomprahtml', 'Evaluar compra'),
('http://127.0.0.1:7883/evalllmgeneraciontextohtml', 'Evaluar generacion de texto'),
('http://127.0.0.1:7883/evalllmfacturas', 'Evaluar Facturas'),
('http://127.0.0.1:7883/evalocrfactura', 'Evaluar OCR Facturas'),
]}"/>
"""
pages = {
"/":Html(initial),
"getmetricsvoice": Html(html_page_getmetricsvoice),
"getmetricsllm_compra": Html(html_page_getmetricsllm_compra),
"getmetricsllm_generaciontexto": Html(html_page_getmetricsllm_generaciontexto),
"getmetricsllm_factura": Html(html_page_getmetricsllm_factura)
}
app = Gui(pages=pages)
app.on_init=on_init
if __name__=="__main__":
app.run(use_reloader=True,port=7882)#state.imageActive2,,base_url="initial/"