charliealonso's picture
Generar pormpts de cada TAB
fb243a4
raw
history blame
No virus
2.07 kB
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()