Inference API

Vertex AI Gemini API は、入力としてマルチモーダル プロンプトをサポートし、テキストまたはコードを出力します。

サポートされているモデル:

  • Gemini 1.0 Pro
    • gemini-1.0-pro
    • gemini-1.0-pro-001
    • gemini-1.0-pro-002
  • Gemini 1.0 Pro Vision
    • gemini-1.0-pro-vision
    • gemini-1.0-pro-vision-001
  • Gemini 1.5 Pro
    • gemini-1.5-pro-preview-0409

制限事項:

  • 画像を大量に指定すると、レイテンシが高くなる可能性があります。

構文

  • PROJECT_ID = PROJECT_ID
  • REGION = us-central1
  • MODEL_ID = gemini-1.5-pro-preview-0409

非ストリーミング

curl

https://${REGION}-aiplatform.googleapis.com/v1/projects/${PROJECT_ID}/locations/${REGION}/publishers/google/models/${MODEL_ID}:generateContent \
  -d '{
    "contents": [{
      ...
    }],
    "generation_config": {
      ...
    },
    "safety_settings": {
      ...
    }
  }'

Python

gemini_model = GenerativeModel(MODEL_ID)
generation_config = GenerationConfig(...)

model_response = gemini_model.generate_content([...], generation_config, safety_settings={...})

ストリーミング

curl

https://${REGION}-aiplatform.googleapis.com/v1/projects/${PROJECT_ID}/locations/${REGION}/publishers/google/models/${MODEL_ID}:streamGenerateContent \
  -d '{
    "contents": [{
      ...
    }],
    "generation_config": {
      ...
    },
    "safety_settings": {
      ...
    }
  }'

Python

gemini_model = GenerativeModel(MODEL_ID)
model_response = gemini_model.generate_content([...], generation_config, safety_settings={...}, stream=True)

パラメータ リスト

パラメータ

contents

Content

モデルとの現在の会話の内容。

シングルターンのクエリの場合、これは単一のインスタンスです。マルチターン クエリの場合、これは会話履歴と最新のリクエストを含む繰り返しフィールドです。

system_instruction

省略可: Content

ユーザーがモデルに提供するシステム指示。

注: パートにはテキストのみを使用します。各パートのコンテンツは別の段落にします。

tools

省略可。Function Calling API をご覧ください。

tool_config

省略可。Function Calling API をご覧ください。

safety_settings

省略可: SafetySetting

安全でないコンテンツをブロックするためのリクエストごとの設定。

GenerateContentResponse.candidates に適用されます。

generation_config

省略可: GenerationConfig

生成の構成

コンテンツ

このクラスは、roleparts という 2 つの主要なプロパティで構成されています。role プロパティはコンテンツを生成している個人を表し、parts プロパティには複数の要素が含まれます。各要素はメッセージ内のデータ セグメントを表します。

パラメータ

role

省略可: string

メッセージを作成するエンティティの ID。user または model のいずれかにする必要があります。

  • user: メッセージが実際のユーザーによって送信されたことを示します(通常はユーザー生成のメッセージ)。
  • model: メッセージがモデルによって生成されたことを示します。

model 値は、マルチターンの会話中にモデルからのメッセージを会話に挿入するために使用されます。

マルチターンではない会話の場合、このフィールドは空白のままにするか、未設定のままにできます。

parts

Part

1 つのメッセージを構成する順序付きのパーツのリスト。パーツによって IANA MIME タイプが異なる場合があります。

パーツ

パラメータ

text

省略可: string

テキスト プロンプトまたはコード スニペット。

inline_data

省略可: Blob

未加工バイトのデータがインラインに含まれます。

file_data

省略可: FileData

ファイルに保存されたデータ。

function_call

省略可: FunctionCall

FunctionDeclaration.name を表す文字列と、モデルによって予測された関数呼び出しのパラメータを含む構造化 JSON オブジェクトが含まれます。

Function Calling API をご覧ください。

function_response

省略可: FunctionResponse

FunctionCall の結果の出力。FunctionDeclaration.name を表す文字列と、関数呼び出しからの出力を含む構造化 JSON オブジェクトが含まれます。これは、モデルのコンテキストとして使用されます。

