如何将大型视频发送到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

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

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