AI로 유튜브 제목 및 스크립트 자동 생성하는 방법(feat. Langchain, OpenAI, Streamlit)
안녕하세요! 오늘은 Langchain, Streamlit 그리고 OpenAI API를 활용하여 유튜브 제목과 스크립트를 자동으로 생성하는 웹 페이지를 만들어 볼 것입니다. 복잡해 보일 수 있지만, 한 단계씩 차근차근 해보면 생각보다 별게 아닙니다.
시작하기 전에
이 포스팅의 내용을 실제 적용해보시고 싶으시다면 아래의 사전 지식이 필요합니다.
사전 필요 지식
- 파이썬 개발환경과 코딩 지식
- OpenAI API Key
AI로 유튜브 제목 및 스크립트 자동 생성 사이트에 쓰이게 될 라이브러리들에 대해 간략하게 소개드릴게요.
- Langchain : LangChain은 언어 모델을 활용한 애플리케이션 개발을 위한 도구인데요, 이 툴을 이용하면 언어 모델이 주변 환경과 소통하고, 다른 데이터 소스와도 연결할 수 있게 됩니다. LangChain의 가장 큰 장점은 바로 컴포넌트와 사전 제작된 체인(Off-the-shelf chains) 이에요. 컴포넌트란, 언어 모델을 편리하게 활용할 수 있게 도와주는 일종의 빌딩 블록입니다. 이 컴포넌트를 이용하면 LangChain 전체를 사용하지 않더라도, 복잡한 프로그래밍 없이 언어 모델과 쉽게 상호작용할 수 있어요. 사전 제작된 체인은 여러분이 특정 작업을 수행하고자 할 때 도움을 주는 미리 만들어진 툴킷 같은 것입니다. 이를 활용하면 복잡한 작업도 쉽게 시작할 수 있죠. 더 복잡한 작업이 필요하거나 기존의 체인을 맞춤화하고 싶다면, 여러분이 원하는 대로 컴포넌트를 조합하면 됩니다. 이처럼 LangChain은 언어 모델과의 상호작용을 보다 쉽고 효과적으로 만들어주는 훌륭한 도구입니다.
- Streamlit : Streamlit은 데이터 사이언티스트와 엔지니어를 위한 오픈소스 라이브러리로, Python 코드로 웹 애플리케이션을 빠르게 만들 수 있게 도와줍니다. 코드 몇 줄만으로 웹 UI 컴포넌트를 뽑아내고, 간단한 명령어로 웹서버를 실행해서 웹페이지에 보기 좋은 UI로 띄울수가 있습니다.
- OpenAI API : OpenAI에서 제공하는 자연어 처리 AI인 GPT 모델을 활용할 수 있게 해주는 API입니다.
구현 코드
아래에 제공된 코드는 위에서 언급한 도구들을 사용하여 웹 페이지를 구현하는 코드입니다.
- 이 컨텐츠는 Nicholas Renotte 라는 유튜버의 영상의 내용을 참고하였습니다.
- 코드는 그의 깃허브에서 확인하실 수 있습니다.
주의 : 아래 코드는 구글 Colab에서는 작동하지 않습니다.
import os
from apikey import API_KEY
import streamlit as st
from langchain.llms import OpenAI
from langchain.prompts import PromptTemplate
from langchain.chains import LLMChain, SequentialChain
from langchain.memory import ConversationBufferMemory
from langchain.utilities import WikipediaAPIWrapper
os.environ['OPENAI_API_KEY'] = API_KEY
# title and basic UI
st.title('YouTube Title & Script 생성기 :astronaut: ')
prompt = st.text_input('생성할 주제를 입력하세요.')
# Prompt templates
title_template = PromptTemplate(
input_variables=['topic'],
template='write me a youtube video title about {topic}'
)
script_template = PromptTemplate(
input_variables=['title', 'wikipedia_research'],
template='write me youtube video script based on this title TITLE : {title} while leveraging this wikipedia research:{wikipedia_research}'
)
# Memory
title_memory = ConversationBufferMemory(
input_key='topic', memory_key='chat_history')
script_memory = ConversationBufferMemory(
input_key='title', memory_key='chat_history')
# llms
llm = OpenAI(temperature=0.5)
title_chain = LLMChain(llm=llm, prompt=title_template,
verbose=True, output_key='title', memory=title_memory)
script_chain = LLMChain(llm=llm, prompt=script_template,
verbose=True, output_key='script', memory=script_memory)
wiki = WikipediaAPIWrapper()
# Show stuff to the screen if there's prompt
if prompt:
title = title_chain.run(prompt)
wiki_research = wiki.run(prompt)
script = script_chain.run(title=title, wikipedia_research=wiki_research)
st.write(title)
st.write(script)
with st.expander('Title History'):
st.info(title_memory.buffer)
with st.expander('Script History'):
st.info(script_memory.buffer)
with st.expander('Wikipedia Research'):
st.info(wiki_research)
코드 설명
- 먼저, 필요한 모듈들을 불러옵니다. OpenAI의 API 키도 설정해줍니다.
- Streamlit을 활용해 웹페이지의 기본 UI를 구성합니다. 여기에서는 제목과 텍스트 입력창을 만듭니다.
- Langchain의 PromptTemplate을 이용하여 제목과 스크립트 생성에 사용할 템플릿을 설정합니다.
- ConversationBufferMemory를 사용해 대화 이력을 저장합니다.
- OpenAI API를 불러와 LLMChain을 구성합니다. 이를 통해 제목과 스크립트를 생성합니다.
- WikipediaAPIWrapper를 이용해 해당 주제에 대한 위키백과 정보를 가져옵니다.
- 사용자가 텍스트를 입력하면, 그에 따른 제목과 스크립트, 그리고 관련 위키백과 정보를 화면에 출력합니다.
결과 확인
이제 웹 페이지를 실행해 보겠습니다.
원하는 주제를 입력하면, AI가 그에 맞는 유튜브 제목과 스크립트를 생성해 줍니다. 또한, 생성 과정에서 사용된 위키백과 정보와 대화 이력도 확인할 수 있습니다. AI를 활용한 컨텐츠 생성이 어떻게 이루어지는지 실시간으로 확인하실 수 있습니다.
이처럼 아주 간단한 코드로 openai api의 결과를 연결하고, 메모리를 사용해 결과를 저장하고, 내장된 프롬프트로 사용자의 간단한 요구를 충족 시킬 수 있는 서비스를 만들 수 있습니다.
아래에 있는 expander를 열어보면 내용이 나옵니다.
어떤가요?
이러한 방식을 통해 AI를 활용하여 다양한 주제의 유튜브 콘텐츠를 만드는 툴을 손쉽게 만들수가 있습니다. 이 포스팅이 여러분에게 도움이 되었으면 좋겠네요. 다양한 주제와 다른 방식으로 테스트해보며, 더욱 효과적인 방법을 찾아보세요!
좋은 아이디어가 있으시다면 댓글로 공유해주시고, 유용한 정보라고 생각되신다면 좋아요와 구독 부탁드립니다. 다음 포스트에서 만나요!
#LangChain활용법#AI스크립트작성#유튜브스크립트자동생성#인공지능코딩#AI어플리케이션개발#머신러닝프로그래밍#딥러닝텍스트분석#LangChain과OpenAI#자연어처리프레임워크#데이터사이언스활용#AI유튜브스크립트#LangChain프로그래밍#LangChain#언어모델#AI#OpenAI#데이터분석#컴퓨터과학#인공지능#프로그래밍#머신러닝#딥러닝#코딩#데터사이언스#프레임워크#애플리케이션개발#빅데이터#텍스트분석#자연어처리#개발도구#AI기술#LangChain활용