From adb07a56ff3dd1ec999cfef3df6af44cf56af550 Mon Sep 17 00:00:00 2001 From: Cristiano Ferreira Date: Sun, 14 May 2023 16:39:39 +0100 Subject: [PATCH] add local model playground --- wt2_playground_local.py | 81 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 81 insertions(+) create mode 100644 wt2_playground_local.py diff --git a/wt2_playground_local.py b/wt2_playground_local.py new file mode 100644 index 0000000..1f471bf --- /dev/null +++ b/wt2_playground_local.py @@ -0,0 +1,81 @@ +import openai +import os +from dotenv import load_dotenv +from llama_cpp import Llama, ChatCompletionMessage + +load_dotenv() +openai.api_key = os.getenv("OPENAI_API_KEY") + +llm = Llama(model_path="models/gpt4all-converted.bin", n_ctx=500) +def generate_summarizer( + max_tokens, + temperature, + top_p, + frequency_penalty, + question_type, + question, + answer +): + messages = [ + ChatCompletionMessage(role="system", content="You are a IELTS examiner."), + ChatCompletionMessage(role="system", + content=f"The question you have to grade is of type {question_type} and is the following: {question}"), + + ChatCompletionMessage(role="system", content="Please provide a JSON object response with the overall grade and breakdown grades, " + "formatted as follows: {'overall': 7.0, 'task_response': {'Task Achievement': 8.0, " + "'Coherence and Cohesion': 6.5, 'Lexical Resource': 7.5, 'Grammatical Range and Accuracy': " + "6.0}}"), + ChatCompletionMessage(role="system", + content="Don't give explanations for the grades, just provide the json with the grades."), + ChatCompletionMessage(role="user", + content=f"Evaluate this answer according to ielts grading system: {answer}") + ] + output = llm.create_chat_completion(messages, max_tokens=50) + print(output) + return output + + +import streamlit as st + +# Set the application title +st.title("GPT-3.5 IELTS Examiner") + +# qt_col, q_col = st.columns(2) + +# Selection box to select the question type +# with qt_col: +question_type = st.selectbox( + "What is the question type?", + ( + "Writing Task 2" + ), +) + +# Provide the input area for question to be answered +# with q_col: +question = st.text_area("Enter the question:", height=100) + +# Provide the input area for text to be summarized +answer = st.text_area("Enter the answer:", height=100) + +# Initiate two columns for section to be side-by-side +# col1, col2 = st.columns(2) + +# Slider to control the model hyperparameter +# with col1: +token = st.slider("Token", min_value=0.0, max_value=2000.0, value=1000.0, step=1.0) +temp = st.slider("Temperature", min_value=0.0, max_value=1.0, value=0.7, step=0.01) +top_p = st.slider("Top_p", min_value=0.0, max_value=1.0, value=0.9, step=0.01) +f_pen = st.slider("Frequency Penalty", min_value=-1.0, max_value=1.0, value=0.5, step=0.01) + +# Showing the current parameter used for the model +# with col2: +with st.expander("Current Parameter"): + st.write("Current Token :", token) + st.write("Current Temperature :", temp) + st.write("Current Nucleus Sampling :", top_p) + st.write("Current Frequency Penalty :", f_pen) + +# Creating button for execute the text summarization +if st.button("Grade"): + st.write(generate_summarizer(token, temp, top_p, f_pen, question_type, question, answer))