NCRTAutoScore / pages /Our_model.py
themeetjani's picture
Update pages/Our_model.py
3ca613c verified
import openai
from openai import OpenAI
import streamlit as st
from streamlit import session_state
import numpy as np
import json
import os
client = OpenAI()
openai.api_key = os.getenv("OPENAI_API_KEY")
from sentence_transformers import SentenceTransformer, LoggingHandler, losses, util, InputExample
model = SentenceTransformer('models/transformer_model/')
from scipy import spatial
def cosine_similarity(x,y):
return 1 - spatial.distance.cosine(x,y)
def gpt_scorer(m,s):
response = client.chat.completions.create(
model="gpt-4",
messages=[
{
"role": "system",
"content": "You are UPSC answers evaluater. You will be given model answer and student answer. Evaluate it by comparing with the model answer. \n<<REMEMBER>>\nIt is 10 marks question. Give marks in the range of 0.5. (ex. 0,0.5,1...)\nPlease give marks generously. If the student answer body matches more than 70% with the model answer then give full marks for body. \nIf the student answer and model answer is not relevant then give 0 marks.\ngive output in json format. Give output in this format {\"total\":}\n<<OUTPUT>>"
},
{
"role": "user",
"content": f"Model answer: {m}"},
{
"role": "user",
"content": f"Student answer: {s}"
}
],
temperature=0,
max_tokens=256,
top_p=1,
frequency_penalty=0,
presence_penalty=0,seed = 10
)
return json.loads(response.choices[0].message.content)
def embeddings_cosine(s1,s2,model):
embeddings1 = model.encode(s1)
embeddings2 = model.encode(s2)
cosine_scores = cosine_similarity(embeddings1, embeddings2)
cosine_scores = cosine_scores*10
return np.abs(np.round(cosine_scores * 2) / 2)
def main_score(m,s):
score1 = embeddings_cosine(m,s,model)
score_g = gpt_scorer(m,s)
print(score_g)
score2 = score_g['total']
print(score1,"our model")
percentage_difference = (abs(score1 - score2) / 10) * 100
if percentage_difference > 30:
return score2
elif score2 == 0:
return score2
else:
return score1
from st_pages import Page, Section, show_pages, add_page_title,add_indentation
st.set_page_config(page_title="Auto score Openai", page_icon="πŸ“ˆ")
st.markdown("<h1 style='text-align: center; color: black;'> Welcome to Our App! πŸ‘‹</h1>", unsafe_allow_html=True)
if 'result' not in session_state:
session_state['result']= ""
st.title("Auto score")
text1= st.text_area(label= "Please write the model answer bellow",
placeholder="What does the teacher say?")
text2= st.text_area(label= "Please write the student answer bellow",
placeholder="What does the student say?")
def classify(text1,text2):
session_state['result'] = main_score(text1,text2)
st.text_area("result", value=session_state['result'])
st.button("Classify", on_click=classify, args=[text1,text2])