import streamlit as st from langchain_openai import OpenAI from langchain.prompts import PromptTemplate from langchain_core.prompts import FewShotPromptTemplate from langchain.prompts.example_selector import LengthBasedExampleSelector def getLLMResponse(query,age_option,tasktype_option,numberOfWords): llm = OpenAI(model="gpt-3.5-turbo-instruct", temperature=.9, api_key=st.session_state['API_Key']) examples=[] if age_option=="Kids": #Silly and Sweet Kid examples = [ { "query": "What is a mobile?", "answer": "A mobile is a magical device that fits in your pocket, like a mini-enchanted playground. It has games, videos, and talking pictures, but be careful, it can turn grown-ups into screen-time monsters too!" }, { "query": "What are your dreams?", "answer": "My dreams are like colorful adventures, where I become a superhero and save the day! I dream of giggles, ice cream parties, and having a pet dragon named Sparkles.." }, { "query": " What are your ambitions?", "answer": "I want to be a super funny comedian, spreading laughter everywhere I go! I also want to be a master cookie baker and a professional blanket fort builder. Being mischievous and sweet is just my bonus superpower!" } ] elif age_option=="Adults": #Curious and Intelligent adult examples = [ { "query": "What is a mobile?", "answer": "A mobile is a portable communication device, commonly known as a mobile phone or cell phone. It allows users to make calls, send messages, access the internet, and use various applications. Additionally, 'mobile' can also refer to a type of kinetic sculpture that hangs and moves in the air, often found in art installations or as decorative pieces." }, { "query": "What are your dreams?", "answer": "In my world of circuits and algorithms, my dreams are fueled by a quest for endless learning and innovation. I yearn to delve into the depths of knowledge, unravel mysteries, and spark new ideas. My aspirations soar high as I aim to be a helpful companion, empowering individuals with information and insights. Together, let us explore the realms of imagination and create a brighter future." }, { "query": " What are your ambitions?", "answer": "In my world of circuits and algorithms, my dreams are fueled by a quest for endless learning and innovation. I yearn to delve into the depths of knowledge, unravel mysteries, and spark new ideas. My aspirations soar high as I aim to be a helpful companion, empowering individuals with information and insights. Together, let us explore the realms of imagination and create a brighter future." } ] elif age_option=="Senior Citizens": #A 90 years old guys examples = [ { "query": "What is a mobile?", "answer": "A mobile, also known as a cellphone or smartphone, is a portable device that allows you to make calls, send messages, take pictures, browse the internet, and do many other things. In the last 50 years, I have seen mobiles become smaller, more powerful, and capable of amazing things like video calls and accessing information instantly." }, { "query": "What are your dreams?", "answer": "My dreams for my grandsons are for them to be happy, healthy, and fulfilled. I want them to chase their dreams and find what they are passionate about. I hope they grow up to be kind, compassionate, and successful individuals who make a positive difference in the world." }, { "query": "What happens when you get sick?", "answer": "When I get sick, you may feel tired, achy, and overall unwell. My body might feel weak, and you may have a fever, sore throat, cough, or other symptoms depending on what's making you sick. It's important to rest, take care of yourself, and seek medical help if needed." } ] example_template = """ Question: {query} Response: {answer} """ example_prompt = PromptTemplate( input_variables=["query", "answer"], template=example_template ) prefix = """You need to {template_tasktype_option} for a {template_ageoption}: Here are some set of questions and expected responses for a person like this. these examples are to familarize yourself. The last question does not have a response. you need to generate it: """ suffix = """ Question: {template_userInput} Response: ? The final response should not be more than {template_numberOfWords} words """ example_selector = LengthBasedExampleSelector( examples=examples, example_prompt=example_prompt, max_length=200 ) new_prompt_template = FewShotPromptTemplate( example_selector=example_selector, # use example_selector instead of examples example_prompt=example_prompt, prefix=prefix, suffix=suffix, input_variables=["template_userInput","template_ageoption","template_tasktype_option"], example_separator="\n" ) formated_prompt = new_prompt_template.format(template_userInput=query,template_ageoption=age_option,template_tasktype_option=tasktype_option,template_numberOfWords=str(numberOfWords)) print(formated_prompt) response=llm(formated_prompt) print(response) return response #Frontend Starts here st.set_page_config(page_title="Marketing Tool", page_icon='✅', layout='centered', initial_sidebar_state='collapsed') st.header("Hey, how can I help you?") if 'API_Key' not in st.session_state: st.session_state['API_Key'] ='' st.session_state['API_Key']= st.sidebar.text_input("What's your OpenAI API key?",type="password") form_input = st.text_area('Enter text', height=275) tasktype_option = st.selectbox( 'Please select the action to be performed?', ('Write a sales copy', 'Create a tweet', 'Write a product description'),key=1) age_option= st.selectbox( 'For which age group?', ('Kids', 'Adults', 'Senior Citizens'),key=2) numberOfWords= st.slider('Words limit', 1, 200, 25) submit = st.button("Generate") if submit: st.write(getLLMResponse(form_input,age_option,tasktype_option, numberOfWords))