Spaces:
Runtime error
Runtime error
File size: 11,185 Bytes
8bc7dc5 dfc4131 8bc7dc5 dfc4131 8bc7dc5 dfc4131 8bc7dc5 dfc4131 8bc7dc5 dfc4131 8bc7dc5 dfc4131 8bc7dc5 dfc4131 8bc7dc5 dfc4131 8bc7dc5 dfc4131 8bc7dc5 dfc4131 8bc7dc5 dfc4131 8bc7dc5 dfc4131 8bc7dc5 dfc4131 8bc7dc5 dfc4131 8bc7dc5 dfc4131 8bc7dc5 |
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 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 |
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 blog_content_generation:
'''
Description:
This Python class, blog_content_generation, is designed to facilitate the creation of various blog-related content using a language model (LLM).
It offers functionalities to generate blog post ideas, descriptions, actual posts, and relevant tags for search engine optimization (SEO).
Class Methods:
__init__(self, llm)
Description: Initializes the blog_content_generation class by setting the language model (llm) to be used for content generation.
blog_idea_desc_gen(self, blog)
Description: Generates SEO-friendly titles and meta descriptions for a given blog post topic.
Parameters:
topic: The title or topic of the blog post.
language (str): Opitonal Parameter -> The language of the model.
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:
blog_idea_desc: A list of suggested titles and meta descriptions.
blog_idea_gen(self, topic)
Description: Creates a list of SEO-friendly blog post ideas with emotional and persuasive titles based on a specific topic.
Parameters:
topic: The subject or theme for which blog post ideas are requested.
language (str): Opitonal Parameter -> The language of the model.
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:
blog_idea: A list containing at least 10 suggested blog post ideas.
blog_post_gen(self, topic)
Description: Generates a blog post on a given topic.
Parameters:
topic: The subject or theme for the blog post content.
language (str): Opitonal Parameter -> The language of the model.
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:
blog_post: The generated blog post content.
blog_tags_gen(self, blog)
Description: Suggests tags for a specific blog post.
Parameters:
blog: The title or topic of the blog post for which tags are needed.
language (str): Opitonal Parameter -> The language of the model.
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:
blog_tags_desc: A list of suggested tags related to the provided blog post.
'''
def blog_idea_desc_gen(self, topic, language='En',creativity='Original', model_name='Google Palm 2'):
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':
blog_idea_desc_prompt = f"Suggest at least 5 SEO-friendly titles and meta descriptions for blog post topic delimeted by three backtick. Use a persuasive and intriguing tone.\n```{topic}```"
blog_idea_desc_promptTemp = PromptTemplate(
input_variables=["text_input"],
template="You are my blogger writter\n\n{text_input}\n\nSEO blog post ideas:")
elif language == 'Ar':
blog_idea_desc_prompt = f"اقترح على الأقل 5 عناوين ووصفات ودية لمحركات البحث (SEO) لمقالة الويب التالية {topic}. استخدم نبرة مقنعة ومثيرة للاهتمام."
blog_idea_desc_promptTemp = PromptTemplate(
input_variables=["text_input"],
template="أنت كاتب مدونتي\n\n{text_input}\n\nأفكار مقالات مدونة حول تحسين محركات البحث:")
blog_idea_desc_extraction_chain = LLMChain(llm=llm, prompt=blog_idea_desc_promptTemp)
blog_idea_desc = blog_idea_desc_extraction_chain.run(blog_idea_desc_prompt)
return blog_idea_desc
def blog_idea_gen(self, topic, language='En', creativity='Original', model_name='Google Palm 2'):
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':
blog_idea_prompt = f"Create a list of at least 10 blog post ideas on the following topic: {topic}. Suggest SEO-Friendly title and use an emotional and persuasive tone in blog post titles."
blog_idea_promptTemp = PromptTemplate(
input_variables=["text_input"],
template="You are my blogger writter\n\n{text_input}\n\nSEO blog post ideas:")
elif language == 'Ar':
blog_idea_prompt = f"أنشئ قائمة تحتوي على على الأقل 10 أفكار لمقالات في موضوع: {topic}. اقترح عناوين صديقة لمحركات البحث واستخدم نبرة عاطفية ومقنعة في عناوين مقالات البلوج"
blog_idea_promptTemp = PromptTemplate(
input_variables=["text_input"],
template="أنت كاتب مدونتي\n\n{text_input}\n\nأفكار مقالات مدونة تحسين محركات البحث:")
blog_idea_extraction_chain = LLMChain(llm=llm, prompt=blog_idea_promptTemp)
blog_idea = blog_idea_extraction_chain.run(blog_idea_prompt)
return blog_idea
def blog_post_gen(self, topic, tone_of_voice='Excited', language='En', creativity='Original', model_name='Google Palm 2'):
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':
blog_post_prompt = f"""Write a well organized and attractive blog Plost about the topic delimited by triple backticks.
The tone should be {tone_of_voice}.
```{topic}```."""
blog_post_promptTemp = PromptTemplate(
input_variables=["text_input"],
template="You are a Professional Content Creator and Blog Writer:\n{text_input}\nBlog Post:")
elif language == 'Ar':
blog_post_prompt = f"اكتب مقالة في المدونة حول {topic}."
blog_post_promptTemp = PromptTemplate(
input_variables=["text_input"],
template="أنت مبدع محترف للمحتوى وكاتب للمدوّنات:\n{text_input}\nمقال المدوّنة:")
blog_post_extraction_chain = LLMChain(llm=llm, prompt=blog_post_promptTemp)
blog_post = blog_post_extraction_chain.run(blog_post_prompt)
return blog_post
def blog_tags_gen(self, blog, language='En', creativity='Original', model_name='Google Palm 2'):
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':
blog_tags_desc_prompt = f" Suggest at least 5 tags for the following blog post.\n{blog}"
blog_tags_desc_promptTemp = PromptTemplate(
input_variables=["text_input"],
template="You are my blogger writter\n\n{text_input}\n\nSEO blog post ideas:")
elif language == 'Ar':
blog_tags_desc_prompt = f"اقترح ما لا يقل عن 5 علامات لمنشور المدونة التالي.\n{blog}"
blog_tags_desc_promptTemp = PromptTemplate(
input_variables=["text_input"],
template="أنت كاتب مدونتي\n\n{text_input}\n\nأفكار مقالات مدونة محركات البحث:")
blog_tags_desc_extraction_chain = LLMChain(llm=llm, prompt=blog_tags_desc_promptTemp)
blog_tags_desc = blog_tags_desc_extraction_chain.run(blog_tags_desc_prompt)
return blog_tags_desc |