首页 后端开发 Python教程 使用 Gemini Flash 构建视频洞察生成器

使用 Gemini Flash 构建视频洞察生成器

Nov 26, 2024 pm 08:24 PM

视频理解或视频洞察由于其多方面的优势而在各个行业和应用中至关重要。它们通过自动生成元数据、对内容进行分类并使视频更易于搜索来增强内容分析和管理。此外,视频洞察提供了推动决策、增强用户体验并提高不同行业运营效率的关键数据。

Google 的 Gemini 1.5 模型为该领域带来了重大进步。除了在语言处理方面令人印象深刻的改进之外,该模型还可以处理多达 100 万个标记的巨大输入上下文。为了进一步增强其功能,Gemini 1.5 被训练为多模式模型,可以本地处理文本、图像、音频和视频。各种输入类型和广泛的上下文大小的强大组合为有效处理长视频开辟了新的可能性。

在本文中,我们将深入探讨如何利用 Gemini 1.5 生成有价值的视频见解,改变我们跨不同领域理解和利用视频内容的方式。

入门

目录

  • 什么是 Gemini 1.5
  • 先决条件
  • 安装依赖项
  • 设置 Gemini API 密钥
  • 设置环境变量
  • 导入库
  • 初始化项目
  • 保存上传的文件
  • 从视频中生成见解
  • 将视频上传到文件 API
  • 获取文件
  • 响应生成
  • 删除文件
  • 组合各个阶段
  • 创建界面
  • 创建 Streamlit 应用程序

什么是双子座1.5

Google 的 Gemini 1.5 代表了人工智能性能和效率的重大飞跃。该模型建立在广泛的研究和工程创新的基础上,采用新的专家混合 (MoE) 架构,提高了培训和服务效率。 Gemini 1.5 Pro 和 1.5 Flash 现已推出公开预览版,通过 Google AI Studio 和 Vertex AI 提供了令人印象深刻的 100 万个代币上下文窗口。

Building a video insights generator using Gemini Flash

Google Gemini 更新:Flash 1.5、Gemma 2 和 Project Astra (blog.google)
1.5 Flash 型号是 Gemini 系列的最新成员,对于大容量、高频任务来说速度最快且最优化。它专为实现成本效益而设计,在摘要、聊天、图像和视频字幕以及从大量文档和表格中提取数据等应用中表现出色。凭借这些进步,Gemini 1.5 为 AI 模型的性能和多功能性树立了新标准。

