import os from dotenv import load_dotenv import gradio as gr from gradio.components import Textbox, Button, Slider, Image from AinaTheme import theme from meteocat_app import generate import csv load_dotenv() MAX_INPUT_CHARACTERS= int(os.environ.get("MAX_INPUT_CHARACTERS", default=200)) SHOW_MODEL_PARAMETERS_IN_UI = os.environ.get("SHOW_MODEL_PARAMETERS_IN_UI", default=True) MAX_NEW_TOKENS = int(os.environ.get("MAX_NEW_TOKENS", default=30)) with open('./locations.txt', 'r', encoding='utf-8') as file: locations = file.read().splitlines() def csv_to_dict(file_path): result = [] with open(file_path, 'r') as file: reader = csv.DictReader(file) for row in reader: result.append(dict(row)) return result def submit_input(input_, repetition_penalty, temperature): print("Question:", input_) print("Repetition_penalty:", repetition_penalty) print("Temperature:", temperature) print() outputs = generate(input_, repetition_penalty, temperature) if input_.strip() == "": gr.Warning('No és possible processar un input buit') return None, None, None if outputs is None: gr.Warning(""" És possible que no hagi trobat el lloc o la data. Només puc respondre a preguntes sobre el temps a alguna localitat en concret. """) return None, None return outputs["model_answer"], outputs["ccma_response"] def change_interactive(text): if len(text.strip()) > MAX_INPUT_CHARACTERS: return gr.update(interactive = True), gr.update(interactive = False) return gr.update(interactive = True), gr.update(interactive = True) def clean(): return ( None, None, None, gr.Slider(value=0.4), gr.Slider(value=0.98), ) with gr.Blocks(theme=theme) as demo: with gr.Row(variant="panel"): with gr.Column(): placeholder_max_token = Textbox( visible=False, interactive=False, value= MAX_INPUT_CHARACTERS ) input_ = Textbox( lines=9, label="Input", placeholder="e.g. Prompt example." ) with gr.Row(variant="panel", equal_height=True): gr.HTML("""""") gr.HTML(f""" 0 / {MAX_INPUT_CHARACTERS}""") gr.Examples( examples=[ ["""Quin temps farà a Boston dijous a la tarda?"""], ], inputs=[input_,], fn=submit_input, ) gr.Examples( examples=[ ["""Quines condicions meteorològiques tindrem a París divendres?"""], ], inputs=[input_,], fn=submit_input, ) gr.Dropdown( label="Available locations", info="Open to show available locations", choices=locations ) with gr.Row(): clear_btn = Button( "Clear", interactive=False ) submit_btn = Button( "Submit", variant="primary", interactive=False ) with gr.Column(): output_answer = Textbox( lines=9, label="Model text", interactive=False, show_copy_button=True ) # output_context = Textbox( # lines=9, # label="Model context", # interactive=False, # show_copy_button=True # ) output_CCMA = Textbox( lines=9, label="CCMA text", interactive=False, show_copy_button=True ) with gr.Row(variant="panel"): with gr.Column(): pass with gr.Accordion("Model parameters", open=True, visible=SHOW_MODEL_PARAMETERS_IN_UI): repetition_penalty = Slider( minimum=0.1, maximum=2.0, step=0.1, value=0.4, label="Repetition penalty" ) temperature = Slider( minimum=0.0, maximum=2.0, value=0.68, label="Temperature" ) with gr.Column(): pass input_.change(fn=change_interactive, inputs=[input_], outputs=[clear_btn, submit_btn], api_name=False,) input_.change( fn=None, inputs=[input_], api_name=False, js=f"""(i) => document.getElementById('countertext').textContent = i.length > {MAX_INPUT_CHARACTERS} && 'Max length {MAX_INPUT_CHARACTERS} characters. ' || '' """) input_.change( fn=None, inputs=[input_, placeholder_max_token], api_name=False, js="""(i, m) => { document.getElementById('inputlenght').textContent = i.length + ' ' document.getElementById('inputlenght').style.color = (i.length > m) ? "#ef4444" : ""; }""") clear_btn.click( fn=clean, api_name=False, inputs=[], outputs=[input_, output_answer, output_CCMA, repetition_penalty, temperature], queue=False ) submit_btn.click( fn=submit_input, inputs=[input_, repetition_penalty, temperature], outputs=[output_answer, output_CCMA], api_name="get-results", ) demo.launch(show_api=True) """ data_as_dict = csv_to_dict("./code2simbol.csv") codes = outputs["codes"] code = [] url_images = [] if codes['interval'] in ['matí', 'matí?', 'mati', 'mati?']: code.append(codes['codis'][0]) elif codes['interval'] in ['tarda', 'tarda?']: code.append(codes['codis'][1]) elif codes['interval'] in ['nit', 'nit?']: code.append(codes['codis'][2]) print(code) for object in data_as_dict: if object['codi'] in code: print("FOUND",object['codi']) if codes['interval'] in ['matí', 'matí?', 'mati', 'mati?', 'tarda', 'tarda?']: url_images.append(object['simbol_url_dia']) elif codes['interval'] in ['nit', 'nit?']: url_images.append(object['simbol_url_noche']) print(url_images) if codes['interval'] in ["tot el dia"]: return ( outputs["model_answer"], gr.Image( value=None, show_share_button=False, show_download_button=False ), outputs["ccma_response"] ) else: return ( outputs["model_answer"], gr.Image( value=url_images[0], show_share_button=False, show_download_button=False ), outputs["ccma_response"] ) """