phase2_demo / app.py
disi98's picture
Create app.py
e942706 verified
raw
history blame
No virus
4.7 kB
# 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
'''