AI Generatif untuk Analisis Video dengan Vertex AI

1. Pengantar

Pelajari cara menganalisis pandangan Inluencer di YouTube terhadap perusahaan atau produk mana pun menggunakan kemampuan AI Generatif Google.

Dengan munculnya LLM yang memanfaatkan insight dari berbagai sumber seperti neraca, pandangan di platform media sosial, opini influencer menjadi semakin mudah.

{i>Influencer <i}media sosial, terutama di bidang IT Dunia keuangan semakin dipandang sebagai pendukung utama suatu organisasi atau kompetitornya produk & kebijakan izin yang relevan.

Yang akan Anda build

Dalam codelab ini, Anda akan mempelajari bagaimana model PaLM2 di VertexAI dan Langchain bekerja sama 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 mengautentikasi

Pada sel pertama di 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 memulai ulang mesin runtime setelah menginstal paket di atas. Klik RESTART RUNTIME atau pilih Mulai ulang runtime dari menu Runtime.

Autentikasi akun Google Cloud Anda

Akun Anda harus memiliki peran pengguna Vertex AI.

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

c6d26238f3d57a45.png

Sekarang kembali ke tab colab dan masukkan cuplikan kode di bawah ini ke sel kedua di {i>file<i} yang berfungsi saat ini. Tindakan ini akan memeriksa autentikasi.

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

Anda akan diminta mengizinkan akses. Lanjutkan untuk melakukannya.

3. Melakukan inisialisasi dan impor

Inisialisasi project Anda dengan memasukkan cuplikan di bawah ke 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 melakukan inisialisasi model LLM Vertex AI. Perintah ini akan melakukan inisialisasi "llm" dengan model Text-Bison 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 penyematan

Kita akan menggunakan embedding Vertex AI untuk mengonversi potongan video menjadi embedding. Di bagian kode ini, kita hanya akan melakukan inisialisasi objek embeddings. Di bagian store and retrieve, kita akan menerapkan embeddings ke potongan yang dibuat dari video.

Pemotongan dalam AI generatif adalah proses memecah konten besar menjadi bagian atau 'bagian' yang lebih kecil dan dapat dikelola. Hal ini dilakukan karena model AI generatif memiliki batasan jumlah data yang dapat diproses sekaligus. Dengan memotong data, model dapat fokus pada satu per satu potongan data dan menghasilkan output yang lebih akurat dan koheren.

Embeddings adalah cara untuk menampilkan 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 tas kata, 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 memotong video

Muat video yang akan diringkas atau 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

Bagi 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, kami 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 pada data.

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

Membuat rantai retriever

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

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

7. Menentukan 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

Mengintegrasikan 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 harus dapat memvisualisasikan antarmuka dengan komponen input-output. Masukkan pertanyaan tentang video dan lihat respons model.

825c38058aab0aae.pngS

Dengan ini, kami kini dapat mengintegrasikan video YouTube dan menganalisisnya menggunakan model PaLM API Vertex AI. Anda dapat memperluas hal ini untuk diintegrasikan 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 Vertex AI Text Generation 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.