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