API Extensions

As extensões são ferramentas para modelos de linguagem (conteúdo extenso) (MDIs/CEs) acederem a dados externos, executarem cálculos e realizarem outras operações. Podem processar dados em tempo real e realizar ações no mundo real.

A Vertex AI fornece a API Extensions que pode registar, gerir e executar extensões. O Vertex AI também oferece um conjunto de extensões pré-criadas da API Extensions, incluindo a extensão do intérprete de código e a extensão do Vertex AI Search.

Limitações

A API Extension só está disponível na região us-central1.

Sintaxe de exemplo

Sintaxe para criar um recurso de extensão.

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
)

Lista de parâmetros

Corpo do pedido

Parâmetros

displayName

Opcional: string

O nome a apresentar da extensão apresentado aos utilizadores a partir da API e da IU. Esta deve ser uma string UTF-8 com um máximo de 128 carateres.

description

Opcional: string

A descrição da extensão apresentada aos utilizadores a partir da API e da IU. Esta deve ser uma string UTF-8 até 1 MB.

manifest

JsonDict|ExtensionManifest

O manifesto da extensão.

runtimeConfig

Opcional: JsonDict|RuntimeConfig

A configuração de tempo de execução que controla o comportamento de tempo de execução da extensão.

Para a extensão do intérprete de código, o formato é o seguinte:

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

Para a extensão Vertex AI Search, o formato é o seguinte:

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

manifest

O manifesto da extensão.

Parâmetros

name

string

O nome da extensão que é usada pelo MDG para o raciocínio. Esta deve ser uma string UTF-8 com um máximo de 128 carateres.

description

string

A descrição em linguagem natural da utilização da extensão. A descrição é apresentada ao MDI/CE para o ajudar a raciocinar.Deve ser uma string UTF-8 até 1 MB.

apiSpec

ApiSpec

A especificação da API apresentada ao MDG para raciocínio. Deve fornecer uma descrição significativa e informativa. apiSpec contém a referência ao URI do Cloud Storage que armazena o ficheiro YAML OpenAPI.

  "apiSpec": {
    "openApiGcsUri": string
  }

authConfig

JsonDict|AuthConfig

O tipo de autenticação suportado por esta extensão.

Um pedido de importação de extensões tem de conter uma configuração de autenticação.

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

apiSpec

A especificação da API apresentada ao MDG para raciocínio.

Parâmetros

openApiGcsUri

string

URI do Cloud Storage do ficheiro YAML da OpenAPI que descreve a API de extensão, como gs://vertex-extension-public/code_interpreter.yaml

authConfig

O tipo de autenticação suportado por esta extensão.

Parâmetros

authType

string

Método de autenticação. Valores suportados: GOOGLE_SERVICE_ACCOUNT_AUTH.

googleServiceAccountConfig

A extensão do intérprete de código e a extensão do Vertex AI Search só suportam a autenticação da conta de serviço Google, em que o Vertex AI usa o agente de serviço de extensão do Vertex AI para aceder às APIs.

Parâmetros

serviceAccount

Opcional: string

A conta de serviço na qual a execução da extensão é executada. Se a conta de serviço for especificada, a autorização iam.serviceAccounts.getAccessToken deve ser concedida ao agente do serviço de extensão do Vertex AI na conta de serviço especificada. Se não for especificado, o agente do serviço de extensões da Vertex AI é usado para executar a extensão.

runtimeConfig

O objeto runtimeConfig contém configurações adicionais usadas quando executa a extensão.

Extensão do intérprete de código

Parâmetros

fileInputGcsBucket

Opcional: string

O contentor do Cloud Storage para a entrada de ficheiros na extensão. Deve ser concedida a autorização roles/storage.objectViewer a este contentor ao agente do serviço de código personalizado da extensão do Vertex. Se não for especificado, a extensão só aceita conteúdos de ficheiros do corpo do pedido e rejeita entradas de ficheiros do Cloud Storage.

fileOutputGcsBucket

Opcional: string

