U g( @sddlZddlZddlZddlZddlZddlmZmZmZddlm Z ddl Tddl Z ddl mZejejejejedddlmZmZmZmZddlmZe ejd d Ze d d d Zde e!e!e"e!e!e#dddZ$ddZ%e&dkre%dS)N)datetime timedeltatimezone)Path)*) set_tracez..)default_page_settingescape_markdown set_nav_barshow_linebreak_in_md) load_promptZVARCO_ARENA_RESULT_PATHz ./user_submit)returnc Cs t}|r$|s0t|dn |jddttdd}t|}| d}dt ||}t |}|jddd|st d n~|D]2}||j}t|d } | |W5QRXqt|d } t| d krt d dSt dt| d|SdS)Nz: file exists and is not a directory. Consider renaming it.T)parents )hoursz%m-%d_%H:%M:%Sz./)rexist_okz?No files to upload. Please drag/drop or browse files to upload.wbz*.jsonlz7You need at least 2 jsonlines files to properly run VA.u✅ Successfully uploaded z jsonl files.)VA_ROOTexistsis_dir ValueErrormkdirrrrnowstrftimestrrstwarningnameopenwrite getbufferlistgloblenerrorsuccessresolve) uploaded_filesZ user_sub_rootZKSTtstampZtstrZ files_dir_strZ files_dirfile file_pathfZjslfilesr-V/home/deftson/nfs-deftson/2024/VA_internal/varco_arena/streamlit_app_components/app.py upload_files s2        r/F gpt-4o-mini?)price_estimation promptnameexp_nameapi_keyevaluation_modelupdate_intervalc Csttjj}t|}|r"||}d|d|d|d|d|d }|rV|d}n |dd }t|d}tj|tj tj tj d d d d } t | j d t} t} |d} t| j gggddrt| j } | rj| | 7} |r| }| j|ddn^t}|| |krb| d}t|dkr8| }nddg|dd}| j|dd|} t| td| dk r| j }|r|d}t|dkr|ddg|dd7}n||7}| j|ddt|qq| }||fS)Nzpython ../main.py -i z -o z -k z -p z -e z -j 64z -cpythonz yes | python T)stdoutstderrstdintextbufsizeshellF rbash)languagez ... .. . g? z ... .. . i)rr session_state upfiles_dirrreplaceprint subprocessPopenPIPESTDOUTos set_blockingr:filenotimeemptyselectreadlinecodesplitr$joinsleeppollread)r2r3r4r5r6r7ZptnZoutdircommandprocessZlast_update_timeZterminal_outputZ full_outputoutputZto_show current_timelinesZremaining_output return_coder-r-r.run_varco_arenaGsh $          rac Cs t}td|dtdtdtdtjddd}d tjkrPdtj_t d rft |tj_t d t t d d dW5QRXtdhtdtdt dd dd}tdt dd dd}td}t dt|dd}tdddddd}|dkr4d |d!<d"|d#<|jf|}td$||D]2}td%|d&d%t tt|d'qTW5QRX|rtjd dkrtd(nLtd)d*} d*} t|| | d|d+\} } | rtd,ntd-dtj_W5QRXtd.td/tjd0d1d2} td3}|d4d}|d5d6}td7tjd8tjd9d d:}|rtd|dtjd dkrtd(nL| std;n:t|| |d|d+\} } | rtd<ntd=| tj_W5QRXtd|ddS)>NF)sidebar_placeholderu⚔️ VARCO ARENA ⚔️u**VARCO Arena는 각 모델의 생성된 결과를 비교 평가하여 모델의 성능 순위를 제공하는 시스템입니다.**u%#### 1. 모델 출력파일 업로드z&Drag and Drop jsonlines files (.jsonl)T)accept_multiple_filesrGz Upload Filesu)❓❔무엇을 업로드 하나요❓❔zguide_mds/input_jsonls.mdUTF8)encodingZcost_estimation_formz### 2. Cost Estimationz Select Judgezeval_models_list.txtr@zSelect Evalutaion Promptzeval_prompt_list.txtzCalculate Cost!uy**아래의 평가 프롬프트로 평가가 진행됩니다 (선택한 프롬프트는 버튼 누른 후 보입니다)**-)taskz{inst}z{src}z{out_a}z{out_b})instsrcout_aout_brgtranslation_pairz {source_lang} source_langz {target_lang} target_langz### Evaluation Prompt: z**rolecontentuE❌ Requirements: You have to upload jsonlines files first to proceedz##### Estimated Costdummy)r3r5r4r2r6u:❌ RuntimeError: An error occurred during cost estimationu*✅ Cost estimation completed successfullyZrun_arena_formz### 3. Run Varco ArenazEnter your OpenAI API Keypassword)typez(Optional) Enter Exp. name/ _uJ**아직 ctrl+C 버튼은 안만들었으니 돌리실때 숙고하세요*u🔥 Run Arena!cost_estimated)disabledu0❌ Requirements: OpenAI key required to run VA.u:❌ RuntimeError: An error occurred during Varco Arena runu*✅ Varco Arena run completed successfully) rr rtitler markdown file_uploaderrFrGbuttonr/expanderinforrZform selectboxrVform_submit_buttonr dictcomplete_promptr r getr%rar&rw text_inputrHresult_file_path)rbr(Z eval_modelr3Zestimate_buttonpromptkwargs prompt_cmplmsgZ dummy_api_keyZdummy_exp_namerr`r5r4Z run_buttonr-r-r.mains              $               r__main__)FNNNr0r1)'rNrSrJsysrQrrrpathlibrtyping streamlitrZipdbrpathappendabspathrWdirname__file__ view_utilsrr r r varco_arena.promptsr environrrr/boolrOptionalfloatrar__name__r-r-r-r.s>  & ( O~