如何将大型视频发送到Gemini AI API 1.5 Pro进行推理?

我目前正在使用Gemini AI API 1.5 Pro(最新版本),需要发送数百兆字节的大型视频文件进行推理。这些视频每个大约700MB,但都在API的限制范围内(例如,长度少于1小时)。我希望能够上传一次视频并进行推理,而不需要重新上传。

在GPT-4o中,有一个选项可以使用image_url来引用图片。Gemini AI API 1.5 Pro是否有类似的方法或最佳实践来处理大型视频文件?

这些视频太大,无法反复发送,因此上传和引用它们的有效方法至关重要。

关于API端点、所需参数或示例代码片段的任何指导都将不胜感激。


回答:

在您的情况下,以下示例脚本如何?

示例脚本1:

在测试以下脚本之前,请将google-generativeai更新到最新版本。

import google.generativeai as genaiimport timeapiKey = "###" # 请设置您的API密钥。video_file_name = "sample.mp4" # 请设置您的视频文件路径。display_name = "sampleDisplayName" # 请设置在Gemini上上传文件的显示名称。使用此值从文件列表中搜索文件。genai.configure(api_key=apiKey)# 获取Gemini中的文件列表fileList = genai.list_files(page_size=100)# 检查已上传的文件。video_file = next((f for f in fileList if f.display_name == display_name), None)if video_file is None:    print(f"正在上传文件...")    video_file = genai.upload_file(path=video_file_name, display_name=display_name, resumable=True)    print(f"上传完成: {video_file.uri}")else:    print(f"文件URI: {video_file.uri}")# 检查已上传文件的状态。while video_file.state.name == "PROCESSING":    print(".", end="")    time.sleep(10)    video_file = genai.get_file(video_file.name)if video_file.state.name == "FAILED":    raise ValueError(video_file.state.name)# 使用已上传的文件生成内容。prompt = "描述这个视频。"model = genai.GenerativeModel(model_name="models/gemini-1.5-pro-latest")print("正在进行LLM推理请求...")response = model.generate_content([video_file, prompt], request_options={"timeout": 600})print(response.text)

在这个示例脚本中,当文件已经上传时,将使用现有文件。另一方面,当文件未找到时,将上传文件并使用已上传的文件。为了搜索文件,在这个示例中使用了display_name

示例脚本2:

作为另一种方法,当可以直接提供name的值时,也可以使用以下示例脚本。在这种情况下,name的值需要在已上传的文件中是唯一的。

import google.generativeai as genaiimport timeapiKey = "###" # 请设置您的API密钥。video_file_name = "sample.mp4" # 请设置您的视频文件路径。name = "sample-name-1" # 请设置在Gemini上上传文件的名称。使用此值从文件列表中搜索文件。genai.configure(api_key=apiKey)# 检查已上传的文件。try:    video_file = genai.get_file(f"files/{name}")    print(f"文件URI: {video_file.uri}")except:    print(f"正在上传文件...")    video_file = genai.upload_file(path=video_file_name, name=name, resumable=True)    print(f"上传完成: {video_file.uri}")# 检查已上传文件的状态。while video_file.state.name == "PROCESSING":    print(".", end="")    time.sleep(10)    video_file = genai.get_file(video_file.name)if video_file.state.name == "FAILED":    raise ValueError(video_file.state.name)# 使用已上传的文件生成内容。prompt = "描述这个视频。"model = genai.GenerativeModel(model_name="models/gemini-1.5-pro-latest")print("正在进行LLM推理请求...")response = model.generate_content([video_file, prompt], request_options={"timeout": 600})print(response.text)

这个脚本与上面的脚本结果相同。

注意:

  • 这是一个简单的示例脚本。因此,请根据您的实际情况进行修改。

参考:

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注