API Extensions

Les extensions sont des outils permettant aux grands modèles de langage (LLM) d'accéder à des données externes, d'exécuter des calculs et d'effectuer d'autres opérations. Ils peuvent traiter des données en temps réel et effectuer des actions réelles.

Vertex AI fournit l'API Extension qui peut enregistrer, gérer et exécuter des extensions. Vertex AI fournit également un ensemble d'extensions prédéfinies à partir de l'API Extension, y compris l'extension de l'interpréteur de code et l'extension Vertex AI Search.

Limites

L'API Extension n'est disponible que dans la région us-central1.

Exemple de syntaxe

Syntaxe permettant de créer une ressource d'extension.

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
)

Liste des paramètres

Corps de la requête

Paramètres

displayName

Facultatif : string.

Nom à afficher de l'extension présenté aux utilisateurs à partir de l'API et de l'interface utilisateur. Il doit s'agir d'une chaîne UTF-8 comportant jusqu'à 128 caractères.

description

Facultatif : string.

Description de l'extension affichée auprès des utilisateurs de l'API et de l'interface utilisateur. Il doit s'agir d'une chaîne UTF-8 d'une taille maximale de 1 Mo.

manifest

JsonDict|ExtensionManifest

Fichier manifeste de l'extension.

runtimeConfig

Facultatif : JsonDict|RuntimeConfig.

Configuration d'exécution qui contrôle le comportement d'exécution de l'extension.

Pour l'extension de l'interpréteur de code, le format est le suivant :

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

Pour l'extension Vertex AI Search, le format est le suivant :

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

manifest

Fichier manifeste de l'extension.

Paramètres

name

string

Nom de l'extension utilisé par le LLM pour le raisonnement. Il doit s'agir d'une chaîne UTF-8 comportant jusqu'à 128 caractères.

description

string

Description en langage naturel de l'utilisation de l'extension. La description est présentée au LLM pour l'aider à effectuer son raisonnement. Il doit s'agir d'une chaîne UTF-8 d'une taille maximale de 1 Mo.

apiSpec

ApiSpec

Spécification d'API présentée au LLM à des fins de raisonnement. Vous devez fournir une description pertinente et informative. apiSpec contient la référence à l'URI Cloud Storage stockant le fichier yaml OpenAPI.

  "apiSpec": {
    "openApiGcsUri": string
  }

authConfig

JsonDict|AuthConfig

Type d'authentification pris en charge par cette extension.

Une requête d'importation d'extension doit contenir une configuration d'authentification.

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

apiSpec

Spécification d'API présentée au LLM à des fins de raisonnement.

Paramètres

openApiGcsUri

string

URI Cloud Storage du fichier YAML OpenAPI décrivant l'API d'extension, telle que gs://vertex-extension-public/code_interpreter.yaml

authConfig

Type d'authentification compatible avec cette extension.

Paramètres

authType

string

Méthode d'authentification Valeurs autorisées : GOOGLE_SERVICE_ACCOUNT_AUTH

googleServiceAccountConfig

L'extension de l'interpréteur de code et l'extension Vertex AI Search ne sont compatibles qu'avec l'authentification des comptes de service Google, où Vertex AI utilise l'agent de service Vertex AI Extension pour accéder aux API.

Paramètres

serviceAccount

Facultatif : string.

Compte de service sous lequel s'exécute l'extension. Si le compte de service est spécifié, l'autorisation iam.serviceAccounts.getAccessToken doit être accordée à l'agent de service d'extension de Vertex AI sur le compte de service spécifié. S'il n'est pas spécifié, l'agent de service Vertex AI Extension est utilisé pour exécuter l'extension.

runtimeConfig

L'objet runtimeConfig contient des configurations supplémentaires utilisées lors de l'exécution de l'extension.

Extension de l'interpréteur de code

Paramètres

fileInputGcsBucket

Facultatif : string.

Bucket Cloud Storage utilisé pour la saisie du fichier dans l'extension. L'agent de service de code personnalisé de l'extension Vertex doit disposer de l'autorisation roles/storage.objectViewer pour ce bucket. Si elle n'est pas spécifiée, l'extension n'accepte que le contenu des fichiers à partir du corps de la requête et refuse les entrées de fichiers Cloud Storage.

fileOutputGcsBucket

Facultatif : string.

Bucket Cloud Storage pour le résultat du fichier de l'extension. L'agent de service de code personnalisé de l'extension Vertex doit disposer de l'autorisation roles/storage.objectUser pour ce bucket. Si non spécifié, le contenu du fichier est généré dans le corps de la réponse.

Extension Vertex AI Search

Paramètres

servingConfigName

string

Nom de la configuration de diffusion Vertex AI Search pour spécifier la ressource Vertex AI Search utilisée par l'extension. Format:

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

Exécuter l'extension

Paramètres

operation_id

string

ID sélectionné de l'opération à exécuter dans cette extension.

operation_params

