使用 Vertex AI 进行视频分析的生成式 AI

1. 简介

了解如何使用 Google 的生成式 AI 功能分析 YouTube 上网红对任何公司或产品的看法。

随着大语言模型的出现,从各种来源(例如资产负债表、社交媒体平台上的观点)中挖掘真知灼见变得更加容易,网红的意见也变得更加重要。

社交媒体网红(尤其是科技和金融领域的网红)越来越被视为组织或其竞争对手的产品和政策的关键支持者。

构建内容

在此 Codelab 中,您将探索 Vertex AI 中的 PaLM2 模型和 Langchain 如何共同打造 YouTube 影响者分析解决方案。

环境

前往 https://colab.research.google.com/#create=true,在 Google Colab 沙盒环境中创建新笔记本。

2. 安装软件包并进行身份验证

在新笔记本的第一个单元中,使用以下命令安装所需的软件包。

!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

安装上述软件包后,系统会提示您重启运行时机器。点击“RESTART RUNTIME”(重新启动运行时),或从“Runtime”(运行时)菜单中选择“Restart runtime”(重新启动运行时)。

验证您的 Google Cloud 账号

您的账号应具有 Vertex AI User 角色。

  • 打开 Google Cloud 控制台,然后搜索“IAM 和管理”服务。在“按主账号查看”下的“权限”标签页中,选择“授予访问权限”。输入 / 选择您的正文,然后添加“Vertex AI User”角色并保存,如下图所示:

c6d26238f3d57a45.png

现在,返回 Colab 标签页,在当前工作文件的第二个单元格中输入以下代码段。此方法会检查身份验证。

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

系统会提示您允许访问。请继续这样做。

3. 初始化和导入

在下一个单元格中输入以下代码段,以初始化您的项目。

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

导入解决方案所需的库

使用以下命令导入所需的库。

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

初始化 Vertex AI LLM 模型

使用此代码段初始化 Vertex AI LLM 模型。此代码使用 Vertex AI 的 Text-Bison 模型初始化“llm”。

!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. 启动嵌入

我们将使用 Vertex AI 嵌入将视频块转换为嵌入。在此部分代码中,我们仅初始化嵌入对象。在“存储和检索”部分,我们将把嵌入应用到从视频创建的块。

生成式 AI 中的分块是指将大型内容分解为更小、更易于管理的部分或“块”的过程。这是因为生成式 AI 模型一次性可以处理的数据量有限。通过将数据分块,模型可以一次专注于一个块,并生成更准确、更连贯的输出。

嵌入是一种将内容表示为数字向量的方式。与传统方法(例如视频的镜头检测或关键帧提取,以及语言数据的词袋模型)相比,这种方法可让计算机以更复杂的方式理解数据的含义。

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. 加载视频并将其分块

加载要总结或提问的视频。

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

拆分视频

使用递归字符拆分器技术将视频拆分为多个块。

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

6. 存储和检索

存储文档

在本练习中,我们将使用 ChromaDB。您还可以使用 Vertex AI Vector Search。存储文档并在 ChromaDB 中以向量存储库的形式为文档编入索引。ChromaDB 用于存储和检索向量嵌入,以便与 LLM 搭配使用,并对数据执行语义搜索。

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

创建检索器链

创建检索器链来回答问题。在此处,我们将 Vertex AI Text Bison 模型 LLM 与从 Chroma DB 检索嵌入的检索器相关联。

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

7. 定义提示

定义提示,以便提出问题并从已编入索引的内容中获取答案。

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. 集成 LLM 应用

将 LLM 应用与 Gradio 集成,以实现可视化前端互动。

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. 测试解决方案

现在,我们继续测试解决方案。运行包含上述代码的单元格。您可以在单元格结果中查看界面,也可以点击生成的链接。您应该能够直观地看到包含输入-输出组件的界面。输入有关视频的问题,然后查看模型回答。

825c38058aab0aae.png

这样一来,我们现在就可以集成 YouTube 视频并使用 Vertex AI PaLM API 模型对其进行分析。您还可以进一步扩展此功能,以与数据库或数据仓库集成。如需详细了解可用模型,请参阅 Vertex AI LLM 产品文档

10. 恭喜!

恭喜!您已成功以编程方式使用 Vertex AI 文本生成 LLM,仅使用 SQL 查询对数据执行文本分析。如需详细了解可用模型,请参阅 Vertex AI LLM 产品文档。