Persona-postgenerator / post_generator.py
Deaksh's picture
Update post_generator.py
fc37a0d verified
from llm_helper import llm
from few_shot import FewShotPosts
def get_length_str(length):
if length == "Short":
return "1 to 5 lines"
if length == "Medium":
return "6 to 10 lines"
if length == "Long":
return "11 to 15 lines"
def generate_post(persona_name, length, language, tag):
"""Generate a LinkedIn post based on persona and given criteria."""
# Create an instance of FewShotPosts with the persona name
few_shot = FewShotPosts(persona_name)
# Pass the instance to get_prompt
prompt = get_prompt(few_shot, length, language, tag)
response = llm.invoke(prompt)
return response.content
def get_prompt(few_shot_instance, length, language, tag):
"""Generate the prompt for LLM based on few-shot examples."""
length_str = get_length_str(length)
prompt = f'''
Generate a LinkedIn post using the below information. No preamble.
1) Topic: {tag}
2) Length: {length_str}
3) Language: {language}
The script for the generated post should always be English.
'''
# βœ… Fix: Call get_filtered_posts() on few_shot_instance, not module `few_shot`
examples = few_shot_instance.get_filtered_posts(length, language, tag)
if len(examples) > 0:
prompt += "4) Use the writing style as per the following examples."
for i, post in enumerate(examples):
post_text = post['text']
prompt += f'\n\n Example {i+1}: \n\n {post_text}'
if i == 1: # Use max two samples
break
return prompt