Function Calling API をご覧ください。

video_metadata

省略可: VideoMetadata

動画のメタデータ。メタデータは、動画データが inline_data または file_data で表されている場合にのみ指定する必要があります。

Blob

パラメータ

mime_type

string

データの IANA MIME タイプ

data

bytes

元のバイト。

FileData

パラメータ

mime_type

string

データの IANA MIME タイプ

file_uri

文字列

データを格納するファイルの Cloud Storage URI

FunctionCall

パラメータ

name

string

呼び出す関数の名前。

args

Struct

JSON オブジェクト形式の関数パラメータと値。

パラメータの詳細については、Function Calling API をご覧ください。

FunctionResponse

パラメータ

name

string

呼び出す関数の名前。

response

Struct

JSON オブジェクト形式の関数のレスポンス。

VideoMetadata

パラメータ

start_offset

省略可: google.protobuf.Duration

動画の開始オフセット

end_offset

省略可: google.protobuf.Duration

動画の終了オフセット

SafetySetting

パラメータ

category

省略可: HarmCategory

有害のカテゴリ。

threshold

省略可: HarmBlockThreshold

有害なコンテンツのブロックしきい値

max_influential_terms

省略可: int

安全性スコアに最も大きく影響を与え、ブロックの原因となる可能性のある影響力の強い語句の最大数。

method

省略可: HarmBlockMethod

しきい値を確率スコアと重大度スコアのどちらに使用するかを指定します。指定しない場合、しきい値が確率スコアに使用されます。

HarmCategory

パラメータ

HARM_CATEGORY_UNSPECIFIED

有害カテゴリが指定されていません。

HARM_CATEGORY_HATE_SPEECH

有害カテゴリはヘイトスピーチです。

HARM_CATEGORY_DANGEROUS_CONTENT

有害カテゴリは危険なコンテンツです。

HARM_CATEGORY_HARASSMENT

有害カテゴリはハラスメントです。

HARM_CATEGORY_SEXUALLY_EXPLICIT

有害カテゴリは、性的描写が露骨なコンテンツです。

HarmBlockThreshold

パラメータ

HARM_BLOCK_THRESHOLD_UNSPECIFIED

有害ブロックのしきい値が指定されていません。

BLOCK_LOW_AND_ABOVE

低いしきい値以上をブロックします(つまり、より多くのものをブロックします)。

BLOCK_MEDIUM_AND_ABOVE

中程度のしきい値以上をブロックします。

BLOCK_ONLY_HIGH

高しきい値のみをブロックします(つまり、ブロックを少なくします)。

BLOCK_NONE

ブロックなし

HarmBlockMethod

パラメータ

HARM_BLOCK_METHOD_UNSPECIFIED

有害のブロック方法が指定されていません。

SEVERITY

有害のブロック方法で、確率スコアと重大度スコアの両方を使用します。

PROBABILITY

有害のブロック方法で、確率スコアを使用します。

GenerationConfig

パラメータ

temperature

省略可: float

予測のランダム性を制御します。

top_p

省略可: float

指定した場合、Nucleus サンプリングが使用されます。

top_k

省略可: float

指定した場合、トップ K サンプリングが使用されます。

candidate_count

省略可: int

生成する候補の数。

max_output_tokens

省略可: 整数

メッセージごとに生成する出力トークンの最大数。

stop_sequences

省略可: List[string]

停止シーケンス。

presence_penalty

省略可: float

正のペナルティ。

frequency_penalty

省略可: float

頻度のペナルティ。

response_mime_type

省略可: string (enum)

生成された候補テキストの mimetype レスポンスを出力します。

サポートされている mimetype:

  • text/plain: テキスト出力(デフォルト)。
  • application/json: 候補の JSON レスポンス。
  • モデルに、適切なレスポンス タイプを出力するよう促す必要があります。それ以外の場合、動作は未定義です。

これはプレビュー機能です。

  • PROJECT_ID = PROJECT_ID
  • REGION = us-central1
  • MODEL_ID = gemini-1.0-pro

テキスト推論

curl