Facultatif : JsonDict|Struct.

Paramètres de requête utilisés pour exécuter cette opération. Le fichier JSON doit se présenter sous la forme d'un mappage avec le nom du paramètre en tant que clé et la valeur de paramètre réelle comme valeur. Par exemple, pour définir un paramètre appelé query sur la chaîne "Qu'est-ce que Vertex AI ?", vous pouvez utiliser {"query": "What is Vertex AI?"}.

Examples

Importer une extension de l'interpréteur de code

Créez ou enregistrez une ressource d'extension.

Cet exemple montre comment importer une extension d'interpréteur de code.

REST

Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :

  • PROJECT_ID : l'ID de votre projet.
  • LOCATION : région dans laquelle traiter la requête.
  • DISPLAY_NAME : nom à afficher de l'extension présenté aux utilisateurs à partir de l'API et de l'interface utilisateur. Il doit s'agir d'une chaîne UTF-8 comportant jusqu'à 128 caractères.
  • DESCRIPTION : description de l'extension affichée auprès des utilisateurs de l'API et de l'interface utilisateur. Il doit s'agir d'une chaîne UTF-8 d'une taille maximale de 1 Mo.
  • MANIFEST_NAME : nom de l'extension utilisée par le LLM pour le raisonnement. Il doit s'agir d'une chaîne UTF-8 comportant jusqu'à 128 caractères.
  • MANIFEST_DESCRIPTION : description en langage naturel présentée au LLM. Elle doit décrire l'utilisation de l'extension et est essentielle pour que le LLM effectue le raisonnement. Il doit s'agir d'une chaîne UTF-8 d'une taille maximale de 1 Mo.
  • GCS_URI : URI Cloud Storage du fichier YAML OpenAPI décrivant l'API d'extension.
  • AUTH_TYPE : méthode d'authentification Valeurs autorisées : GOOGLE_SERVICE_ACCOUNT_AUTH

Méthode HTTP et URL :

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

Corps JSON de la requête :

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

Pour envoyer votre requête, choisissez l'une des options suivantes :

curl

Enregistrez le corps de la requête dans un fichier nommé request.json, puis exécutez la commande suivante :

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

Enregistrez le corps de la requête dans un fichier nommé request.json, puis exécutez la commande suivante :

$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

Pour savoir comment installer ou mettre à jour le SDK Vertex AI pour Python, consultez la section Installer le SDK Vertex AI pour Python. Pour en savoir plus, consultez la documentation de référence de l'API Python.

import vertexai
from vertexai.preview import extensions

# TODO(developer): Update and un-comment below lines
# project_id = "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",
        },
    },
)

Importer avec une configuration d'environnement d'exécution

Créez ou enregistrez une ressource d'extension.

Cet exemple montre comment importer une extension Vertex AI Search en spécifiant RuntimeConfig.

REST

Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :

  • PROJECT_ID : l'ID de votre projet.
  • LOCATION : région dans laquelle traiter la requête.
  • DISPLAY_NAME : nom à afficher de l'extension présenté aux utilisateurs à partir de l'API et de l'interface utilisateur. Il doit s'agir d'une chaîne UTF-8 comportant jusqu'à 128 caractères.
  • DESCRIPTION : description de l'extension affichée auprès des utilisateurs de l'API et de l'interface utilisateur. Il doit s'agir d'une chaîne UTF-8 d'une taille maximale de 1 Mo.
  • MANIFEST_NAME : nom de l'extension utilisée par le LLM pour le raisonnement. Il doit s'agir d'une chaîne UTF-8 comportant jusqu'à 128 caractères.
  • MANIFEST_DESCRIPTION : description en langage naturel présentée au LLM. Elle doit décrire l'utilisation de l'extension et est essentielle pour que le LLM effectue le raisonnement. Il doit s'agir d'une chaîne UTF-8 d'une taille maximale de 1 Mo.
  • GCS_URI : URI Cloud Storage du fichier YAML OpenAPI décrivant l'API d'extension.
  • AUTH_TYPE : méthode d'authentification Valeurs autorisées : GOOGLE_SERVICE_ACCOUNT_AUTH
  • SERVING_CONFIG_NAME : nom de la configuration de diffusion Vertex AI Search permettant de spécifier la ressource Vertex AI Search utilisée par l'extension. Format : projects/{project}/locations/{location}/collections/{collection}/engines/{engine}/servingConfigs/{serving_config}

Méthode HTTP et URL :

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

Corps JSON de la requête :

{
  "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,
      }
    }
  }
}

Pour envoyer votre requête, choisissez l'une des options suivantes :

curl

Enregistrez le corps de la requête dans un fichier nommé request.json, puis exécutez la commande suivante :

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

Enregistrez le corps de la requête dans un fichier nommé request.json, puis exécutez la commande suivante :

$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,
        }
    }
)

Exécuter une extension

Pour exécuter une extension, appelez-la directement et indiquez les paramètres d'exécution dans la requête.

