charliealonso69's picture
Create app.py
2fe3ac7
from contextlib import nullcontext
import csv
import os.path
import random
import gradio as gr
from gradio.components import Textbox, Dropdown
from gradio import Interface, TabbedInterface
def parametroAleatorio(lista):
res = random.choice(list(lista))
while res == '':
res = random.choice(list(lista))
return res
def make_concat_prompt(csv_reader, valoresUnicos):
def concat_prompt(*args):
campos = {campo: parametroAleatorio(valoresUnicos[campo]) for campo in csv_reader.fieldnames}
campos.update({campo: valor for campo, valor in zip(csv_reader.fieldnames, args) if valor})
prompt = ', '.join([campos[campo] for campo in csv_reader.fieldnames])
return prompt
return concat_prompt
csv_files = [f for f in os.listdir() if os.path.isfile(f) and f.endswith('.csv')]
csv_files.sort() # Ordenar alfabéticamente
interfaces = []
tab_labels = []
for file_name in csv_files:
with open(file_name, 'r') as csv_file:
csv_reader = csv.DictReader(csv_file)
valoresUnicos = {}
for campo in csv_reader.fieldnames:
valoresUnicos[campo] = set()
for row in csv_reader:
for campo, valor in row.items():
valoresUnicos[campo].add(valor)
inputs = [Dropdown(list(valoresUnicos[campo]), label=campo.capitalize()) for campo in valoresUnicos.keys()]
output_text = Textbox(label='Prompt')
tab_label = os.path.splitext(file_name)[0].title()
tab_labels.append(tab_label)
title = f"Generador Prompts Tecnolitas"
description = '<div align="center"> Selecciona entre los distintos menús desplegables para generar un Prompt creativo, los que dejes en blanco serán elegidos aleatoriamente.</div>'
fn = make_concat_prompt(csv_reader, valoresUnicos)
interface = Interface(fn=fn, inputs=inputs, outputs=output_text, title=title, description=description)
interfaces.append(interface)
tabbed_interface = TabbedInterface(interfaces, tab_labels)
tabbed_interface.launch()