![]() |
![]() |
![]() |
Gemini API は、テキスト、画像、音声、動画データによるプロンプト(マルチモーダル プロンプトとも呼ばれます)をサポートしています。つまり、これらのタイプのメディア ファイルをプロンプトに含めることができます。小さなファイルの場合は、プロンプトを提供するときに Gemini モデルを直接ローカル ファイルを指すように指定できます。プロンプトに含める前に、File API を使用してサイズの大きいファイルをアップロードします。
File API を使用すると、プロジェクトごとに最大 20 GB のファイルを保存でき、各ファイルのサイズは 2 GB を超えません。ファイルは 48 時間保存され、その期間内に API キーを使ってアクセスできます。また、API からダウンロードすることはできません。Files API は、Gemini API が利用可能なすべてのリージョンで無料でご利用いただけます。
File API は、model.generateContent
または model.streamGenerateContent
でコンテンツを生成するために使用できる入力を処理します。有効なファイル形式(MIME タイプ)とサポートされているモデルについては、サポートされているファイル形式をご覧ください。
このガイドでは、File API を使用してメディア ファイルをアップロードし、Gemini API への GenerateContent
呼び出しにそのファイルを含める方法について説明します。詳細については、コードサンプルをご覧ください。
始める前に: プロジェクトと API キーを設定する
Gemini API(またはその File API)を呼び出す前に、プロジェクトを設定して API キーを構成する必要があります。
画像を使用したプロンプト
このチュートリアルでは、File API を使用してサンプル画像をアップロードし、それを使用してコンテンツを生成します。
画像ファイルをアップロードする
独自のファイルをアップロードする方法については、付録セクションをご覧ください。
アップロードするサンプル画像を準備します。
curl -o image.jpg https://storage.googleapis.com/generativeai-downloads/images/jetpack.jpg
そのファイルを
media.upload
を使用してアップロードし、他の API 呼び出しでアクセスできるようにします。sample_file = genai.upload_file(path="image.jpg", display_name="Sample drawing") print(f"Uploaded file '{sample_file.display_name}' as: {sample_file.uri}")
response
は、アップロードされた画像が指定された display_name
で保存されており、Gemini API 呼び出しでファイルを参照するための uri
があることを示しています。アップロードされたファイルを URI にマッピングする方法を追跡するには、response
を使用します。
ユースケースによっては、dict
やデータベースなどの構造に URI を格納できます。
画像ファイルのメタデータを取得する
ファイルをアップロードした後、SDK を介して files.get
を呼び出すことで、API がファイルを正常に保存したことを確認し、そのメタデータを取得できます。
この方法では、API キーにリンクされた Google Cloud プロジェクトに関連付けられたアップロード済みファイルのメタデータを取得できます。name
(さらには uri
)のみが一意です。一意性をご自分で管理する場合にのみ、display_name
を使用してファイルを識別します。
file = genai.get_file(name=sample_file.name)
print(f"Retrieved file '{file.display_name}' as: {sample_file.uri}")
アップロードされた画像ファイルを使用してコンテンツを生成する
画像をアップロードした後、レスポンスの uri
を参照する GenerateContent
リクエストを行うことができます(ファイルをアップロードするか、ファイルのメタデータを直接取得します)。
この例では、テキストで始まり、その後にアップロードしたファイルの URI 参照が続くプロンプトを作成します。
# The Gemini 1.5 models are versatile and work with multimodal prompts
model = genai.GenerativeModel(model_name="models/gemini-1.5-flash")
response = model.generate_content([sample_file, "Describe the image with a creative description."])
Markdown(">" + response.text)
イメージ ファイルを削除する
ファイルは 48 時間後に自動的に削除されます。SDK で files.delete
を使用して手動で削除することもできます。
genai.delete_file(sample_file.name)
print(f'Deleted {sample_file.display_name}.')
動画を使用したプロンプト
このチュートリアルでは、File API を使用してサンプル動画をアップロードし、それを使用してコンテンツを生成します。
動画ファイルをアップロードする
Gemini API は、動画ファイル形式を直接受け入れます。この例では短編映画「Big Buck Bunny」を使用しています。
「Big Buck Bunny」の著作権は 2008 年 Blender Foundation / www.bigbuckbunny.org に帰属し、クリエイティブ・コモンズの表示 3.0 ライセンスにより使用許諾されています。
独自のファイルをアップロードする方法については、付録セクションをご覧ください。
アップロードするサンプル動画ファイルを準備します。
wget https://download.blender.org/peach/bigbuckbunny_movies/BigBuckBunny_320x180.mp4
そのファイルを
media.upload
を使用してアップロードし、他の API 呼び出しでアクセスできるようにします。video_file_name = "BigBuckBunny_320x180.mp4" print(f"Uploading file...") video_file = genai.upload_file(path=video_file_name) print(f"Completed upload: {video_file.uri}")
動画ファイルのアップロード状態を確認する
SDK で files.get
メソッドを呼び出して、API が動画ファイルを正常にアップロードしたことを確認します。
動画ファイルには、File API の State
フィールドがあります。動画をアップロードすると、推論の準備が整うまでは PROCESSING
状態になります。モデルの推論に使用できるのは ACTIVE
ファイルのみです。
import time
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)
動画ファイルのメタデータを取得する
アップロードされた動画ファイルのメタデータは、SDK の files.get
メソッドを呼び出していつでも取得できます。
この方法では、API キーにリンクされた Google Cloud プロジェクトに関連付けられたアップロード済みファイルのメタデータを取得できます。name
(さらには uri
)のみが一意です。一意性をご自分で管理する場合にのみ、display_name
を使用してファイルを識別します。
file = genai.get_file(name=video_file.name)
print(f"Retrieved file '{file.display_name}' as: {video_file.uri}")
アップロードした動画ファイルを使用してコンテンツを生成する
動画をアップロードしたら、レスポンスの uri
を参照する GenerateContent
リクエストを行うことができます(ファイルをアップロードするか、ファイルのメタデータを直接取得します)。
動画の推論を実行する前に、動画ファイルのアップロード状態を確認(上記のセクション)していることを確認してください。
# Create the prompt.
prompt = "Describe this video."
# The Gemini 1.5 models are versatile and work with multimodal prompts
model = genai.GenerativeModel(model_name="models/gemini-1.5-flash")
# Make the LLM request.
print("Making LLM inference request...")
response = model.generate_content([video_file, prompt],
request_options={"timeout": 600})
print(response.text)
動画ファイルを削除する
ファイルは 48 時間後に自動的に削除されます。SDK で files.delete
を使用して手動で削除することもできます。
genai.delete_file(file_response.name)
print(f'Deleted file {file_response.uri}')
サポートされているファイル形式
Gemini のモデルは、複数のファイル形式を使用したプロンプトをサポートしています。このセクションでは、プロンプトに一般的なメディア形式を使用する場合、特に画像、音声、動画、書式なしテキスト ファイルを使用する際の考慮事項について説明します。次の表に示すように、特定のモデル バージョンでのみプロンプトを表示するメディア ファイルを使用できます。
モデル | 画像 | 音声 | 動画 | 書式なしテキスト |
---|---|---|---|---|
Gemini 1.5 Pro(リリース 008 以降) | ✔(画像ファイルの最大サイズは 3,600) | ✔ | ✔ | ✔ |
画像形式
Gemini 1.5 モデルでは、プロンプトに画像データを使用できます。プロンプトに画像を使用する場合、次の制限と要件が適用されます。
- 画像は、次のいずれかの画像データ MIME タイプである必要があります。
- PNG - image/png
- .JPEG - 画像 /jpeg
- WEBP - 画像 /webp
- HEIC - 画像 /heic
- HEIF - 画像 /heif
- Gemini 1.5 モデルの場合は最大 3,600 枚の画像。
- 画像のピクセル数に特に制限はありませんが、元のアスペクト比を維持したまま、最大解像度 3,072 x 3,072 に合わせて画像が大きいものは縮小されます。
オーディオ形式
Gemini 1.5 モデルでは、音声データを使用してプロンプトを作成できます。プロンプトに音声を使用する場合、次の制限と要件が適用されます。
- 音声データは、次の一般的な音声形式 MIME タイプでサポートされています。
- WAV - 音声/WAV
- MP3 - 音声/mp3
- AIFF - 音声/aiff
- AAC - 音声/AAC
- OGG Vorbis - 音声/ogg
- FLAC - 音声/flac
- 1 つのプロンプトでサポートされる音声データの最大長は 9.5 時間です。
- 音声ファイルは 16 Kbps のデータ解像度に再サンプリングされ、複数チャンネルの音声が 1 つのチャンネルに結合されます。
- 1 つのプロンプト内の音声ファイル数に特定の上限はありませんが、1 つのプロンプト内のすべての音声ファイルの合計長は 9.5 時間以下にする必要があります。
動画形式
Gemini 1.5 モデルでは、プロンプトに動画データを使用できます。
動画データは、次の一般的な動画形式の MIME タイプでサポートされています。
- video/mp4
- video/mpeg
- 動画/動画
- 動画/AV
- video/x-flv
- 動画/mpg
- 動画/WebM
- 動画/MV
- 動画/3GPP
File API サービスは、動画を 1 フレーム/秒(FPS)で画像にサンプリングします。最適な推論品質を提供するために、変更される可能性があります。解像度や品質に関係なく、個々の画像は 258 トークンを消費します。
書式なしテキスト形式
File API では、次の MIME タイプの書式なしテキスト ファイルをアップロードできます。
- text/plain
- text/html
- text/css
- text/javascript
- application/x-javascript
- text/x-typescript
- application/x-typescript
- text/csv
- テキスト/マークダウン
- テキスト/x-python
- application/x-python-code
- application/json
- text/xml
- アプリケーション/RTF
- テキスト/RTF
MIME タイプがリストにない書式なしテキスト ファイルの場合は、上記の MIME タイプのいずれかを手動で指定してみてください。
付録: Colab へのファイルのアップロード
このノートブックでは、インターネットからダウンロードしたファイルに File API を使用します。これを Colab で実行していて、独自のファイルを使用する場合は、まず Colab インスタンスにファイルをアップロードする必要があります。
まず、左側のサイドバーにある [ファイル] をクリックしてから、[アップロード] ボタンをクリックします。
次に、そのファイルを File API にアップロードします。以下のコードセルのフォームに、アップロードしたファイルのファイル名を入力し、ファイルの適切な表示名を入力してからセルを実行します。
my_filename = "gemini_logo.png" # @param {type:"string"}
my_file_display_name = "Gemini Logo" # @param {type:"string"}
my_file = genai.upload_file(path=my_filename,
display_name=my_file_display_name)
print(f"Uploaded file '{my_file.display_name}' as: {my_file.uri}")