見出し画像

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アプリを作り上げてください!

いいなと思ったら応援しよう!