O contentor do Cloud Storage para a saída de ficheiros da extensão. Deve ser concedida a autorização roles/storage.objectUser a este contentor ao agente do serviço de código personalizado da extensão do Vertex. Se não for especificado, o conteúdo do ficheiro é apresentado no corpo da resposta.

Extensão do Vertex AI Search

Parâmetros

servingConfigName

string

Nome da configuração de publicação do Vertex AI Search para especificar que recurso do Vertex AI Search a extensão usa. Formato:

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

Executar extensão

Parâmetros

operation_id

string

O ID selecionado da operação a ser executada nesta extensão.

operation_params

Opcional: JsonDict|Struct

Parâmetros de pedido que são usados para executar esta operação. O JSON deve estar no formato de um mapa com o nome do parâmetro como chave e o valor do parâmetro real como valor. Por exemplo, para definir um parâmetro denominado query para a string "O que é o Vertex AI?", pode usar {"query": "What is Vertex AI?"}.

Exemplos

Importe uma extensão do interpretador de código

Crie ou registe um recurso de extensão.

Este exemplo mostra como importar uma extensão do intérprete de código.

REST

Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:

  • PROJECT_ID: o seu ID do projeto.
  • LOCATION: a região para processar o pedido.
  • DISPLAY_NAME: o nome a apresentar da extensão que é apresentado aos utilizadores a partir da API e da IU. Esta deve ser uma string UTF-8 com um máximo de 128 carateres.
  • DESCRIPTION: a descrição da extensão apresentada aos utilizadores a partir da API e da IU. Esta deve ser uma string UTF-8 até 1 MB.
  • MANIFEST_NAME: o nome da extensão que é usada pelo GML para raciocínio. Esta deve ser uma string UTF-8 com um máximo de 128 carateres
  • MANIFEST_DESCRIPTION: a descrição em linguagem natural apresentada ao GML. Deve descrever a utilização da extensão e é essencial para o MDG realizar o raciocínio. Esta deve ser uma string UTF-8 até 1 MB.
  • GCS_URI: URI do Cloud Storage do ficheiro YAML OpenAPI que descreve a API de extensão.
  • AUTH_TYPE: Método de autenticação. Valores suportados: GOOGLE_SERVICE_ACCOUNT_AUTH.

Método HTTP e URL:

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

Corpo JSON do pedido:

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

Para enviar o seu pedido, escolha uma destas opções:

curl

Guarde o corpo do pedido num ficheiro com o nome request.json, e execute o seguinte comando:

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

Guarde o corpo do pedido num ficheiro com o nome request.json, e execute o seguinte comando:

$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

Para saber como instalar ou atualizar o SDK Vertex AI para Python, consulte o artigo Instale o SDK Vertex AI para Python. Para mais informações, consulte a Python documentação de referência da 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

Importe com uma configuração de tempo de execução

Crie ou registe um recurso de extensão.

Este exemplo mostra como importar uma extensão do Vertex AI Search especificando RuntimeConfig.

REST

Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:

  • PROJECT_ID: .
  • LOCATION: a região para processar o pedido.
  • DISPLAY_NAME: o nome a apresentar da extensão que é apresentado aos utilizadores a partir da API e da IU. Esta deve ser uma string UTF-8 com um máximo de 128 carateres.
  • DESCRIPTION: a descrição da extensão apresentada aos utilizadores a partir da API e da IU. Esta deve ser uma string UTF-8 até 1 MB.
  • MANIFEST_NAME: o nome da extensão que é usada pelo GML para raciocínio. Esta deve ser uma string UTF-8 com um máximo de 128 carateres
  • MANIFEST_DESCRIPTION: a descrição em linguagem natural apresentada ao GML. Deve descrever a utilização da extensão e é essencial para o MDG realizar o raciocínio. Esta deve ser uma string UTF-8 até 1 MB.
  • GCS_URI: URI do Cloud Storage do ficheiro YAML OpenAPI que descreve a API de extensão.
  • AUTH_TYPE: Método de autenticação. Valores suportados: GOOGLE_SERVICE_ACCOUNT_AUTH.
  • SERVING_CONFIG_NAME: nome da configuração de publicação do Vertex AI Search para especificar que recurso do Vertex AI Search a extensão usa. Formato: projects/{project}/locations/{location}/collections/{collection}/engines/{engine}/servingConfigs/{serving_config}

