File size: 4,146 Bytes
bba9405
 
 
 
 
 
 
5c89db0
bba9405
c286fe6
1bad60f
f1690b0
bba9405
87934d4
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
bba9405
 
 
 
 
 
 
 
 
 
 
 
 
84a3d3e
2f6e0aa
 
bba9405
 
 
 
 
 
 
 
 
bdbd09e
bba9405
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
e3b3920
bba9405
 
e3b3920
1ea99dd
bba9405
 
1bad60f
c286fe6
bba9405
bdbd09e
c286fe6
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
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="Marketing Tool",
                    page_icon='✅',
                    layout='centered',
                    initial_sidebar_state='collapsed')
st.header("Hey, How can I help you?")

form_input = st.text_area('Enter text', height=100)

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 target age group?',
    ('Kid' ,'Adult', 'senior Citizen'),key=2)

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

submit = st.button("Generate")

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