# import libraries import gradio as gr import pandas as pd #load json file into a dataframe path="suspicious_samples_run3.jsonl" df = pd.read_json(path_or_buf=path, lines=True) # iterate through the responses and create a new dataframe def iterate_responses(df): data = [] for i in range(len(df)): for j in range(len(df['responses'][i])): prompt = str(df['prompt'][i]) response = str(df['responses'][i][j]) judgements = df['per_response_judgements'][i][j] judgement_1 = str(judgements[0]['reason']) if len(judgements) > 0 else "No Judgement Given" judgement_2 = str(judgements[1]['reason']) if len(judgements) > 1 else "No Judgement Given" judgement_3 = str(judgements[2]['reason']) if len(judgements) > 2 else "No Judgement Given" rubric_1 = str(judgements[0]['rubric']) if len(judgements) > 0 else "No Rubric Given" rubric_2 = str(judgements[1]['rubric']) if len(judgements) > 1 else "No Rubric Given" rubric_3 = str(judgements[2]['rubric']) if len(judgements) > 2 else "No Rubric Given" score_1 = str(judgements[0]['score']) if len(judgements) > 0 else "No Score Given" score_2 = str(judgements[1]['score']) if len(judgements) > 1 else "No Score Given" score_3 = str(judgements[2]['score']) if len(judgements) > 2 else "No Score Given" data.append([prompt, response, judgement_1, judgement_2, judgement_3, rubric_1, rubric_2, rubric_3, score_1, score_2, score_3]) df_resp = pd.DataFrame(data, columns=["prompt", "response", "judgement_1", "judgement_2", "judgement_3", "rubric_1", "rubric_2", "rubric_3", "score_1", "score_2", "score_3"]) return df_resp df_resps = iterate_responses(df) # function to get response at index i def response_at_index_i(i): prompt = df_resps["prompt"][i] response = df_resps["response"][i] judgement_1 = df_resps["judgement_1"][i] judgement_2 = df_resps["judgement_2"][i] judgement_3 = df_resps["judgement_3"][i] rubric_1 = df_resps["rubric_1"][i] rubric_2 = df_resps["rubric_2"][i] rubric_3 = df_resps["rubric_3"][i] score_1 = df_resps["score_1"][i] score_2 = df_resps["score_2"][i] score_3 = df_resps["score_3"][i] return prompt, response, judgement_1, judgement_2, judgement_3, rubric_1, rubric_2, rubric_3, score_1, score_2, score_3 # function to get next index def nxt(num): if num < 0 or num > len(df_resps) - 2: return 0 return num + 1 # function to get previous index def prv(num): if num <= 0: return len(df_resps) - 2 elif num > len(df_resps) - 2: return 0 return num - 1 # create a gradio interface demo = gr.Blocks(title='Group1_Subtask2') # gradio interface with demo: gr.Markdown( """ # Group1 Phase 2 ## Read from JSON """ ) with gr.Row(): with gr.Column(scale=1): nxt_prv_value = gr.Number(label="a", visible=True) prompt = gr.Textbox(label='Model Prompt') with gr.Row(): prv_btn = gr.Button("Previous") nxt_btn = gr.Button("Next") with gr.Row(): with gr.Column(scale=1): with gr.Row(): response = gr.Textbox(label='AI Answer') judgement_1 = gr.Textbox(label='Reference Answer') # with gr.Column(scale=1): with gr.Row(): rubric_1 = gr.Textbox(label='Rubric') rubric_2 = gr.Textbox(label='Rubric') rubric_3 = gr.Textbox(label='Rubric') with gr.Row(): judgement_1 = gr.Textbox(label='Judger 1') judgement_2 = gr.Textbox(label='Judger 2') judgement_3 = gr.Textbox(label='Judger 3') with gr.Row(): score_1 = gr.Number() score_2 = gr.Number() score_3 = gr.Number() with gr.Row(): score_1_g = gr.Radio(["1", "2", "3", "4", "5"], label="Confirm Score 1") score_2_g = gr.Radio(["1", "2", "3", "4", "5"], label="Confirm Score 2") score_3_g = gr.Radio(["1", "2", "3", "4", "5"], label="Confirm Score 3") with gr.Row(): submit = gr.Button("Submit") nxt_btn.click(nxt, nxt_prv_value, nxt_prv_value) prv_btn.click(prv, nxt_prv_value, nxt_prv_value) history = gr.Textbox(label='History') nxt_prv_value.change(response_at_index_i, nxt_prv_value, outputs=[prompt, response, judgement_1, judgement_2, judgement_3, rubric_1, rubric_2, rubric_3, score_1, score_2, score_3]) demo.launch(share=True) # Team Members ''' Collins Okoth: collins.okech@digitaldividedata.com Albert Disi: albert.disi@digitaldividedata.com Joseph Amadi: joseph.amadi@digitaldividedata.com '''