AI Generatif untuk Analisis Video dengan Vertex AI

1. Pengantar

Pelajari cara menganalisis penayangan video Influencer di YouTube tentang perusahaan atau produk apa pun menggunakan kemampuan AI Generatif Google.

Dengan munculnya LLM yang memanfaatkan insight dari berbagai sumber seperti neraca keuangan, penayangan di platform media sosial, dan opini influencer, semuanya menjadi lebih mudah.

Influencer media sosial, terutama di dunia Teknologi & Keuangan, semakin dianggap sebagai pendukung utama produk & kebijakan organisasi atau pesaingnya.

Yang akan Anda build

Dalam codelab ini, Anda akan mempelajari cara menggabungkan model PaLM2 di VertexAI dan Langchain untuk solusi analisis influencer YouTube.

Lingkungan

Buka https://colab.research.google.com/#create=true untuk membuat notebook baru di lingkungan sandbox Google Colab.

2. Menginstal paket dan melakukan autentikasi

Di sel pertama dalam notebook baru, gunakan perintah ini untuk menginstal paket yang diperlukan.

!pip install google-cloud-aiplatform
!pip install langchain
!pip install chromadb
!pip install pytube
!pip install youtube-transcript-api
!pip install gradio
from google.cloud import aiplatform

Anda akan diminta untuk memulai ulang mesin runtime setelah menginstal paket di atas. Klik MULAI ULANG RUNTIME atau pilih Mulai ulang runtime dari menu Runtime.

Mengautentikasi akun Google Cloud Anda

Akun Anda harus memiliki peran Vertex AI user.

  • Buka Konsol Google Cloud dan telusuri layanan IAM and Admin. Di tab PERMISSIONS di bagian VIEW BY PRINCIPALS, pilih GRANT ACCESS. Masukkan / pilih akun utama Anda, lalu tambahkan peran "Vertex AI User" dan SIMPAN, seperti yang ditunjukkan pada gambar di bawah:

c6d26238f3d57a45.png

Sekarang, kembali ke tab colab dan masukkan cuplikan kode di bawah di sel kedua dalam file kerja saat ini. Tindakan ini akan memeriksa autentikasi.

from google.colab import auth as google_auth
google_auth.authenticate_user()

Anda akan diminta untuk mengizinkan akses. Terus lakukan hal tersebut.

3. Menginisialisasi dan mengimpor

Inisialisasi project Anda dengan memasukkan cuplikan di bawah ini di sel berikutnya.

import vertexai
PROJECT_ID = "<projectid>" #enter your project id here
vertexai.init(project=PROJECT_ID)

Mengimpor library untuk solusi

Gunakan perintah ini untuk mengimpor library yang diperlukan.

from langchain.document_loaders import YoutubeLoader
from langchain.text_splitter import RecursiveCharacterTextSplitter
from langchain.vectorstores import Chroma
from langchain.chains import RetrievalQA
from langchain.llms import VertexAI

Melakukan inisialisasi model LLM Vertex AI

Gunakan cuplikan kode ini untuk menginisialisasi model LLM Vertex AI. Kode ini menginisialisasi "llm" dengan model Text-Bison dari Vertex AI.

!python3 -m pip install langchain

llm = VertexAI(
model_name="text-bison@001",
max_output_tokens=256,
temperature=0.1,
top_p=0.8,
top_k=40,
verbose=True,
)

4. Memulai embedding

Kita akan menggunakan embedding Vertex AI untuk mengonversi potongan video menjadi embedding. Di bagian kode ini, kita hanya akan menginisialisasi objek sematan. Di bagian penyimpanan dan pengambilan, kita akan menerapkan sematan ke potongan yang dibuat dari video.

Chunking dalam AI generatif adalah proses memecah konten besar menjadi potongan-potongan yang lebih kecil dan mudah dikelola atau 'chunk'. Hal ini dilakukan karena model AI generatif memiliki batasan jumlah data yang dapat diproses sekaligus. Dengan membagi data menjadi beberapa bagian, model dapat berfokus pada satu bagian dalam satu waktu dan menghasilkan output yang lebih akurat dan koheren.

