File size: 3,412 Bytes
bba9405 5c89db0 bba9405 c286fe6 1bad60f 37c2451 bba9405 84a3d3e 2f6e0aa bba9405 bdbd09e bba9405 0780bf7 bba9405 93819b7 32dcc75 93819b7 ecc8d69 b186db2 efab0e6 bba9405 0780bf7 d950efc bba9405 0780bf7 d950efc 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 |
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")
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.markdown("<h1 style='text-align: center'>PitchPal</h1>", unsafe_allow_html=True)
st.markdown("<h3 style='text-align: center'>Your Friendly Sales Copy Assistant</h2>", unsafe_allow_html=True)
st.markdown("<p style='text-align: right'>By <a href='https://entzyeung.github.io/portfolio/index.html'>Lorentz Yeung</a></p>", unsafe_allow_html=True)
#st.title("PitchPal")
#st.subheader("Your Friendly Sales Copy Assistant")
#st.markdown(
# """
# - 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: ',
('Draft a sales copy', 'Draft a Twitter post', 'Draft a product description'),key=1)
age_option= st.selectbox(
'Select the age group of your intended audience: ',
('below age 18' ,'age 18-45', 'age 46-65', 'age > 65'),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))
|