TextGen / email_writer.py
abdullah10's picture
Upload 17 files
dfc4131
from langchain.prompts import PromptTemplate
from langchain.chains import LLMChain
from langchain.llms import OpenAI
from load_model import call_palm
from calling_apis import google_api_key, openai_api_key
class email_writing:
"""
A class for generating emails and email marketing campaigns using a language model.
"""
def email_gen(self, recipient:str, recipient_position:str, sender_name:str, position_sender:str, desc:str, language='En', model_name='Google Palm 2', creativity='Original') -> str:
"""
Generates an email based on provided details.
Args:
recipient (str): Name of the email recipient.
recipient_position (str): Position of the email recipient.
sender_name (str): Name of the email sender.
position_sender (str): Position of the email sender.
desc (str): Description or context for the email.
language (str): the language of the generated content (optional, default value is 'EN').
creativity (str): Optional Parameter -> Controling the randomness of the model. Default value is Original
model_name (str): Optional Parameter -> select the LLM model. Default Value is Google Palm 2
Returns:
email (str): Generated email content.
"""
temp = 0
if creativity == 'Original':
temp = 0
elif creativity == 'Balanced':
temp = 0.25
elif creativity == 'Creative':
temp = 0.5
elif creativity == 'Spirited':
temp = 0.75
elif creativity == 'Visionary':
temp = 1
if model_name == 'Google Palm 2':
llm = call_palm(google_api_key, temperature=temp)
elif model_name == 'GPT-3.5':
llm = OpenAI(model_name='gpt-3.5-turbo', openai_api_key=openai_api_key, temperature=temp)
elif model_name == 'GPT-4':
llm = OpenAI(model_name='gpt-4', openai_api_key=openai_api_key, temperature=temp)
if language == 'En':
email_prompt = f"Write a professional and well organized Email on {desc}.\nThe name of the Recipient is {recipient} and the recipient position is {recipient_position}.\nMy Name is {sender_name} and my Position is {position_sender}."
email_promptTemp = PromptTemplate(
input_variables=["text_input"],
template="You are a professional email writer:\n{text_input}\nEmail:")
elif language == 'Ar':
email_prompt = f"اكتب بريدًا إلكترونيًا احترافيًا ومنظمًا حول {desc}.\nاسم المستلم هو {recipient} وموقع المستلم هو {recipient_position}.\nاسمي هو {sender_name} وموقعي هو {position_sender}."
email_promptTemp = PromptTemplate(
input_variables=["text_input"],
template="أنت كاتب بريد إلكتروني محترف:\n{text_input}\nالبريد الإلكتروني:")
email_extraction_chain = LLMChain(llm=llm, prompt=email_promptTemp)
email = email_extraction_chain.run(email_prompt)
return email
def email_subject_gen(self, email:str, language='En', model_name='Google Palm 2', creativity='Original')->str:
"""
Generates a subject for a given email.
Args:
email (str): Email content for which the subject needs to be generated.
language (str): the language of the generated content (optional, default value is 'EN').
creativity (str): Optional Parameter -> Controling the randomness of the model. Default value is Original
model_name (str): Optional Parameter -> select the LLM model. Default Value is Google Palm 2
Returns:
email_subject (str): Generated email subject.
"""
temp = 0
if creativity == 'Original':
temp = 0
elif creativity == 'Balanced':
temp = 0.25
elif creativity == 'Creative':
temp = 0.5
elif creativity == 'Spirited':
temp = 0.75
elif creativity == 'Visionary':
temp = 1
if model_name == 'Google Palm 2':
llm = call_palm(google_api_key, temperature=temp)
elif model_name == 'GPT-3.5':
llm = OpenAI(model_name='gpt-3.5-turbo', openai_api_key=openai_api_key, temperature=temp)
elif model_name == 'GPT-4':
llm = OpenAI(model_name='gpt-4', openai_api_key=openai_api_key, temperature=temp)
if language == 'En':
email_subject_prompt = f"Generate a subject for the following email:\n{email}\n"
email_subject_promptTemp = PromptTemplate(
input_variables=["text_input"],
template="You are a professional email writer:\n{text_input}\nEmail Subject:")
elif language == 'Ar':
email_subject_prompt = f"أنشئ موضوعًا للبريد الإلكتروني التالي:\n{email}\n"
email_subject_promptTemp = PromptTemplate(
input_variables=["text_input"],
template="أنت كاتب بريد إلكتروني محترف:\n{text_input}\nعنوان البريد الإلكتروني:")
email_subject_extraction_chain = LLMChain(llm=llm, prompt=email_subject_promptTemp)
email_subject = email_subject_extraction_chain.run(email_subject_prompt)
return email_subject
def email_marketing_campaigns_gen(self, product_name:str, product_description:str, target_audience:str, goal:str, language='En', model_name='Google Palm 2', creativity='Original')->str:
"""
Generates a subject for a given email.
Args:
product_name (str): Name of the product.
product_description (str): Description of the product.
target_audience (str): Targeted audience for the campaign.
goal (str): Goal of the Campaign.
language (str): the language of the generated content (optional, default value is 'EN').
Returns:
email (str): Generated emails marketing campaigns.
"""
temp = 0
if creativity == 'Original':
temp = 0
elif creativity == 'Balanced':
temp = 0.25
elif creativity == 'Creative':
temp = 0.5
elif creativity == 'Spirited':
temp = 0.75
elif creativity == 'Visionary':
temp = 1
if model_name == 'Google Palm 2':
llm = call_palm(google_api_key, temperature=temp)
elif model_name == 'GPT-3.5':
llm = OpenAI(model_name='gpt-3.5-turbo', openai_api_key=openai_api_key, temperature=temp)
elif model_name == 'GPT-4':
llm = OpenAI(model_name='gpt-4', openai_api_key=openai_api_key, temperature=temp)
if language == 'En':
email_prompt = f"Generate a high-converting email marketing campaign for {product_name}. {product_name} is {product_description}. that is targeted at {target_audience} and has the goal of {goal}. The campaign should include a welcome email, a nurture sequence, and a promotional email."
email_promptTemp = PromptTemplate(
input_variables=["text_input"],
template="You are a Professional Email Marketing Copywriter:\n{text_input}\nEmail Marketing Campaign:")
elif language == 'Ar':
email_prompt = f"أنشئ حملة تسويق بريد إلكتروني فعّالة لـ {product_name}. {product_name} هو {product_description}. مستهدفة لـ {target_audience} ولها هدف {goal}. يجب أن تتضمن الحملة رسالة ترحيب، سلسلة تغذية، ورسالة ترويجية."
email_promptTemp = PromptTemplate(
input_variables=["text_input"],
template="أنت كاتب نصوص تسويق البريد الإلكتروني المحترف:\n{text_input}\nحملة تسويق البريد الإلكتروني:")
email_extraction_chain = LLMChain(llm=llm, prompt=email_promptTemp)
email = email_extraction_chain.run(email_prompt)
return email