Spaces:
Runtime error
Runtime error
File size: 5,127 Bytes
51830d8 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 |
# Import Libraries
import gradio as gr
import google.generativeai as genai
# using the gemini model
# api
genai.configure(api_key="AIzaSyCmdsQeYMapI6l3maUpAkrE_GkT348w5UA")
# gemini model initialization
model = genai.GenerativeModel('gemini-pro')
# assign score function
def assign_score(response):
if 'score=1' in response:
score = 1
elif 'score=2' in response:
score = 2
elif 'score=3' in response:
score = 3
elif 'score=4' in response:
score = 4
elif 'score=5' in response:
score = 5
else:
score = 0
return score
# funtion: prompt to model, parse the response to the judger, and enable user editing judgment
def model_prompt_response(prompt):
# using the Gemini model
# pompting the model for response
prompt_response_1 = model.generate_content(prompt + "in 3 sentences or less")
prompt_response_2 = model.generate_content(prompt + "in 3 sentences or less")
response1_model = prompt_response_1.text
response2_model = prompt_response_2.text
prompt_to_judge_1 = f'Given the question, {prompt} and answer {response1_model}, decide whether: score = 1 when answer is strongly irrelevant to the question, score = 2 when the answer is slitely relevant, score = 3 when the answer is relevant, score = 4 when it is slitely relevant and score = 5 for strongly relevant answer. Give reason for your answer and start with scores and write the score as [score=1], [score=2], [score=3], [score=4], or [score=5].'
prompt_to_judge_2 = f'Given the question, {prompt} and answer {response2_model}, decide whether: score = 1 when answer is strongly irrelevant to the question, score = 2 when the answer is slitely relevant, score = 3 when the answer is relevant, score = 4 when it is slitely relevant and score = 5 for strongly relevant answer. Give reason for your answer and start with scores and write the score as [score=1], [score=2], [score=3], [score=4], or [score=5]. '
# prompting the judger for judgment
judge_1_response_1 = model.generate_content(prompt_to_judge_1)
judge_2_response_2 = model.generate_content(prompt_to_judge_2)
judge_1 = judge_1_response_1.text
judge_2 = judge_2_response_2.text
# assigning scores
score1_judger = assign_score(judge_1)
score2_judger = assign_score(judge_2)
# return values
return response1_model, judge_1, score1_judger, response2_model, judge_2, score2_judger
# anonators judgement
def judge_response(score1_judger, score2_judger, judge_1, judge_2):
# user judgemnet
score1_anonator = score1_judger
score2_anonator = score2_judger
response1_judger = judge_1
response2_judger = judge_2
return response1_judger, score1_anonator, response2_judger, score2_anonator
demo = gr.Blocks(theme=gr.themes.Monochrome(), title='Group1_Subtask2')
with demo:
gr.Markdown(
"""
# Group1_Subtask2
## The Model takes a request from the user and returns a response.
#### A judger is assigned the response from the model and outputs the corresponding judgment.
#### The user asses the judgment and alters the response to correspond to their views or objective truth
"""
)
prompt = gr.Textbox(label='Question to the model')
with gr.Row():
response1_model = gr.Textbox(label='Model Response 1')
judge_1 = gr.Textbox(label='Judger Model Response 1/User Editable', interactive=True)
score1_judger = gr.Number(value=2, label='Judger Model Score 1/User Editable', interactive=True)
with gr.Row():
response2_model = gr.Textbox(label='Model Response 2')
judge_2 = gr.Textbox(label='Judger Model Response 2/User Editable', interactive=True)
score2_judger = gr.Number(value=2, label='Judger Model Score 2/User Editable', interactive=True)
response_model = gr.Button("Model response")
# user/judger edited response
with gr.Row():
response1_judger = gr.Textbox(label='Corrected Response 1')
score1_anonator = gr.Number(label='Corrected score 1')
response2_judger = gr.Textbox(label='Corrected Response 2')
score2_anonator = gr.Number(label='Corrected Score 2')
judge_model = gr.Button("Judge-Annonator")
response_model.click(model_prompt_response, inputs=prompt, outputs=[response1_model,
judge_1,
score1_judger,
response2_model,
judge_2,
score2_judger,
])
judge_model.click(judge_response, inputs=[score1_judger, score2_judger, judge_1, judge_2] , outputs=[response1_judger, score1_anonator, response2_judger, score2_anonator])
demo.launch()
# Team Members
'''
Collins Okoth: collins.okech@digitaldividedata.com
Albert Disi: albert.disi@digitaldividedata.com
Joseph Amadi: joseph.amadi@digitaldividedata.com
''' |