Spaces:
Runtime error
Runtime error
| import streamlit as st | |
| from langchain.chains import LLMChain, SimpleSequentialChain | |
| from langchain.memory import SimpleMemory | |
| from langchain.prompts import PromptTemplate | |
| from langchain.chat_models import ChatOpenAI | |
| from langchain_google_genai import ChatGoogleGenerativeAI | |
| def generate_event_name(topic, audience, benefit): | |
| # Initialize the LLM with GPT-4 chat model | |
| llm = ChatOpenAI(model="gpt-4", openai_api_key=st.secrets["OPENAI_API_KEY"]) | |
| # llm = ChatGoogleGenerativeAI(model="gemini-pro", google_api_key=st.secrets["GOOGLE_API_KEY"]) | |
| # Define the template for generating the event name | |
| event_name_template = ( | |
| "Generate an event name that combines the topic:{topic},audience:{audience}, and benefit: {benefit}. " | |
| "The format should be ‘[Masterclass/Workshop/Bootcamp] on [topic] for [audience] to [benefit]’. " | |
| "Make sure the name is engaging and highlights the value." | |
| ) | |
| # Format the event name template using PromptTemplate | |
| event_name_prompt = PromptTemplate(template=event_name_template).format( | |
| topic=topic, | |
| audience=audience, | |
| benefit=benefit | |
| ) | |
| # Generate the event name using the LLM | |
| event_name_response = llm.invoke(event_name_prompt) | |
| # Return the generated event name | |
| return event_name_response.content | |
| def ai_generated_content(topic, audience, benefit, date_time, event_name): | |
| # Initialize the LLM and memory | |
| # llm = OpenAI(model="gpt-4",openai_api_key=st.secrets["OPENAI_API_KEY"]) | |
| llm = ChatOpenAI( | |
| model="gpt-4", | |
| openai_api_key=st.secrets["OPENAI_API_KEY"] # Fetch API key from Streamlit secrets | |
| ) | |
| # llm = ChatGoogleGenerativeAI(model="gemini-pro", google_api_key=st.secrets["GOOGLE_API_KEY"]) | |
| # hero-section headline | |
| # Define the template for the headline section | |
| # Break down the benefit into immediate benefit and major goal | |
| immediate_benefit = f"quickly {benefit.lower()}" # Assume a quick win as the immediate benefit | |
| major_goal = f"achieve long-term {benefit.lower()}" # Assume a more significant goal as the major benefit | |
| headline_template = ( | |
| f"Generate a concise and engaging headline in the following format: " | |
| f"MASTER {topic} IN 30 Days USING Proven Strategies TO {immediate_benefit} " | |
| f"AND FINALLY {major_goal}, GUARANTEED!" | |
| ) | |
| # Format the headline template using PromptTemplate | |
| headline_prompt = PromptTemplate(template=headline_template).format( | |
| topic=topic, | |
| immediate_benefit=immediate_benefit, | |
| major_goal=major_goal | |
| ) | |
| # Generate the response using the LLM | |
| headline_response = llm.invoke(headline_prompt) | |
| # hero -section sub-headline_prompt | |
| subheadline_template = ( | |
| f"Generate a subheading that reassures the user they don’t need any prior " | |
| f"knowledge in {topic} or experience in achieving {benefit}. The " | |
| f"format should be ‘WITHOUT ANY PRIOR {topic}-RELATED SKILLS OR EXPERIENCE’. " | |
| ) | |
| # Format the subheadline template using PromptTemplate | |
| subheadline_prompt = PromptTemplate(template=subheadline_template).format( | |
| topic=topic, | |
| benefit=benefit | |
| ) | |
| # Generate the response using the LLM | |
| subheadline_response = llm.invoke(subheadline_prompt) | |
| # hero section price | |
| price_statement_template = ( | |
| f"Generate a short value statement that combines the outcome " | |
| f"The format should be: " | |
| f"‘Become an advanced {topic} expert in Rs.1999.’ Use language that emphasizes the low cost for high-value results." | |
| ) | |
| # Format the price statement template using PromptTemplate | |
| price_statement_prompt = PromptTemplate(template=price_statement_template).format( | |
| topic=topic, | |
| ) | |
| # Generate the response using the LLM | |
| price_statement_response = llm.invoke(price_statement_prompt) | |
| # Define the template for the primary CTA button based on the PDF reference | |
| cta_button_template = ( | |
| f"Generate a call-to-action button text that encourages users to take immediate " | |
| f"action, focusing on urgency and the value they will receive. The format should be " | |
| f"bold and action-oriented.eg ‘Become a Certified {topic} Expert Now!’." | |
| ) | |
| # Define the template for the offer validity or urgency statement based on the PDF reference | |
| urgency_statement_template = ( | |
| f"Write a short statement that creates urgency for the offer (e.g., ‘Offer Valid Only " | |
| f"For Today’ or ‘Limited Slots Available’). The tone should be urgent but reassuring." | |
| ) | |
| # Format the CTA button and urgency statement using PromptTemplate | |
| cta_button_prompt = PromptTemplate(template=cta_button_template).format( | |
| topic=topic | |
| ) | |
| urgency_statement_prompt = PromptTemplate(template=urgency_statement_template).format() | |
| # Generate the responses using the LLM | |
| cta_button_response = llm.invoke(cta_button_prompt) | |
| urgency_statement_response = llm.invoke(urgency_statement_prompt) | |
| # Define the template for the benefits section with the specific format | |
| benefits_template = ( | |
| "List 6 benefits of {topic} for {audience}. Each benefit should be written in the format: " | |
| "‘[Mini-Headline]: [Detailed Benefit Description].’ The mini-headline should highlight a key feature like a number or " | |
| "a unique aspect of the {topic}, and the detailed benefit should explain the value or outcome in a single line." | |
| ) | |
| # Format the benefits template using PromptTemplate | |
| benefits_prompt = PromptTemplate(template=benefits_template).format( | |
| topic=topic, | |
| audience=audience | |
| ) | |
| # Generate the benefits using the LLM | |
| benefits_response = llm.invoke(benefits_prompt) | |
| # Split the benefits into individual lines | |
| benefits = benefits_response.content | |
| # Return the generated headline | |
| return {"headline": headline_response.content, | |
| "subheadline":subheadline_response.content, | |
| "price_statement": price_statement_response.content, | |
| "cta_button": cta_button_response.content, | |
| "urgency_statement": urgency_statement_response.content, | |
| "benefits":benefits | |
| } | |
| def generate_first_person_benefits(benefits): | |
| # Initialize the LLM with GPT-4 chat model | |
| llm = ChatOpenAI(model="gpt-4", openai_api_key=st.secrets["OPENAI_API_KEY"]) | |
| # llm = ChatGoogleGenerativeAI(model="gemini-pro", google_api_key=st.secrets["GOOGLE_API_KEY"]) | |
| # Define the prompt template | |
| prompt_template = """ | |
| Rephrase the following benefits in the first-person point of view. | |
| Make the statements sound needy, focusing on personal challenges, goals, or desires. | |
| The output should use varied sentence structures, but all should reflect a sense of urgency or a strong personal need. | |
| Benefits: | |
| {benefits} | |
| Rephrased Benefits (in First-Person): | |
| """ | |
| # Prepare the prompt using the benefits text | |
| prompt = PromptTemplate(template=prompt_template).format(benefits=benefits) | |
| # Generate the response using the LLM | |
| response = llm.invoke(prompt) | |
| # Return the rephrased benefits as a list by splitting them by new lines | |
| return response.content | |
| def what_if_told_you(topic,audience,key_benefits): | |
| llm = ChatOpenAI(model="gpt-4", openai_api_key=st.secrets["OPENAI_API_KEY"]) | |
| prompt_template = """ | |
| WHAT IF I TOLD YOU… | |
| Imagine being able to {key_benefits}, and doing all of this with ease, even if you have no prior experience in {topic}. YES, it’s that simple, and it's specifically designed for {audience} like you! | |
| Join The LIVE {topic} Workshop Tailored For {audience}! | |
| """ | |
| prompt = PromptTemplate(template=prompt_template).format(key_benefits=key_benefits,topic=topic,audience=audience) | |
| # Generate the response using the LLM | |
| response = llm.invoke(prompt) | |
| # Return the rephrased benefits as a list by splitting them by new lines | |
| return response.content | |
| def generate_bonuses_llm(benefits): | |
| llm = ChatOpenAI(model="gpt-4", openai_api_key=st.secrets["OPENAI_API_KEY"]) | |
| # Define the prompt template | |
| prompt_template = """ | |
| Based on the following benefits, create 4 bonuses that align with these benefits. Each bonus should be a digital product with a title, a short description, and an estimated value in INR (Indian Rupees). | |
| Benefits: | |
| {benefits} | |
| Format: | |
| Bonus 1 | |
| Title: [Title of the bonus] | |
| Description: [Short description of what the bonus offers] | |
| Value: [Estimated value in INR] | |
| Bonus 2 | |
| Title: [Title of the bonus] | |
| Description: [Short description of what the bonus offers] | |
| Value: [Estimated value in INR] | |
| Bonus 3 | |
| Title: [Title of the bonus] | |
| Description: [Short description of what the bonus offers] | |
| Value: [Estimated value in INR] | |
| Bonus 4 | |
| Title: [Title of the bonus] | |
| Description: [Short description of what the bonus offers] | |
| Value: [Estimated value in INR] | |
| """ | |
| # Format the prompt with the provided benefits | |
| formatted_prompt = PromptTemplate(template=prompt_template).format(benefits=benefits) | |
| # Generate the bonuses using the LLM | |
| response = llm.invoke(formatted_prompt) | |
| return response.content | |
| def generate_appreciative_testimonials_llm(benefits): | |
| # Initialize the LLM | |
| llm = ChatOpenAI(model="gpt-4", openai_api_key=st.secrets["OPENAI_API_KEY"]) | |
| # Define the prompt template | |
| prompt_template = """ | |
| Based on the following benefits of a course, generate 4 realistic and natural-sounding testimonials that appreciate the instructor and highlight how helpful the course was. Avoid using the exact benefits in the statements. Instead, focus on the positive experience, the quality of teaching, and the practical impact of the course. | |
| Benefits: | |
| {benefits} | |
| Generate the testimonials separated by newline characters: | |
| """ | |
| # Format the prompt with the provided benefits | |
| formatted_prompt = PromptTemplate(template=prompt_template).format(benefits=benefits) | |
| # Generate the testimonials using the LLM | |
| response = llm.invoke(formatted_prompt) | |
| return response.content | |
| def generate_workshop_audience_llm(benefits,topic): | |
| # Initialize the LLM | |
| llm = ChatOpenAI(model="gpt-4", openai_api_key=st.secrets["OPENAI_API_KEY"]) | |
| # Define the prompt template | |
| prompt_template = """ | |
| Based on the following benefits of a course on {topic}, generate a section for "Who is this Workshop For?" including a headline and a bulleted list of 16 audience types who would benefit from the workshop. Only include the audience types, no descriptions. | |
| Benefits: | |
| {benefits} | |
| Format: | |
| Headline: | |
| [Write a headline that introduces the target audience for the workshop] | |
| Audience List: | |
| Generate the audience list separated by newline characters: | |
| """ | |
| # Format the prompt with the provided benefits | |
| formatted_prompt = PromptTemplate(template=prompt_template).format(benefits=benefits,topic=topic) | |
| # Generate the audience section using the LLM | |
| response = llm.invoke(formatted_prompt) | |
| return response.content | |
| def generate_workshop_faqs_llm(benefits,topic): | |
| # Initialize the LLM | |
| llm = ChatOpenAI(model="gpt-4", openai_api_key=st.secrets["OPENAI_API_KEY"]) | |
| # Define the prompt template | |
| prompt_template = """ | |
| Based on the following benefits of a course on {topic}, generate 6 frequently asked questions (FAQs) along with their answers for a workshop. The FAQs should be relevant to the target audience and address common concerns, providing clear and concise responses. | |
| Benefits: | |
| {benefits} | |
| Format for FAQs: | |
| FAQ 1: | |
| Q: [Question] | |
| A: [Answer] | |
| FAQ 2: | |
| Q: [Question] | |
| A: [Answer] | |
| Continue for a total of 6 FAQs. | |
| """ | |
| # Format the prompt with the provided benefits | |
| formatted_prompt = PromptTemplate(template=prompt_template).format(benefits=benefits,topic=topic) | |
| # Generate the FAQs using the LLM | |
| response = llm.invoke(formatted_prompt) | |
| return response.content | |
| def generate_workshop_details(topic, audience, benefit, date_time): | |
| if not (topic and audience and benefit and date_time): | |
| return "All details are required to generate the workshop information." | |
| # Generate the event name using the model | |
| event_name = generate_event_name(topic, audience, benefit) | |
| details = ai_generated_content(topic, audience, benefit, date_time,event_name) | |
| details["event_name"] = event_name | |
| details['first_person_benefits'] = generate_first_person_benefits(details['benefits']) | |
| details['What_if'] = what_if_told_you(topic,audience,details['benefits']) | |
| details['bonuses'] = generate_bonuses_llm(details['benefits']) | |
| details['testimonials'] = generate_appreciative_testimonials_llm(details['benefits']) | |
| details['audience_list'] = generate_workshop_audience_llm(details['benefits'],topic) | |
| details['faqs'] = generate_workshop_faqs_llm(details['benefits'],topic) | |
| return details | |