disi98 commited on
Commit
51830d8
1 Parent(s): ceae7cc

Create app.py

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