Spaces:
Running
Running
| 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 | |