File size: 4,406 Bytes
bba9405
 
 
 
 
 
 
5c89db0
bba9405
c286fe6
1bad60f
f1690b0
bba9405
87934d4
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
bba9405
 
 
 
 
 
 
 
 
 
 
 
 
84a3d3e
2f6e0aa
 
bba9405
 
 
 
 
 
 
 
 
bdbd09e
bba9405
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
0780bf7
 
bba9405
 
b186db2
 
bba9405
b186db2
 
 
bba9405
 
0780bf7
1ea99dd
bba9405
 
0780bf7
c286fe6
bba9405
bdbd09e
0780bf7
bba9405
155bf94
bba9405
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
import streamlit as st
from langchain.llms import OpenAI
from langchain.prompts import PromptTemplate
from langchain import FewShotPromptTemplate
from langchain.prompts.example_selector import LengthBasedExampleSelector
from dotenv import load_dotenv

load_dotenv() # load the env-sample.txt file

def getLLMResponse(query, age_option,tasktype_option):
    examples = []
    llm = OpenAI(temperature=.9, model="gpt-3.5-turbo-instruct")

#    if age_option=="Kid": #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!"
#        }
#        ]
#    
#    elif age_option=="Adult":  #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."
#        }
#        ]
#
#    elif age_option=="Senior Citizen": #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."
#        }
#        ]


    example_template = """
    Question: {query}
    Response: {answer}
    """

    example_prompt = PromptTemplate(
        input_variables=["query", "answer"],
        template=example_template
    )


    prefix = """You are a {template_ageoption}, and you are going to {template_tasktype_option} , 
    you give one answer for each query. it is strictly limited to 1 answer only, and the answer MUST be LESS THAN 200 words. 
    For a tweet, you SHOULD NOT give more than 150 words. If it is not to write for a tweet, DO NOT give a tweet suggestion in your answer.
    """

    suffix = """
    Question: {template_userInput}
    Response: """

    example_selector = LengthBasedExampleSelector(
        examples=examples,
        example_prompt=example_prompt,
        max_length = numberOfWords
    )


    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"
    )

  
    print(new_prompt_template.format(template_userInput=query,template_ageoption=age_option,template_tasktype_option=tasktype_option))
    response=llm(new_prompt_template.format(template_userInput=query,template_ageoption=age_option,template_tasktype_option=tasktype_option))
    print(response)

    return response

#UI Starts here

st.set_page_config(page_title="PitchPal: Your Friendly Copy Assistant",
                    page_icon='💻',
                    layout='centered',
                    initial_sidebar_state='collapsed')
st.title("PitchPal: Your Friendly Sales Copy Assistant")
st.subheader("by Lorentz Yeung")


form_input = st.text_area('Enter the name of the product or service you want to promote: ', 'PlayStation 6', height=100)
st.write(f'You wrote {len(form_input)} characters.')

tasktype_option = st.selectbox(
    'Choose the type of marketing copy you want to generate: ',
    ('Write a sales copy', 'Create a tweet', 'Write a product description'),key=1)

age_option= st.selectbox(
    'Select the age group of your intended audience: ',
    ('Kid' ,'Adult', 'senior Citizen'),key=2)

# numberOfWords= st.slider('Words limit', 1, 200, 25)
numberOfWords = 40 # the new model doesn't support this.

submit = st.button("Generate Your Sales Copy")

if submit:
    st.write(getLLMResponse(form_input,tasktype_option,age_option))