Método HTTP e URL:

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

Corpo JSON do pedido:

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

Para enviar o seu pedido, escolha uma destas opções:

curl

Guarde o corpo do pedido num ficheiro com o nome request.json, e execute o seguinte comando:

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

Guarde o corpo do pedido num ficheiro com o nome request.json, e execute o seguinte comando:

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

Execute uma extensão

Para executar uma extensão, chame diretamente a extensão e faculte os parâmetros de execução no pedido.

Este exemplo executa a extensão do interpretador de código generate_and_execute para obter a resposta à consulta find the max value in the list: [1,2,3,4,-5].

REST

Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:

  • PROJECT_ID: .
  • LOCATION: a região para processar o pedido.
  • EXTENSION_ID: o ID da extensão.
  • OPERATION_ID: o ID selecionado da operação a executar nesta extensão.
  • QUERY: os parâmetros de pedido para executar a operação num formato de chave-valor, {"query": "What is Vertex AI?"}.

Método HTTP e URL:

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

Corpo JSON do pedido:

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

Para enviar o seu pedido, escolha uma destas opções:

curl

Guarde o corpo do pedido num ficheiro com o nome request.json, e execute o seguinte comando:

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

Guarde o corpo do pedido num ficheiro com o nome request.json, e execute o seguinte comando:

$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

Para saber como instalar ou atualizar o SDK Vertex AI para Python, consulte o artigo Instale o SDK Vertex AI para Python. Para mais informações, consulte a Python documentação de referência da 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": [],
# }

Apresentar extensões

Apresenta extensões num projeto.

REST

Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:

  • PROJECT_ID: .
  • LOCATION: a região para processar o pedido.
  • EXTENSION_ID: o ID da extensão.

Método HTTP e URL:

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

Para enviar o seu pedido, escolha uma destas opções:

curl

Execute o seguinte comando:

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

PowerShell

Execute o seguinte comando:

$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

Para saber como instalar ou atualizar o SDK Vertex AI para Python, consulte o artigo Instale o SDK Vertex AI para Python. Para mais informações, consulte a Python documentação de referência da 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]

Obtenha uma extensão

Obtenha detalhes de uma extensão.

REST

Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:

  • PROJECT_ID: .
  • LOCATION: a região para processar o pedido.
  • EXTENSION_ID: o ID da extensão.

Método HTTP e URL:

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

Para enviar o seu pedido, escolha uma destas opções:

curl

Execute o seguinte comando:

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

Execute o seguinte comando:

$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

Para saber como instalar ou atualizar o SDK Vertex AI para Python, consulte o artigo Instale o SDK Vertex AI para Python. Para mais informações, consulte a Python documentação de referência da 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

Atualize uma extensão

Atualize uma extensão.

REST

Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:

  • PROJECT_ID: .
  • LOCATION: a região para processar o pedido.
  • EXTENSION_ID: o ID da extensão.
  • UPDATE_MASK: o parâmetro a atualizar. Valores aceites: displayName, description ou toolUseExamples.

Método HTTP e URL:

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

Corpo JSON do pedido:

{
  "description": "UPDATE_MASK",
}

Para enviar o seu pedido, escolha uma destas opções:

curl

Guarde o corpo do pedido num ficheiro com o nome request.json, e execute o seguinte comando:

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

Guarde o corpo do pedido num ficheiro com o nome request.json, e execute o seguinte comando:

$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

Eliminar extensão

Elimine uma extensão.

Este exemplo elimina a extensão associada ao ID da extensão.

REST

Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:

  • PROJECT_ID: .
  • LOCATION: a região para processar o pedido.
  • EXTENSION_ID: o ID da extensão.

Método HTTP e URL:

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

Para enviar o seu pedido, escolha uma destas opções:

curl

Execute o seguinte comando:

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

Execute o seguinte comando:

$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

Para saber como instalar ou atualizar o SDK Vertex AI para Python, consulte o artigo Instale o SDK Vertex AI para Python. Para mais informações, consulte a Python documentação de referência da 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.

O que se segue?