Embedding adalah cara untuk merepresentasikan konten sebagai vektor angka. Hal ini memungkinkan komputer memahami makna data dengan cara yang lebih canggih daripada metode tradisional, seperti deteksi bidikan atau ekstraksi keyframe, jika untuk video dan bag-of-words, jika untuk data bahasa.

from langchain.embeddings import VertexAIEmbeddings

# Embedding
EMBEDDING_QPM = 100
EMBEDDING_NUM_BATCH =5
embeddings = VertexAIEmbeddings(
    requests_per_minute=EMBEDDING_QPM,
    num_instances_per_batch=EMBEDDING_NUM_BATCH,
)

5. Memuat dan membagi video

Muat video yang akan diringkas atau yang akan diajukan pertanyaannya.

loader = YoutubeLoader.from_youtube_url("https://www.youtube.com/watch?v=A8jyW_6hCGU&t=161s", add_video_info=True)
result = loader.load()

Pisahkan video

Pisahkan video menjadi beberapa bagian menggunakan teknik pemisah Karakter Rekursif.

text_splitter = RecursiveCharacterTextSplitter(chunk_size=1500, chunk_overlap=0)
docs = text_splitter.split_documents(result)
print(f"# of documents = {len(docs)}")

6. Menyimpan dan mengambil

Menyimpan dokumen Anda

Untuk latihan ini, kita menggunakan ChromaDB. Anda juga dapat menggunakan Vertex AI Vector Search. Simpan dokumen Anda dan indeks di ChromaDB sebagai penyimpanan vektor. ChromaDB digunakan untuk menyimpan dan mengambil embedding vektor untuk digunakan dengan LLM dan untuk melakukan penelusuran semantik atas data.

db = Chroma.from_documents(docs, embeddings)
retriever = db.as_retriever(search_type="similarity", search_kwargs={"k": 2})

Membuat rantai pengambilan

Buat rantai pengambilan untuk menjawab pertanyaan. Di sinilah kita mengaitkan LLM model Text Bison Vertex AI dan retriever yang mengambil embedding dari Chroma DB.

qa = RetrievalQA.from_chain_type( llm=llm, chain_type="stuff", retriever=retriever, return_source_documents=True)

7. Tentukan perintah Anda

Tentukan perintah Anda untuk mengajukan pertanyaan dan mendapatkan jawaban dari konten yang diindeks.

def sm_ask(question, print_results=True):
  video_subset = qa({"query": question})
  context = video_subset
  prompt = f"""
  Answer the following question in a detailed manner, using information from the text below. If the answer is not in the text,say I dont know and do not generate your own response.

  Question:
  {question}
  Text:
  {context}

  Question:
  {question}

  Answer:
  """
  parameters = {
  "temperature": 0.1,
  "max_output_tokens": 256,
  "top_p": 0.8,
  "top_k": 40
  }
  response = llm.predict(prompt, **parameters)
  return {
  "answer": response

  }

8. Mengintegrasikan aplikasi LLM

Integrasikan aplikasi LLM dengan Gradio untuk interaksi front end visual.

import gradio as gr
def get_response(input_text):
  response = sm_ask(input_text)
  return response

grapp = gr.Interface(fn=get_response, inputs="text", outputs="text")
grapp.launch()

9. Menguji solusi

Sekarang, mari kita lanjutkan untuk menguji solusi. Jalankan sel yang berisi kode di atas. Lihat UI di hasil sel atau klik link yang dibuat. Anda akan dapat memvisualisasikan antarmuka dengan komponen input-output. Masukkan pertanyaan di video dan lihat respons model.

825c38058aab0aae.png

Dengan demikian, kita kini dapat mengintegrasikan video YouTube dan menganalisisnya menggunakan model Vertex AI PaLM API. Anda dapat memperluasnya lebih lanjut untuk berintegrasi dengan database atau data warehouse. Lihat dokumentasi produk LLM Vertex AI untuk mempelajari lebih lanjut model yang tersedia.

10. Selamat!

Selamat! Anda telah berhasil menggunakan LLM Pembuatan Teks Vertex AI secara terprogram untuk melakukan analisis teks pada data Anda hanya menggunakan kueri SQL. Lihat dokumentasi produk LLM Vertex AI untuk mempelajari lebih lanjut model yang tersedia.