Cet exemple exécute l'extension de l'interpréteur de code generate_and_execute pour obtenir la réponse à la requête find the max value in the list: [1,2,3,4,-5].

REST

Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :

  • PROJECT_ID : l'ID de votre projet.
  • LOCATION : région dans laquelle traiter la requête.
  • EXTENSION_ID : ID de l'extension.
  • OPERATION_ID : ID sélectionné de l'opération à exécuter dans cette extension.
  • QUERY : paramètres de requête pour exécuter l'opération au format clé-valeur, {"query": "What is Vertex AI?"}.

Méthode HTTP et URL :

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

Corps JSON de la requête :

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

Pour envoyer votre requête, choisissez l'une des options suivantes :

curl

Enregistrez le corps de la requête dans un fichier nommé request.json, puis exécutez la commande suivante :

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

Enregistrez le corps de la requête dans un fichier nommé request.json, puis exécutez la commande suivante :

$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

Pour savoir comment installer ou mettre à jour le SDK Vertex AI pour Python, consultez la section Installer le SDK Vertex AI pour Python. Pour en savoir plus, consultez la documentation de référence de l'API Python.

import vertexai
from vertexai.preview import extensions

# TODO(developer): Update and un-comment below lines
# project_id = "PROJECT_ID"
# extension_id = "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)

Répertorier les extensions

Répertoriez les extensions d'un projet.

REST

Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :

  • PROJECT_ID : l'ID de votre projet.
  • LOCATION : région dans laquelle traiter la requête.
  • EXTENSION_ID : ID de l'extension.

Méthode HTTP et URL :

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

Pour envoyer votre requête, choisissez l'une des options suivantes :

curl

Exécutez la commande suivante :

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

PowerShell

Exécutez la commande suivante :

$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

Pour savoir comment installer ou mettre à jour le SDK Vertex AI pour Python, consultez la section Installer le SDK Vertex AI pour Python. Pour en savoir plus, consultez la documentation de référence de l'API Python.

import vertexai
from vertexai.preview import extensions

# TODO(developer): Update and un-comment below lines
# project_id = "PROJECT_ID"

vertexai.init(project=project_id, location="us-central1")

extensions = extensions.Extension.list()
print(extensions)

Obtenir une extension

Obtenez des informations sur une extension.

REST

Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :

  • PROJECT_ID : l'ID de votre projet.
  • LOCATION : région dans laquelle traiter la requête.
  • EXTENSION_ID : ID de l'extension.

Méthode HTTP et URL :

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

Pour envoyer votre requête, choisissez l'une des options suivantes :

curl

Exécutez la commande suivante :

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

Exécutez la commande suivante :

$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

Pour savoir comment installer ou mettre à jour le SDK Vertex AI pour Python, consultez la section Installer le SDK Vertex AI pour Python. Pour en savoir plus, consultez la documentation de référence de l'API Python.

import vertexai
from vertexai.preview import extensions

# TODO(developer): Update and un-comment below lines
# project_id = "PROJECT_ID"
# extension_id = "EXTENSION_ID"

vertexai.init(project=project_id, location="us-central1")

extension = extensions.Extension(extension_id)
print(extension)

Mettre à jour une extension

Mettez à jour une extension.

REST

Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :

  • PROJECT_ID : l'ID de votre projet.
  • LOCATION : région dans laquelle traiter la requête.
  • EXTENSION_ID : ID de l'extension.
  • UPDATE_MASK : paramètre à mettre à jour. Valeurs acceptées, displayName, description ou toolUseExamples.

Méthode HTTP et URL :

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

Corps JSON de la requête :

{
  "description": "UPDATE_MASK",
}

Pour envoyer votre requête, choisissez l'une des options suivantes :

curl

Enregistrez le corps de la requête dans un fichier nommé request.json, puis exécutez la commande suivante :

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

Enregistrez le corps de la requête dans un fichier nommé request.json, puis exécutez la commande suivante :

$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

Supprimer l'extension

Supprimez une extension.

Cet exemple supprime l'extension associée à l'ID d'extension.

REST

Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :

  • PROJECT_ID : l'ID de votre projet.
  • LOCATION : région dans laquelle traiter la requête.
  • EXTENSION_ID : ID de l'extension.

Méthode HTTP et URL :

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

Pour envoyer votre requête, choisissez l'une des options suivantes :

curl

Exécutez la commande suivante :

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

Exécutez la commande suivante :

$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

Pour savoir comment installer ou mettre à jour le SDK Vertex AI pour Python, consultez la section Installer le SDK Vertex AI pour Python. Pour en savoir plus, consultez la documentation de référence de l'API Python.

import vertexai
from vertexai.preview import extensions

# TODO(developer): Update and un-comment below lines
# project_id = "PROJECT_ID"
# extension_id = "EXTENSION_ID"

vertexai.init(project=project_id, location="us-central1")

extension = extensions.Extension(extension_id)
extension.delete()

Étapes suivantes