YouTube動画とチャットできるRAGアプリを作ろう!【Pythonで30行以下のコード】
1. はじめに
YouTube動画と会話できるAIアプリ、面白そうですよね?「RAG (Retrieval-Augmented Generation)」と「GPT-4」を活用することで、たった30行のPythonコードでYouTube動画の内容について質問し、応答できるアプリを構築する方法を紹介します。このアプリでは、動画内容をテキスト化して「Embedchain」を使って保存し、質問に答えることが可能です。Python初心者から中級者向けで、サクサク構築できるようステップバイステップで解説します!
2. プロジェクト概要
このプロジェクトでは、YouTube動画のURLを入力し、その動画内容について質問を投げかけると、的確な回答が得られるアプリを作ります。アプリは、Pythonの「Streamlit」を利用してシンプルなユーザーインターフェースを提供し、「Embedchain」を使って動画データを埋め込みベースで保存・検索します。
使用する技術
RAG(Retrieval-Augmented Generation)
GPT-4
Embedchain
Streamlit
主な機能
YouTube動画のURL入力
質問入力
回答出力
3. 必要な準備
アプリ構築に必要な準備物を確認しましょう。これらが揃っていれば、構築がスムーズに進みます!
Python: バージョン3.7以上を推奨
APIキー: OpenAI APIキーが必要
コードエディタ: VS CodeまたはPyCharmが便利
GitHubリポジトリのクローン: 必要なコードと設定を含むリポジトリを取得
GitHubからリポジトリをクローンするには、以下のコマンドを使用します。
git clone https://github.com/Shubhamsaboo/awesome-llm-apps.git
4. 環境設定
アプリを動かすための環境を整えます。リポジトリをクローンしたら、以下の手順で設定を行いましょう。
4.1 リポジトリ内のフォルダへ移動
cd chat_with_youtube_videos
4.2 必要なライブラリのインストール
pip install -r requirements.txt
4.3 OpenAI APIキーの取得
OpenAIのアカウントを作成し、APIキーを取得しておきましょう。
5. Streamlitアプリの作成
ここでは、Streamlitを使ったWebアプリの構築方法を紹介します。Pythonでシンプルにユーザーインターフェースを構築でき、手軽にビデオチャットアプリが作成可能です。
5.1 必要なライブラリのインポート
まず、chat_youtube.pyというファイルを作成し、次のライブラリをインポートします。
import tempfile
import streamlit as st
from embedchain import App
5.2 アプリの初期設定
「Embedchain App」を構成し、GPT-4を使ったRAG機能と、オープンソースのChroma DBを使用します。
def embedchain_bot(db_path, api_key):
return App.from_config(
config={
"llm": {"provider": "openai", "config": {"model": "gpt-4o", "temperature": 0.5, "api_key": api_key}},
"vectordb": {"provider": "chroma", "config": {"dir": db_path}},
"embedder": {"provider": "openai", "config": {"api_key": api_key}},
}
)
6. YouTubeビデオとのチャット機能の実装
ユーザーが入力したYouTube動画URLから、動画内容をEmbedchainに追加し、質問に応答する機能を追加します。
6.1 ユーザーインターフェースの設定
StreamlitでアプリのタイトルとAPIキー入力栏を設置します。
st.title("Chat with YouTube Video 📺")
st.caption("This app allows you to chat with a YouTube video using OpenAI API")
openai_access_token = st.text_input("OpenAI API Key", type="password")
6.2 動画URLの取得と追加
ユーザーが入力したYouTube動画URLをEmbedchainに追加します。
if openai_access_token:
db_path = tempfile.mkdtemp()
app = embedchain_bot(db_path, openai_access_token)
video_url = st.text_input("Enter YouTube Video URL", type="default")
if video_url:
app.add(video_url, data_type="youtube_video")
st.success(f"Added {video_url} to knowledge base!")
6.3 質問の受付と回答の表示
質問を入力すると、その質問に対してEmbedchainが回答を生成します。
prompt = st.text_input("Ask any question about the YouTube Video")
if prompt:
answer = app.chat(prompt)
st.write(answer)
7. アプリの実行
構築したコードを実行して、アプリを動作させましょう!
7.1 実行コマンド
ターミナルで次のコマンドを実行すると、ローカル環境でアプリが立ち上がります。
streamlit run chat_youtube.py
ブラウザで「http://localhost:8501」にアクセスし、APIキーとYouTube動画URLを入力すれば準備完了です。質問を入力すると、AIが動画の内容について回答してくれます!
8. 実用例と次のステップ
ここまでで基本的な機能が完成しましたが、更に便利にするための次のステップも考えてみましょう。
複数動画のサポート: 複数のYouTube動画をデータベースに追加し、質問に応じて適切な動画から回答する機能を追加
精度向上のための検索技術の追加: より正確な検索ができるように、埋め込みベースの検索技術を強化
他のデータソースとの組み合わせ: PDFやウェブページなど、YouTube以外のデータにも対応可能にする
9. まとめ
このプロジェクトでは、RAGとGPT-4、Embedchainを活用して、YouTube動画とチャットできるアプリを構築しました。たった30行のPythonコードで、動画内容を解析し、質問に答えるインタラクティブなアプリが完成しましたね!
さらなる改良を加えながら、自分だけのスマートなAIアシスタントを作ってみてください。新しい機能を追加していくことで、AIの可能性をさらに引き出すことができます。ぜひ、チュートリアルを参考に、あなただけのAIアプリを作り上げてください!