先决条件

  • Python 3.9 (https://www.python.org/downloads)
  • 谷歌生成ai
  • 流线型

安装依赖项

  • 通过执行以下命令创建并激活虚拟环境。
python -m venv venv
source venv/bin/activate #for ubuntu
venv/Scripts/activate #for windows
登录后复制
登录后复制
  • 使用 pip 安装 google-generativeai、streamlit、python-dotenv 库。请注意,generativeai 需要 python 3.9 版本才能工作。
pip install google-generativeai streamlit python-dotenv
登录后复制
登录后复制

设置 Gemini API 密钥

要访问 Gemini API 并开始使用其功能,您可以通过注册 Google AI Studio 来获取免费的 Google API 密钥。 Google AI Studio 由 Google 提供,提供了一个用户友好的、基于视觉的界面,用于与 Gemini API 进行交互。在 Google AI Studio 中,您可以通过其直观的 UI 无缝地与生成模型交互,如果需要,还可以生成 API 令牌以增强控制和自定义。

按照以下步骤生成 Gemini API 密钥:

  • 要启动此过程,您可以单击链接 (https://aistudio.google.com/app) 以重定向到 Google AI Studio,或者在 Google 上执行快速搜索以找到它。
  • 接受服务条款并单击继续。
  • 点击侧边栏的获取 API 密钥链接和在新项目中创建 API 密钥按钮来生成密钥。
  • 复制生成的 API 密钥。

Building a video insights generator using Gemini Flash

设置环境变量

首先为您的项目创建一个新文件夹。选择一个能够反映您项目目的的名称。
在新项目文件夹中,创建一个名为 .env 的文件。该文件将存储您的环境变量,包括您的 Gemini API 密钥。
打开 .env 文件并添加以下代码来指定您的 Gemini API 密钥:

GOOGLE_API_KEY=AIzaSy......
登录后复制
登录后复制

导入库

要开始您的项目并确保您拥有所有必要的工具,您需要导入几个关键库,如下所示。

import os
import time
import google.generativeai as genai
import streamlit as st
from dotenv import load_dotenv
登录后复制
登录后复制
  • google.generativeai as genai:导入 Google Generative AI 库以与 Gemini API 交互。
  • Streamlit as st:导入 Streamlit 用于创建 Web 应用程序。
  • from dotenv import load_dotenv:从 .env 文件加载环境变量。

初始化项目

要设置您的项目,您需要配置 API 密钥并为上传的文件创建临时文件存储目录。

通过初始化必要的设置来定义媒体文件夹并配置 Gemini API 密钥。将以下代码添加到您的脚本中:

python -m venv venv
source venv/bin/activate #for ubuntu
venv/Scripts/activate #for windows
登录后复制
登录后复制

保存上传的文件

要将上传的文件存储在媒体文件夹中并返回其路径,请定义一个名为 save_uploaded_file 的方法并向其中添加以下代码。

pip install google-generativeai streamlit python-dotenv
登录后复制
登录后复制

从视频中生成见解

从视频中生成见解涉及几个关键阶段,包括上传、处理和生成响应。

1. 将视频上传到Files API

Gemini API 直接接受视频文件格式。文件 API 支持最大 2GB 的文件,并允许每个项目最大存储 20GB。上传的文件保留 2 天,并且无法从 API 下载。

GOOGLE_API_KEY=AIzaSy......
登录后复制
登录后复制

2. 获取文件

上传文件后,您可以使用files.get方法验证API是否已成功接收文件。此方法允许您查看上传到文件 API 的文件,这些文件与链接到您的 API 密钥的云项目关联。只有文件名和 URI 是唯一标识符。

import os
import time
import google.generativeai as genai
import streamlit as st
from dotenv import load_dotenv
登录后复制
登录后复制

3. 响应生成

视频上传后,您可以发出引用文件 API URI 的GenerateContent 请求。

MEDIA_FOLDER = 'medias'

def __init__():
    # Create the media directory if it doesn't exist
    if not os.path.exists(MEDIA_FOLDER):
        os.makedirs(MEDIA_FOLDER)

    # Load environment variables from the .env file
    load_dotenv()

    # Retrieve the API key from the environment variables
    api_key = os.getenv("GEMINI_API_KEY")

    # Configure the Gemini API with your API key
    genai.configure(api_key=api_key)
登录后复制

4. 删除文件

文件会在 2 天后自动删除,或者您可以使用 files.delete() 手动删除它们。

def save_uploaded_file(uploaded_file):
    """Save the uploaded file to the media folder and return the file path."""
    file_path = os.path.join(MEDIA_FOLDER, uploaded_file.name)
    with open(file_path, 'wb') as f:
        f.write(uploaded_file.read())
    return file_path
登录后复制

5. 结合各个阶段

创建一个名为 get_insights 的方法并向其中添加以下代码。使用 Streamlit write() 方法代替 print() 来查看网站上的消息。

video_file = genai.upload_file(path=video_path)
登录后复制

创建界面

要简化在 Streamlit 应用程序中上传视频和生成见解的过程,您可以创建一个名为 app 的方法。此方法将提供一个上传按钮,显示上传的视频,并从中生成见解。

import time

while video_file.state.name == "PROCESSING":
    print('Waiting for video to be processed.')
    time.sleep(10)
    video_file = genai.get_file(video_file.name)

if video_file.state.name == "FAILED":
  raise ValueError(video_file.state.name)
登录后复制

创建 Streamlit 应用程序

要创建一个完整且功能齐全的 Streamlit 应用程序,允许用户使用 Gemini 1.5 Flash 模型上传视频并生成见解,请将所有组件组合到一个名为 app.py 的文件中。

这是最终代码:

# Create the prompt.
prompt = "Describe the video. Provides the insights from the video."

# Set the model to Gemini 1.5 Flash.
model = genai.GenerativeModel(model_name="models/gemini-1.5-flash")

# Make the LLM request.
print("Making LLM inference request...")
response = model.generate_content([prompt, video_file],
                                  request_options={"timeout": 600})
print(response.text)
登录后复制

运行应用程序

执行以下代码来运行应用程序。

genai.delete_file(video_file.name)
登录后复制

您可以打开控制台中提供的链接来查看输出。

Building a video insights generator using Gemini Flash

感谢您阅读这篇文章!!

如果您喜欢这篇文章,请点击心形按钮♥并分享以帮助其他人找到它!

本教程的完整源代码可以在这里找到,

GitHub - codemaker2015/video-insights-generator

以上是使用 Gemini Flash 构建视频洞察生成器的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

如何在使用 Fiddler Everywhere 进行中间人读取时避免被浏览器检测到? 如何在使用 Fiddler Everywhere 进行中间人读取时避免被浏览器检测到? Apr 02, 2025 am 07:15 AM

使用FiddlerEverywhere进行中间人读取时如何避免被检测到当你使用FiddlerEverywhere...

在Linux终端中使用python --version命令时如何解决权限问题? 在Linux终端中使用python --version命令时如何解决权限问题? Apr 02, 2025 am 06:36 AM

Linux终端中使用python...

如何在10小时内通过项目和问题驱动的方式教计算机小白编程基础? 如何在10小时内通过项目和问题驱动的方式教计算机小白编程基础? Apr 02, 2025 am 07:18 AM

如何在10小时内教计算机小白编程基础?如果你只有10个小时来教计算机小白一些编程知识,你会选择教些什么�...

如何绕过Investing.com的反爬虫机制获取新闻数据? 如何绕过Investing.com的反爬虫机制获取新闻数据? Apr 02, 2025 am 07:03 AM

攻克Investing.com的反爬虫策略许多人尝试爬取Investing.com(https://cn.investing.com/news/latest-news)的新闻数据时,常常�...

Python 3.6加载pickle文件报错ModuleNotFoundError: No module named '__builtin__'怎么办? Python 3.6加载pickle文件报错ModuleNotFoundError: No module named '__builtin__'怎么办? Apr 02, 2025 am 06:27 AM

Python3.6环境下加载pickle文件报错:ModuleNotFoundError:Nomodulenamed...

使用Scapy爬虫时,管道文件无法写入的原因是什么? 使用Scapy爬虫时,管道文件无法写入的原因是什么? Apr 02, 2025 am 06:45 AM

使用Scapy爬虫时管道文件无法写入的原因探讨在学习和使用Scapy爬虫进行数据持久化存储时,可能会遇到管道文�...

See all articles