Генеративный искусственный интеллект для видеоаналитики с помощью Vertex AI

1. Введение

Узнайте, как анализировать мнения влиятельных лиц на YouTube о любой компании или продукте, используя возможности Google Gen AI.

С появлением LLM, использующих информацию из широкого спектра источников, таких как балансовые отчеты, мнения в социальных сетях, мнения влиятельных лиц, стало еще проще.

Влиятельные лица в социальных сетях, особенно в мире технологий и финансов, все чаще рассматриваются как ключевые сторонники организации или продуктов и политики ее конкурентов.

Что ты построишь

В этой лаборатории вы узнаете, как модель PaLM2 в VertexAI и 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

После установки вышеуказанных пакетов вам будет предложено перезагрузить машину выполнения. Нажмите «ПЕРЕЗАПУСТИТЬ ВЫПОЛНЕНИЕ» или выберите «Перезапустить среду выполнения» в меню «Среда выполнения».

Аутентификация вашей учетной записи Google Cloud

Ваша учетная запись должна иметь роль пользователя Vertex AI .

  • Откройте консоль Google Cloud и найдите службу IAM и администратора. На вкладке РАЗРЕШЕНИЯ в разделе ПРОСМОТР ПРИНЦИПАЛОВ выберите ПРЕДОСТАВИТЬ ДОСТУП. Введите/выберите своего принципала, а затем добавьте роль «Пользователь Vertex AI» и СОХРАНИТЕ, как показано на изображении ниже:

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. Это инициализирует «llm» с помощью модели 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. Инициировать встраивания

Мы будем использовать встраивания Vertex 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 . Храните свои документы и индексируйте их в ChromaDB как векторное хранилище. ChromaDB используется для хранения и извлечения векторных векторных представлений для использования с LLM, а также для выполнения семантического поиска по данным.

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

Создайте цепочку ретриверов

Создайте цепочку ретриверов, чтобы ответить на вопрос. Здесь мы связываем модель LLM Vertex AI Text Bison и ретривер, который извлекает вложения из 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 Text Generation LLM программно для выполнения текстового анализа ваших данных только с помощью SQL-запросов. Ознакомьтесь с документацией по продукту Vertex AI LLM, чтобы узнать больше о доступных моделях.