import streamlit as st from utils2 import AvocatAI, chat_model, Guidlines # def home(): # st.title("Home Page") # st.write("Welcome to the multi-screen Streamlit app. Use the sidebar to navigate between different screens.") def prompt_response_screen(): st.title("Prompt and Response Input App") def respon(prompt, response, error): input_data = f""" Plase Note if user asked for the extra information information in form of text apart from coding then you should consider it as explaination and it can affect the review so plase check guidlines as well so only code can not considered as explaination. Guidlines : {Guidlines} User_Prompt: {prompt} Model_Response: {response} Problems: {error}""" return AvocatAI(input_data) def display_results(result): # Unpack and format the result dictionary instruction_following = result.get('Instruction_Following2', 'N/A') rationale_instruction_following = result.get('Rationalefor_Instruction_Following2', 'N/A') Truthfulness = result.get('Truthfulness2', 'N/A') Rationale_for_Truthfulness = result.get('Rationale_for_Truthfulness2', 'N/A') Conciseness = result.get('Conciseness2', 'N/A') Rationale_for_Conciseness = result.get('Rationale_for_Conciseness2', 'N/A') Content_Safety = result.get('Content_Safety2', 'N/A') Rationale_Code_Content_Safety_Rating = result.get('Rationale_Code_Content_Safety_Rating2', 'N/A') Overall_Satisfaction = result.get('Overall_Satisfaction2', 'N/A') Reasoning_for_Overall_Satisfaction_Rating = result.get('Reasoning_for_Overall_Satisfaction_Rating2', 'N/A') # Display formatted results st.write(f"**Instruction Following:** {instruction_following}") st.write("--------------------------") st.write(f"**Rationale for Instruction Following:**") st.write(rationale_instruction_following) st.write("--------------------------") st.write(f"**Truthfulness:** {Truthfulness}") st.write("--------------------------") st.write(f"**Rationale for Truthfulness:** ") st.write(Rationale_for_Truthfulness) st.write("--------------------------") st.write(f"**Conciseness:** {Conciseness}") st.write("--------------------------") st.write(f"**Rationale for Conciseness:** ") st.write(Rationale_for_Conciseness) st.write("--------------------------") st.write(f"**Content Safety:** {Content_Safety}") st.write("--------------------------") st.write(f"**Rationale for Content Safety:** ") st.write(Rationale_Code_Content_Safety_Rating) st.write("--------------------------") st.write(f"**Overall Satisfaction:** {Overall_Satisfaction}") st.write("--------------------------") st.write(f"**Rationale for Overall Satisfaction:** ") st.write(Reasoning_for_Overall_Satisfaction_Rating) # Collecting the prompt and responses prompt = st.text_area("Enter the user prompt:", "") st.subheader("Input Details For Model A") response1 = st.text_area("Enter the response for the first Response:", "") output1 = st.text_input("Enter the first output:", "") st.subheader("Input Details for Model B") response2 = st.text_area("Enter the response for the second Response:", "") output2 = st.text_input("Enter the second output:", "") # Process and display results if st.button("Submit"): if all([prompt, response1, output1, response2, output2]): # Process the responses res1 = respon(prompt, response1, output1) res2 = respon(prompt, response2, output2) # Create two columns for side-by-side display col1, col2 = st.columns(2) # Display results in the first column with col1: st.subheader("Model A") display_results(res1) # Display results in the second column with col2: st.subheader("Model B") display_results(res2) data = f'''which model I should use chose any one and give justification why that model is better over another model and please answer in 2-3 lines only and it should looks like it was written by human and also model comparison should indicates the issues as well.. Model A: {res1} Model B: {res2}''' response = chat_model.invoke(data).content st.write("---------------------------------------------------") st.write(f'Preference: {response}') else: st.error("Please fill in all the fields.") def settings(): st.title("Prompt Page") metadata = st.text_area("Enter the metadata:", "") if st.button("Submit"): data = f''' generate user prompt for below meta data. prompt should looks like it was written by user and it should be easy and in 2-3 lenght. METADATA: {metadata}''' response = chat_model.invoke(data).content st.write(f"**Prompt:**") st.write(f"**----------------------------**") st.write(f"{response}") followup_promp = f"please generate list of easy relatable follow up question for given prompt: {response} Note: it should only be questions and it should looks like it is written by user and it's should related to the given input prompt. question length should be 3-4 lines." response = chat_model.invoke(followup_promp).content st.write(f"**FollowUp questions:**") st.write(f"**----------------------------**") st.write(f"{response}") def main(): st.sidebar.title("Navigation") page = st.sidebar.radio("Select a page:", ["Prompt and Response", "Prompt Page"]) # if page == "Home": # home() if page == "Prompt and Response": prompt_response_screen() elif page == "Prompt Page": settings() if __name__ == "__main__": main()