curl -X POST \
 -H "Authorization: Bearer $(gcloud auth print-access-token)" \
 -H "Content-Type: application/json" \
 https://${REGION}-aiplatform.googleapis.com/v1/projects/${PROJECT_ID}/locations/${REGION}/publishers/google/models/${MODEL_ID}:generateContent \
 -d '{
   "contents": [{
     "role": "user",
     "parts": [{
       "text": "Write a story about a magic backpack."
     }]
   }]
 }'

Python

import vertexai
from vertexai.generative_models import GenerativeModel

vertexai.init(project=PROJECT_ID, location=REGION)

gemini_model = GenerativeModel(MODEL_ID)
model_response = gemini_model.generate_content("Write a story about a magic backpack.")

print(model_response)

マルチモダリティ

curl

curl -X POST \
 -H "Authorization: Bearer $(gcloud auth print-access-token)" \
 -H "Content-Type: application/json" \
 https://${REGION}-aiplatform.googleapis.com/v1/projects/${PROJECT_ID}/locations/${REGION}/publishers/google/models/${MODEL_ID}:generateContent \
 -d '{
   "contents": [{
     "role": "user",
     "parts": [
      {
        "text": "Are following video and image correlated?"
      },
      {
        "file_data": {"file_uri": "gs://cloud-samples-data/video/animals.mp4", "mime_type":"video/mp4"}
      },
      {
        "file_data": {"file_uri": "gs://generativeai-downloads/images/character.jpg", "mime_type":"image/jpeg"}
      }
     ]
   }]
 }'

Python

import vertexai
from vertexai.generative_models import GenerativeModel,Part

vertexai.init(project=PROJECT_ID, location=REGION)

gemini_model = GenerativeModel(MODEL_ID)
model_response = gemini_model.generate_content([
   "Are following video and image correlated?",
   Part.from_uri("gs://cloud-samples-data/video/animals.mp4", "video/mp4"),
   Part.from_uri("gs://generativeai-downloads/images/character.jpg", "image/jpeg")
])

print(model_response)

ストリーミング テキスト

curl

curl -X POST \
 -H "Authorization: Bearer $(gcloud auth print-access-token)" \
 -H "Content-Type: application/json" \
 https://${REGION}-aiplatform.googleapis.com/v1/projects/${PROJECT_ID}/locations/${REGION}/publishers/google/models/${MODEL_ID}:streamGenerateContent \
 -d '{
   "contents": [{
     "role": "user",
     "parts": [{
       "text": "Write a story about a magic backpack."
     }]
   }]
 }'

Python

import vertexai
from vertexai.generative_models import GenerativeModel

vertexai.init(project=PROJECT_ID, location=REGION)

gemini_model = GenerativeModel(MODEL_ID)
model_response = gemini_model.generate_content("Write a story about a magic backpack.", stream=True)

for resp in model_response:
  print(resp)

ストリーミング マルチモダリティ

curl

curl -X POST \
 -H "Authorization: Bearer $(gcloud auth print-access-token)" \
 -H "Content-Type: application/json" \
 https://${REGION}-aiplatform.googleapis.com/v1/projects/${PROJECT_ID}/locations/${REGION}/publishers/google/models/${MODEL_ID}:streamGenerateContent \
 -d '{
   "contents": [{
     "role": "user",
     "parts": [
      {
        "text": "Are following video and image correlated?"
      },
      {
        "file_data": {"file_uri": "gs://cloud-samples-data/video/animals.mp4", "mime_type":"video/mp4"}
      },
      {
        "file_data": {"file_uri": "gs://generativeai-downloads/images/character.jpg", "mime_type":"image/jpeg"}
      }
     ]
   }]
 }'

Python

import vertexai
from vertexai.generative_models import GenerativeModel,Part

vertexai.init(project=PROJECT_ID, location=REGION)

gemini_model = GenerativeModel(MODEL_ID)
model_response = gemini_model.generate_content([
   "Are following video and image correlated?",
   Part.from_uri("gs://cloud-samples-data/video/animals.mp4", "video/mp4"),
   Part.from_uri("gs://generativeai-downloads/images/character.jpg", "image/jpeg")
], stream=True)

for resp in model_response:
  print(resp)

さらに詳しい情報

詳しくは、次をご覧ください。