Spaces:
Runtime error
Runtime error
import os | |
import streamlit as st | |
from langchain.llms import OpenAI | |
from langchain.prompts import PromptTemplate | |
from langchain.chains import LLMChain | |
from langchain.memory import ConversationBufferMemory | |
from langchain.utilities import WikipediaAPIWrapper | |
st.title("YouTube Context Explorer") | |
prompt = st.text_input("Plug in your YouTube topic here") | |
# Prompt Templates [Title] | |
title_template = PromptTemplate( | |
input_variables=["topic"], | |
template="""Given the topic {topic}, you are tasked with generating five engaging content suggestions | |
for a YouTuber in less than 20 words. Use your expertise in content creation to propose ideas that are captivating and | |
suitable for a wide audience, ensuring each suggestion is distinct and offers a unique perspective or | |
approach to the topic. | |
""", | |
) | |
# Prompt Templates [Script] | |
script_template = PromptTemplate( | |
input_variables=["title", "tags", "wikipedia_research"], | |
template="""You are a specialist in crafting engaging scripts for YouTubers. Given the title {title} | |
and incorporating the keywords/tags {tags}, while leveraging this wikipedia reserch:{wikipedia_research}, | |
your focus is to initiate the script with the most captivating aspects while maintaining a friendly tone throughout. | |
Your expertise lies in creating content optimized for 5-minute or700 words long videos.""", | |
) | |
# | |
llm = OpenAI(temperature=0.5) | |
title_chain = LLMChain(llm=llm, prompt=title_template, output_key="title", verbose=True) | |
script_chain = LLMChain( | |
llm=llm, prompt=script_template, output_key="script", verbose=True | |
) | |
wiki = WikipediaAPIWrapper() | |
# Initialize session state variables | |
if "selected_title" not in st.session_state: | |
st.session_state.selected_title = None | |
if "wiki_research" not in st.session_state: | |
st.session_state.wiki_research = None | |
if "tags" not in st.session_state: | |
st.session_state.tags = None | |
if "titles" not in st.session_state: | |
st.session_state.titles = [] | |
if prompt: | |
# Check if the titles need to be regenerated | |
if not st.session_state.titles or (st.session_state.get("last_prompt") != prompt): | |
title_suggestions = title_chain(prompt) | |
st.session_state.titles = title_suggestions["title"].split("\n")[1:] | |
st.session_state.last_prompt = prompt | |
st.session_state.selected_title = st.radio( | |
"Select a title:", st.session_state.titles | |
) | |
st.write(f"You selected: {st.session_state.selected_title}") | |
tags = st.text_input("Enter tags (comma separated):") or "No tags provided." | |
if st.button("Submit"): | |
if st.session_state.selected_title: | |
wiki_research = wiki.run(st.session_state.selected_title) | |
tags = tags or "No tags provided." | |
script = script_chain.run( | |
{ | |
"title": st.session_state.selected_title, | |
"tags": tags, | |
"wikipedia_research": wiki_research, | |
} | |
) | |
st.write(script) | |