Генеративный искусственный интеллект для видеоаналитики с помощью 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 и Admin. На вкладке «РАЗРЕШЕНИЯ» в разделе «ПРОСМОТР ПО УЧАСТНИКАМ» выберите «ПРЕДОСТАВИТЬ ДОСТУП». Введите/выберите своего участника, затем добавьте роль «Пользователь 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 для преобразования фрагментов видео в эмбеддинги. В этой части кода мы только инициализируем объект embeddings. В разделе сохранения и извлечения мы применим эмбеддинги к фрагментам, созданным из видео.

В генеративном ИИ разбиение данных на более мелкие, управляемые части или «блоки» — это процесс разделения большого объема информации на более мелкие, управляемые фрагменты. Это делается потому, что модели генеративного ИИ имеют ограничения по объему данных, которые они могут обрабатывать одновременно. Разбивая данные на блоки, модель может сосредоточиться на одном блоке за раз и генерировать более точные и согласованные результаты.

Эмбеддинги — это способ представления контента в виде вектора чисел. Это позволяет компьютерам понимать смысл данных более сложным образом, чем традиционные методы, такие как обнаружение фрагментов или извлечение ключевых кадров, если речь идёт о видео, и метод «мешка слов», если речь идёт о языковых данных.

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 и анализировать их с помощью моделей API Vertex AI PaLM. Вы можете расширить функциональность для интеграции с базами данных или хранилищами данных. Подробнее о доступных моделях см. в документации по продукту Vertex AI LLM .

10. Поздравляем!

Поздравляем! Вы успешно использовали Vertex AI Text Generation LLM программным способом для проведения текстового анализа ваших данных с помощью SQL-запросов. Для получения дополнительной информации о доступных моделях ознакомьтесь с документацией по продукту Vertex AI LLM.