Extensions API

拡張機能は、大規模言語モデル(LLM)が外部データにアクセスしたり、計算を実行したり、その他のオペレーションを実行したりするためのツールです。リアルタイム データを処理し、現実世界のアクションを実行できます。

Vertex AI には、拡張機能の登録、管理、実行を行う Extension API が用意されています。Vertex AI には、コード インタープリタ拡張機能や Vertex AI Search 拡張機能など、Extension API のビルド済み拡張機能も用意されています。

制限事項

Extension API は us-central1 リージョンでのみ使用できます。

構文の例

拡張機能リソースを作成するための構文。

curl

curl -X POST \

-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \

https://${LOCATION}-aiplatform.googleapis.com/v1beta1/projects/${PROJECT_ID}/locations/${LOCATION}/extensions:import \
-d '{
  "displayName": "...",
  "description": "...",
  "manifest": {
    ...
    "apiSpec": {
      ...
    },
    "authConfig": {
      ...
    }
    ...
  }
}'

Python

from vertexai.preview import extensions

extensions.Extension.create(
  manifest: Union[JsonDict, ExtensionManifest],
  display_name: Optional[str] = None,
  description: Optional[str] = None,
  runtime_config: Optional[Union[JsonDict, RuntimeConfig]] = None
)

パラメータ リスト

リクエストの本文

パラメータ

displayName

省略可: string

API と UI からユーザーに表示される拡張機能の表示名。UTF-8 文字列で、最大 128 文字です。

description

省略可: string

API と UI からユーザーに表示される拡張機能の説明。UTF-8 文字列で、最大 1 MB です。

manifest

JsonDict|ExtensionManifest

拡張機能のマニフェスト。

runtimeConfig

省略可: JsonDict|RuntimeConfig

拡張機能のランタイム動作を制御するランタイム構成。

コード インタープリタ拡張機能の場合、形式は次のとおりです。

  "runtimeConfig": {
    "codeInterpreterRuntimeConfig": {
        "fileInputGcsBucket": string,
        "fileOutputGcsBucket": string
    }
  }

Vertex AI Search 拡張機能の場合、形式は次のとおりです。

  "runtimeConfig": {
    "vertexAiSearchRuntimeConfig": {
      "servingConfigName": string,
    }
  }

manifest

拡張機能のマニフェスト。

パラメータ

name

string

LLM が推論に使用する拡張機能の名前。UTF-8 文字列で、最大 128 文字です。

description

string

拡張機能の使用方法の自然言語による説明。説明は、LLM が推論を行う際に表示されます。これは、最大 1 MB の UTF-8 文字列にする必要があります。

apiSpec

ApiSpec

推論のために LLM に提示される API 仕様。意味があり、参考になる説明を入力する必要があります。apiSpec には、OpenAPI YAML ファイルを保存する Cloud Storage URI への参照が含まれます。

  "apiSpec": {
    "openApiGcsUri": string
  }

authConfig

JsonDict|AuthConfig

この拡張機能でサポートされている認証のタイプ。

拡張機能のインポート リクエストには、認証構成を含める必要があります。

"authConfig": {
  "authType": "GOOGLE_SERVICE_ACCOUNT_AUTH",
  "googleServiceAccountConfig": {
    "serviceAccount": string
  },
}

apiSpec

推論のために LLM に提示される API 仕様。

パラメータ

openApiGcsUri

string

