前往 ai.google.dev 查看 | 試用 Colab 筆記本 | 在 GitHub 中查看筆記本 |
Gemini API 可以對傳遞的圖片和影片進行推論。通過時 圖片、一組圖片或影片,Gemini 就能:
- 說明或回答內容相關問題
- 提供內容的摘要
- 從內容推斷
本教學課程示範了使用以下程式碼來提示 Gemini API 的一些方法: 圖片與影片輸入內容所有輸出內容皆為純文字。
事前準備:設定專案和 API 金鑰
呼叫 Gemini API 前,請先設定專案並設定 您的 API 金鑰。
使用圖片發出提示
在這個教學課程中,您將使用 File API 或內嵌資料上傳圖片 並根據這些圖片生成內容
技術詳細資料 (圖片)
Gemini 1.5 Pro 和 1.5 Flash 最多可支援 3,600 個圖片檔。
圖片必須使用下列任一圖片資料 MIME 類型:
- PNG:
image/png
- JPEG -
image/jpeg
- WebP -
image/webp
- HEIC -
image/heic
- HEIF -
image/heif
每張映像檔相當於 258 個符記。
雖然圖片中的像素數量沒有明確限制 模型的背景脈絡窗口,大型圖片會縮小到 解析度為 3072x3072,同時保留原始長寬比 較小的圖片尺寸則高達 768x768 像素。無法降低成本 適用於較低尺寸、頻寬或效能提升以外的圖片 顯示解析度較高的圖片
為確保最佳成效:
- 上傳之前,請將圖片旋轉至正確的方向。
- 避免使用模糊不清的圖片。
- 如果使用的是一張圖片,請將文字提示放在圖片下方。
使用 File API 上傳圖片檔
使用 File API 上傳任何大小的圖片。( 包含檔案及系統指示的組合 大於 20 MB)。
請先下載這份 噴射背包的草圖。
!curl -o jetpack.jpg https://storage.googleapis.com/generativeai-downloads/images/jetpack.jpg
使用以下方式上傳圖片:
media.upload
敬上
並輸出要在 Gemini API 呼叫中當做參考的 URI。
# Upload the file and print a confirmation.
sample_file = genai.upload_file(path="jetpack.jpg",
display_name="Jetpack drawing")
print(f"Uploaded file '{sample_file.display_name}' as: {sample_file.uri}")
驗證圖片檔上傳並取得中繼資料
您可以驗證 API 是否已成功儲存上傳的檔案,並取得其
呼叫 files.get
來修正中繼資料
導入這個 API只有 name
(再加上 uri
) 是唯一的。使用
display_name
用於識別檔案 (除非您自行管理檔案的唯一性)。
file = genai.get_file(name=sample_file.name)
print(f"Retrieved file '{file.display_name}' as: {sample_file.uri}")
根據您的用途,您可以將 URI 儲存在結構中,例如
dict
或資料庫。
使用上傳的圖片和文字做為提示
上傳檔案後,您可以提出參照的 GenerateContent
要求
File API URI選取生成式模型,並以文字提示提供模型
和上傳的圖片
# Choose a Gemini model.
model = genai.GenerativeModel(model_name="gemini-1.5-pro")
# Prompt the model with text and the previously uploaded image.
response = model.generate_content([sample_file, "Describe how this product might be manufactured."])
Markdown(">" + response.text)
上傳一或多個儲存在本機的圖片檔
或者,你也可以上傳自己的檔案。您可以下載並使用 繪圖 攝取海域的水 和 與貓一起消防員。
您想傳送的檔案和系統指示組合時 超過 20 MB,請使用 File API 上傳這些檔案, 。您可以改為從本機呼叫較小的檔案 Gemini API:
import PIL.Image
sample_file_2 = PIL.Image.open('piranha.jpg')
sample_file_3 = PIL.Image.open('firefighter.jpg')
請注意,這些內嵌資料呼叫並未包含許多可用功能 使用 File API 例如取得檔案中繼資料、列出清單或 刪除檔案。
使用多張圖片提示
凡是在 Google Gemini 中 會套用在模型的背景區間內這個範例提供一則簡短文字 提示和先前上傳的三張圖片
# Choose a Gemini model.
model = genai.GenerativeModel(model_name="gemini-1.5-pro")
prompt = "Write an advertising jingle showing how the product in the first image could solve the problems shown in the second two images."
response = model.generate_content([prompt, sample_file, sample_file_2, sample_file_3])
Markdown(">" + response.text)
取得物件的定界框
您可以要求模型提供物件的定界框座標
圖像如果是物件偵測,Gemini 模型經過訓練,能
這些座標是 [0,1]
範圍內的相對寬度或高度,並按
1000,並轉換為整數。實際上,提供的座標是
原始圖片的 1000x1000 版本,因此需要轉換回原始圖片
以及原始圖片的尺寸
# Choose a Gemini model.
model = genai.GenerativeModel(model_name="gemini-1.5-pro")
prompt = "Return a bounding box for the piranha. \n [ymin, xmin, ymax, xmax]"
response = model.generate_content([piranha, prompt])
print(response.text)
如要將這些座標轉換為原始圖片的尺寸,請按照下列步驟操作:
- 將每個輸出座標除以 1000。
- 將 x 座標乘以原始圖片寬度。
- 將 y 座標乘以原始圖片的高度。
透過影片提示
在這個教學課程中,您會使用 File API 上傳影片 來產生相關內容
技術詳細資料 (影片)
Gemini 1.5 Pro 和 Flash 支援長達約 1 小時的影片資料,
影片必須使用下列任一影片格式 MIME 類型:
video/mp4
video/mpeg
video/mov
video/avi
video/x-flv
video/mpg
video/webm
video/wmv
video/3gpp
File API 服務能擷取影片中的影格速率 (每秒 1 個影格) (FPS) 和 1 Kbps 的音訊,單一聲道,每秒新增時間戳記。 這些費率日後可能會變動,以利提升推論能力。
個別影格為 258 個符記,音訊為每秒 32 個符記。取代為 中繼資料,影片每秒約 300 個符記,這代表 100 萬個詞元 時間可能稍微少於一小時的影片。
如要詢問具有時間戳記的地點相關問題,請使用 MM:SS
格式,其中
前兩位數代表分鐘,最後兩位數代表
秒內請求驗證碼。
為確保最佳成效:
- 每個提示只使用一部影片。
- 如果只有一部影片,請將文字提示放在影片後方。
使用 File API 上傳影片檔案
File API 會直接接受影片檔案格式。本範例使用 NASA 短片 「Jupiter's Great Red Spot Shrinks and Grows」。 圖片:Goddard Space Flight Center (GSFC)/David Ladd (2018)。
「Jupiter's Great Red Spot Shrinks and Grows」屬於公共領域資源,同時 而且無法從中辨識出可識別身分的人物 (NASA 圖片和媒體使用指南)。
請先擷取短片:
!wget https://storage.googleapis.com/generativeai-downloads/images/GreatRedSpot.mp4
使用 File API 上傳影片並輸出 URI。
# Upload the video and print a confirmation.
video_file_name = "GreatRedSpot.mp4"
print(f"Uploading file...")
video_file = genai.upload_file(path=video_file_name)
print(f"Completed upload: {video_file.uri}")
驗證檔案上傳並檢查狀態
透過呼叫
files.get
方法,增加圍繞地圖邊緣的邊框間距。
import time
# Check whether the file is ready to be used.
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)
提供影片和文字做為提示
上傳的影片處於 ACTIVE
狀態後,你就可以將 GenerateContent
設為
要求指定該影片的 File API URI。選取生成式 AI
並提供上傳影片和文字提示
# Create the prompt.
prompt = "Summarize this video. Then create a quiz with answer key based on the information in the video."
# Choose a Gemini model.
model = genai.GenerativeModel(model_name="gemini-1.5-pro")
# Make the LLM request.
print("Making LLM inference request...")
response = model.generate_content([video_file, prompt],
request_options={"timeout": 600})
# Print the response, rendering any Markdown
Markdown(response.text)
參考內容中的時間戳記
您可以使用 MM:SS
格式的時間戳記,代表
影片。
# Create the prompt.
prompt = "What are the examples given at 01:05 and 01:19 supposed to show us?"
# Choose a Gemini model.
model = genai.GenerativeModel(model_name="gemini-1.5-pro")
# Make the LLM request.
print("Making LLM inference request...")
response = model.generate_content([prompt, video_file],
request_options={"timeout": 600})
print(response.text)
轉錄影片並提供圖像說明
如果影片不是快速播放 (取樣影片每秒 1 個影格), 系統可以為影片提供內含視覺說明的語音說明。
# Create the prompt.
prompt = "Transcribe the audio, giving timestamps. Also provide visual descriptions."
# Choose a Gemini model.
model = genai.GenerativeModel(model_name="gemini-1.5-pro")
# Make the LLM request.
print("Making LLM inference request...")
response = model.generate_content([prompt, video_file],
request_options={"timeout": 600})
print(response.text)
可列出檔案
您可以使用 File API 列出透過 File API 上傳的所有檔案及其 URI
files.list_files()
。
# List all files
for file in genai.list_files():
print(f"{file.display_name}, URI: {file.uri}")
刪除檔案
使用 File API 上傳的檔案會在 2 天後自動刪除。個人中心
您也可以使用 files.delete()
手動刪除這些項目。
# Delete file
genai.delete_file(video_file.name)
print(f'Deleted file {video_file.uri}')
後續步驟
本指南說明
generateContent
和
根據圖片和影片輸入內容生成文字輸出內容如要瞭解詳情
請參閱下列資源:
- 使用媒體檔案發出提示: Gemini API 支援透過文字、圖片、音訊和影片資料提示使用者 稱為「多模態提示」
- 系統操作說明:系統 指示能讓您根據具體的 需求和用途
- 安全指南:生成式 AI 有時 模型會產生非預期的輸出內容 任何偏見或令人反感的內容後續處理和人工評估 以降低這類輸出的傷害風險