拡張機能 API を記述する OpenAPI YAML ファイルの Cloud Storage URI(gs://vertex-extension-public/code_interpreter.yaml など)

authConfig

この拡張機能でサポートされている認証の種類。

パラメータ

authType

string

認証方法。使用できる値: GOOGLE_SERVICE_ACCOUNT_AUTH

googleServiceAccountConfig

コード インタープリタ拡張機能と Vertex AI Search 拡張機能は、Google サービス アカウント認証のみをサポートしています。この場合、Vertex AI は Vertex AI Extension サービス エージェントを使用して API にアクセスします。

パラメータ

serviceAccount

省略可: string

拡張機能の実行が実行されるサービス アカウント。サービス アカウントを指定する場合は、指定したサービス アカウントの Vertex AI Extension Service エージェントiam.serviceAccounts.getAccessToken 権限を付与する必要があります。指定しない場合、Vertex AI Extension サービス エージェントを使用して拡張機能が実行されます。

runtimeConfig

runtimeConfig オブジェクトには、拡張機能の実行時に使用される追加の構成が含まれています。

コード インタープリタ拡張機能

パラメータ

fileInputGcsBucket

省略可: string

拡張機能に入力するファイルの Cloud Storage バケット。Vertex Extension カスタム コード サービス エージェントに、このバケットに対する roles/storage.objectViewer 権限を付与する必要があります。指定しない場合、拡張機能はリクエスト本文のファイル コンテンツのみを受け取り、Cloud Storage ファイル入力を拒否します。

fileOutputGcsBucket

省略可: string

拡張機能から出力されるファイルの Cloud Storage バケット。Vertex Extension カスタム コード サービス エージェントに、このバケットに対する roles/storage.objectUser 権限を付与する必要があります。指定しない場合、ファイルの内容はレスポンスの本文に出力されます。

Vertex AI Search 拡張機能

パラメータ

servingConfigName

string

Vertex AI Search サービング構成名。拡張機能で使用する Vertex AI Search リソースを指定します。形式:

projects/{project}/locations/{location}/collections/{collection}/engines/{engine}/servingConfigs/{serving_config}

拡張機能を実行する

パラメータ

operation_id

string

この拡張機能で実行するオペレーションの選択した ID。

operation_params

省略可: JsonDict|Struct

このオペレーションの実行に使用されるリクエスト パラメータ。JSON は、パラメータ名をキーとして、実際のパラメータ値を値として持つマップの形式にする必要があります。たとえば、query というパラメータを文字列「Vertex AI とは」に設定するには、{"query": "What is Vertex AI?"} を使用します。

コード インタープリタ拡張機能をインポートする

拡張機能リソースを作成または登録します。

この例では、コード インタープリタ拡張機能をインポートする方法を示します。

REST

リクエストのデータを使用する前に、次のように置き換えます。

  • PROJECT_ID: 実際のプロジェクト ID
  • LOCATION: リクエストを処理するリージョン。
  • DISPLAY_NAME: API と UI からユーザーに表示される拡張機能の表示名。UTF-8 文字列で、最大 128 文字です。
  • DESCRIPTION: API と UI からユーザーに表示される拡張機能の説明。UTF-8 文字列で、最大 1 MB です。
  • MANIFEST_NAME: LLM が推論に使用する拡張機能の名前。UTF-8 文字列で、最大 128 文字
  • MANIFEST_DESCRIPTION: LLM に表示される自然言語の説明。拡張機能の使用方法を記述し、LLM が推論を実行するために不可欠です。UTF-8 文字列で、最大 1 MB です。
  • GCS_URI: 拡張機能 API を記述する OpenAPI YAML ファイルの Cloud Storage URI。
  • AUTH_TYPE: 認証方法。サポートされる値: GOOGLE_SERVICE_ACCOUNT_AUTH

HTTP メソッドと URL:

POST https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/extensions:import

リクエストの本文(JSON):

{
  "displayName": "DISPLAY_NAME",
  "description": "DESCRIPTION",
  "manifest": {
    "name": "NAME",
    "description": "MANIFEST_DESCRIPTION",
    "apiSpec": {
      "openApiGcsUri": "GCS_URI",
    },
    "authConfig": {
      "authType": "AUTH_TYPE",
      "googleServiceAccountConfig": {}
    }
  }
}

リクエストを送信するには、次のいずれかのオプションを選択します。

curl

リクエスト本文を request.json という名前のファイルに保存して、次のコマンドを実行します。

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/extensions:import"

PowerShell

リクエスト本文を request.json という名前のファイルに保存して、次のコマンドを実行します。

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/extensions:import" | Select-Object -Expand Content

Python

Vertex AI SDK for Python のインストールまたは更新の方法については、Vertex AI SDK for Python をインストールするをご覧ください。 詳細については、Python API リファレンス ドキュメントをご覧ください。

import vertexai
from vertexai.preview import extensions

# TODO(developer): Update and un-comment below line
# PROJECT_ID = "your-project-id"
vertexai.init(project=PROJECT_ID, location="us-central1")

extension = extensions.Extension.create(
    display_name="Code Interpreter",
    description="This extension generates and executes code in the specified language",
    manifest={
        "name": "code_interpreter_tool",
        "description": "Google Code Interpreter Extension",
        "api_spec": {
            "open_api_gcs_uri": "gs://vertex-extension-public/code_interpreter.yaml"
        },
        "auth_config": {
            "google_service_account_config": {},
            "auth_type": "GOOGLE_SERVICE_ACCOUNT_AUTH",
        },
    },
)
print(extension.resource_name)
# Example response:
# projects/123456789012/locations/us-central1/extensions/12345678901234567

ランタイム構成でインポートする

拡張機能リソースを作成または登録します。

この例では、RuntimeConfig を指定して Vertex AI Search 拡張機能をインポートします。

REST

リクエストのデータを使用する前に、次のように置き換えます。

  • PROJECT_ID: 実際のプロジェクト ID
  • LOCATION: リクエストを処理するリージョン。
  • DISPLAY_NAME: API と UI からユーザーに表示される拡張機能の表示名。UTF-8 文字列で、最大 128 文字です。
  • DESCRIPTION: API と UI からユーザーに表示される拡張機能の説明。UTF-8 文字列で、最大 1 MB です。
  • MANIFEST_NAME: LLM が推論に使用する拡張機能の名前。UTF-8 文字列で、最大 128 文字
  • MANIFEST_DESCRIPTION: LLM に表示される自然言語の説明。拡張機能の使用方法を記述し、LLM が推論を実行するために不可欠です。UTF-8 文字列で、最大 1 MB です。
  • GCS_URI: 拡張機能 API を記述する OpenAPI YAML ファイルの Cloud Storage URI。
  • AUTH_TYPE: 認証方法。サポートされる値: GOOGLE_SERVICE_ACCOUNT_AUTH
  • SERVING_CONFIG_NAME: 拡張機能が使用する Vertex AI Search リソースを指定する Vertex AI Search サービング構成名。形式: projects/{project}/locations/{location}/collections/{collection}/engines/{engine}/servingConfigs/{serving_config}

HTTP メソッドと URL:

POST https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/extensions:import

リクエストの本文(JSON):

{
  "displayName": "DISPLAY_NAME",
  "description": "DESCRIPTION",
  "manifest": {
    "name": "NAME",
    "description": "MANIFEST_DESCRIPTION",
    "apiSpec": {
      "openApiGcsUri": "GCS_URI",
    },
    "authConfig": {
      "authType": "AUTH_TYPE",
      "googleServiceAccountConfig": {}
    },
    runtime_config={
      "vertex_ai_search_runtime_config": {
          "serving_config_name": SERVING_CONFIG_NAME,
      }
    }
  }
}

リクエストを送信するには、次のいずれかのオプションを選択します。

curl

リクエスト本文を request.json という名前のファイルに保存して、次のコマンドを実行します。

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/extensions:import"

PowerShell

リクエスト本文を request.json という名前のファイルに保存して、次のコマンドを実行します。

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/extensions:import" | Select-Object -Expand Content

Python

import vertexai
from vertexai.preview import extensions

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

extension_vertex_ai_search = extensions.Extension.create(
    display_name = "vertex_ai_search",
    description = "This extension search from provided datastore",
    manifest = {
        "name": "vertex_ai_search",
        "description": "Google Vertex AI Search Extension",
        "api_spec": {
            "open_api_gcs_uri": "gs://vertex-extension-public/vertex_ai_search.yaml"
        },
        "auth_config": {
            "google_service_account_config": {},
            "auth_type": "GOOGLE_SERVICE_ACCOUNT_AUTH",
        },
    },
    runtime_config={
        "vertex_ai_search_runtime_config": {
            "serving_config_name": SERVING_CONFIG_NAME,
        }
    }
)

拡張機能を実行する

拡張機能を実行するには、拡張機能を直接呼び出し、リクエストで実行パラメータを指定します。

この例では、コード インタープリタ拡張機能 generate_and_execute を実行して、クエリ find the max value in the list: [1,2,3,4,-5] の回答を取得します。

REST

リクエストのデータを使用する前に、次のように置き換えます。

  • PROJECT_ID: 実際のプロジェクト ID
  • LOCATION: リクエストを処理するリージョン。
  • EXTENSION_ID: 拡張機能の ID。
  • OPERATION_ID: この拡張機能で実行するオペレーションの選択した ID。
  • QUERY: オペレーションを Key-Value 形式で実行するためのリクエスト パラメータ、{"query": "What is Vertex AI?"}.

HTTP メソッドと URL:

POST https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/extensions/EXTENSION_ID:execute

リクエストの本文(JSON):

{
  "operation_id": "OPERATION_ID",
  "operation_params": {
    "query": "QUERY",
  }
}

リクエストを送信するには、次のいずれかのオプションを選択します。

curl

リクエスト本文を request.json という名前のファイルに保存して、次のコマンドを実行します。

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/extensions/EXTENSION_ID:execute"

PowerShell

リクエスト本文を request.json という名前のファイルに保存して、次のコマンドを実行します。

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/extensions/EXTENSION_ID:execute" | Select-Object -Expand Content

Python

Vertex AI SDK for Python のインストールまたは更新の方法については、Vertex AI SDK for Python をインストールするをご覧ください。 詳細については、Python API リファレンス ドキュメントをご覧ください。

import vertexai
from vertexai.preview import extensions

# TODO(developer): Update and un-comment below lines
# PROJECT_ID = "your-project-id"
# extension_id = "your-extension-id"
vertexai.init(project=PROJECT_ID, location="us-central1")

extension = extensions.Extension(extension_id)

response = extension.execute(
    operation_id="generate_and_execute",
    operation_params={"query": "find the max value in the list: [1,2,3,4,-5]"},
)
print(response)
# Example response:
# {
#     "generated_code": "```python\n# Find the maximum value in the list\ndata = [1, 2,..", ..
#     "execution_result": "The maximum value in the list is: 4\n",
#     "execution_error": "",
#     "output_files": [],
# }

拡張機能の一覧表示

プロジェクト内の拡張機能を一覧表示します。

REST

リクエストのデータを使用する前に、次のように置き換えます。

  • PROJECT_ID: 実際のプロジェクト ID
  • LOCATION: リクエストを処理するリージョン。
  • EXTENSION_ID: 拡張機能の ID。

HTTP メソッドと URL:

GET https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/extensions

リクエストを送信するには、次のいずれかのオプションを選択します。

curl

次のコマンドを実行します。

curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/extensions"

PowerShell

次のコマンドを実行します。

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/extensions" | Select-Object -Expand Content

Python

Vertex AI SDK for Python のインストールまたは更新の方法については、Vertex AI SDK for Python をインストールするをご覧ください。 詳細については、Python API リファレンス ドキュメントをご覧ください。

import vertexai
from vertexai.preview import extensions

# TODO (developer):Update project_id
# PROJECT_ID = "your-project-id"
vertexai.init(project=PROJECT_ID, location="us-central1")

extensions_list = extensions.Extension.list()
print(extensions_list)
# Example response:
# [<vertexai.extensions._extensions.Extension object at 0x76e8ced37af0>
# resource name: projects/[PROJECT_ID]/locations/us-central1/extensions/1234567890123456]

延長を取得する

拡張機能の詳細を取得します。

REST

リクエストのデータを使用する前に、次のように置き換えます。

  • PROJECT_ID: 実際のプロジェクト ID
  • LOCATION: リクエストを処理するリージョン。
  • EXTENSION_ID: 拡張機能の ID。

HTTP メソッドと URL:

GET https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/extensions/EXTENSION_ID

リクエストを送信するには、次のいずれかのオプションを選択します。

curl

次のコマンドを実行します。

curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/extensions/EXTENSION_ID"

PowerShell

次のコマンドを実行します。

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/extensions/EXTENSION_ID" | Select-Object -Expand Content

Python

Vertex AI SDK for Python のインストールまたは更新の方法については、Vertex AI SDK for Python をインストールするをご覧ください。 詳細については、Python API リファレンス ドキュメントをご覧ください。

import vertexai
from vertexai.preview import extensions

# TODO(developer): Update and un-comment below lines
# PROJECT_ID = "your-project-id"
# extension_id = "your-extension-id"
vertexai.init(project=PROJECT_ID, location="us-central1")

extension = extensions.Extension(extension_id)
print(extension.resource_name)
# Example response:
# projects/[PROJECT_ID]/locations/us-central1/extensions/12345678901234567

拡張機能を更新する

拡張機能を更新する。

REST

リクエストのデータを使用する前に、次のように置き換えます。

  • PROJECT_ID: 実際のプロジェクト ID
  • LOCATION: リクエストを処理するリージョン。
  • EXTENSION_ID: 拡張機能の ID。
  • UPDATE_MASK: 更新するパラメータ。指定できる値は displayNamedescriptiontoolUseExamples です。

HTTP メソッドと URL:

PATCH https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/extensions/EXTENSION_ID?update_mask="UPDATE_MASK"

リクエストの本文(JSON):

{
  "description": "UPDATE_MASK",
}

リクエストを送信するには、次のいずれかのオプションを選択します。

curl

リクエスト本文を request.json という名前のファイルに保存して、次のコマンドを実行します。

curl -X PATCH \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/extensions/EXTENSION_ID?update_mask="UPDATE_MASK""

PowerShell

リクエスト本文を request.json という名前のファイルに保存して、次のコマンドを実行します。

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method PATCH `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/extensions/EXTENSION_ID?update_mask="UPDATE_MASK"" | Select-Object -Expand Content

拡張機能を削除する

拡張機能を削除する。

この例では、広告表示オプション ID に関連付けられている広告表示オプションを削除します。

REST

リクエストのデータを使用する前に、次のように置き換えます。

  • PROJECT_ID: 実際のプロジェクト ID
  • LOCATION: リクエストを処理するリージョン。
  • EXTENSION_ID: 拡張機能の ID。

HTTP メソッドと URL:

DELETE https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/extensions/EXTENSION_ID

リクエストを送信するには、次のいずれかのオプションを選択します。

curl

次のコマンドを実行します。

curl -X DELETE \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/extensions/EXTENSION_ID"

PowerShell

次のコマンドを実行します。

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method DELETE `
-Headers $headers `
-Uri "https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/extensions/EXTENSION_ID" | Select-Object -Expand Content

Python

Vertex AI SDK for Python のインストールまたは更新の方法については、Vertex AI SDK for Python をインストールするをご覧ください。 詳細については、Python API リファレンス ドキュメントをご覧ください。

import vertexai
from vertexai.preview import extensions

# TODO(developer): Update and un-comment below lines
# PROJECT_ID = "your-project-id"
# extension_id = "extension_id"
vertexai.init(project=PROJECT_ID, location="us-central1")

extension = extensions.Extension(extension_id)
extension.delete()
# Example response:
# ...
# Extension resource projects/[PROJECT_ID]/locations/us-central1/extensions/[extension_id] deleted.

次のステップ