API de Extensions

Las extensiones son herramientas para que los modelos de lenguaje grandes accedan a datos externos, ejecuten cálculos y realicen otras operaciones. Pueden procesar datos en tiempo real y realizar acciones reales.

Vertex AI proporciona la API de Extension que puede registrar, administrar y ejecutar extensiones. Vertex AI también proporciona un conjunto de extensiones compiladas previamente de la API de Extension, incluidas la extensión de intérprete de código y la extensión de Vertex AI Search.

Limitaciones

La API de Extension solo está disponible en la región us-central1.

Ejemplo de sintaxis

Sintaxis para crear un recurso de extensión.

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

Cuerpo de la solicitud

Parámetros

displayName

Opcional: string

El nombre visible de la extensión que se muestra a los usuarios desde la API y la IU. Debe ser una cadena UTF-8 de hasta 128 caracteres.

description

Opcional: string

La descripción de la extensión que se muestra a los usuarios desde la API y la IU. Debe ser una cadena UTF-8 de hasta 1 MB.

manifest

JsonDict|ExtensionManifest

Es el manifiesto de la extensión.

runtimeConfig

Opcional: JsonDict|RuntimeConfig

La configuración del entorno de ejecución que controla el comportamiento del entorno de ejecución de la extensión.

Para la extensión del intérprete de código, el formato es el siguiente:

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

Para la extensión de Vertex AI Search, el formato es el siguiente:

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

manifest

Es el manifiesto de la extensión.

Parámetros

name

string

El nombre de la extensión que usa el LLL para razonar. Debe ser una cadena UTF-8 de hasta 128 caracteres.

description

string

La descripción en lenguaje natural del uso de la extensión. La descripción se muestra al LLM para ayudarlo a realizar el razonamiento.Debe ser una cadena UTF-8 de hasta 1 MB.

apiSpec

ApiSpec

La especificación de la API que se muestra al LLM para razonar. Debes proporcionar una descripción informativa y significativa. apiSpec contiene la referencia al URI de Cloud Storage que almacena el archivo yaml de OpenAPI.

  "apiSpec": {
    "openApiGcsUri": string
  }

authConfig

JsonDict|AuthConfig

Tipo de autenticación que admite esta extensión.

Una solicitud de importación de extensión debe contener una configuración de autenticación.

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

apiSpec

La especificación de la API que se muestra al LLM para razonar.

Parámetros

openApiGcsUri

string

URI de Cloud Storage del archivo YAML de OpenAPI que describe la API de la extensión, como gs://vertex-extension-public/code_interpreter.yaml

authConfig

Es el tipo de autenticación que admite esta extensión.

Parámetros

authType

string

Método de autenticación Valores admitidos: GOOGLE_SERVICE_ACCOUNT_AUTH

googleServiceAccountConfig

La extensión de intérprete de código y la extensión de Vertex AI Search solo admiten la autenticación de la cuenta de servicio de Google, en la que Vertex AI usa el agente de servicio de extensión de Vertex AI para acceder a las APIs.

Parámetros

serviceAccount

Opcional: string

La cuenta de servicio con la que se realiza la ejecución de la extensión. Si se especifica la cuenta de servicio, se debe otorgar el permiso iam.serviceAccounts.getAccessToken al agente de servicio de extensiones de Vertex AI en la cuenta de servicio especificada. Si no se especifica, se usará el agente de servicio de la extensión de Vertex AI para ejecutar la extensión.

runtimeConfig

El objeto runtimeConfig contiene configuraciones adicionales que se usan cuando se ejecuta la extensión.

Extensión del intérprete de código

Parámetros

fileInputGcsBucket

Opcional: string

Es el bucket de Cloud Storage para la entrada de archivos a la extensión. El agente de servicio del código personalizado de la extensión de Vertex debe tener el permiso roles/storage.objectViewer para este bucket. Si no se especifica, la extensión solo aceptará el contenido del archivo del cuerpo de la solicitud y rechazará las entradas de archivos de Cloud Storage.

fileOutputGcsBucket

Opcional: string

Es el bucket de Cloud Storage para el archivo de salida de la extensión. El agente de servicio del código personalizado de la extensión de Vertex debe tener el permiso roles/storage.objectUser para este bucket. Si no se especifica, el contenido del archivo se muestra en el cuerpo de la respuesta.

Extensión de Vertex AI Search

Parámetros

servingConfigName

string

Es el nombre de la configuración de publicación de Vertex AI Search para especificar qué recurso de Vertex AI Search usa la extensión. Formato:

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

Ejecuta la extensión

Parámetros

operation_id

string

El ID seleccionado de la operación que se ejecutará en esta extensión

operation_params

Opcional: JsonDict|Struct

Los parámetros de solicitud que se usan para ejecutar esta operación. El JSON debe tener la forma de un mapa con el nombre del parámetro como clave y el valor del parámetro real como valor. Por ejemplo, para establecer un parámetro llamado query en la cadena "¿Qué es Vertex AI?", puedes usar {"query": "What is Vertex AI?"}.

Ejemplos

Importa una extensión del intérprete de código

Crea o registra un recurso de extensión.

En este ejemplo, se muestra cómo importar una extensión del intérprete de código.

REST

Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

  • PROJECT_ID: El ID del proyecto.
  • LOCATION: La región para procesar la solicitud.
  • DISPLAY_NAME: El nombre visible de la extensión que se muestra a los usuarios desde la API y la IU. Debe ser una cadena UTF-8 de hasta 128 caracteres.
  • DESCRIPTION: La descripción de la extensión que se muestra a los usuarios desde la API y la IU. Debe ser una cadena UTF-8 de hasta 1 MB.
  • MANIFEST_NAME: El nombre de la extensión que usa el LLL para razonar. Debe ser una cadena UTF-8 de hasta 128 caracteres.
  • MANIFEST_DESCRIPTION: La descripción en lenguaje natural que se muestra al LLM. Debería describir el uso de la extensión y es esencial que el LLM realice el razonamiento. Debe ser una cadena UTF-8 de hasta 1 MB.
  • GCS_URI: Es el URI de Cloud Storage del archivo YAML de OpenAPI que describe la API de la extensión.
  • AUTH_TYPE: Método de autenticación Valores admitidos: GOOGLE_SERVICE_ACCOUNT_AUTH.

Método HTTP y URL:

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

Cuerpo JSON de la solicitud:

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

Para enviar tu solicitud, elige una de estas opciones:

curl

Guarda el cuerpo de la solicitud en un archivo llamado request.json y ejecuta el siguiente 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

Guarda el cuerpo de la solicitud en un archivo llamado request.json y ejecuta el siguiente 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

Si deseas obtener información para instalar o actualizar el SDK de Vertex AI para Python, consulta Instala el SDK de Vertex AI para Python. Si deseas obtener más información, consulta la documentación de referencia de la API de Python.

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

Importa con una configuración del entorno de ejecución

Crea o registra un recurso de extensión.

En este ejemplo, se muestra cómo importar una extensión de Vertex AI Search especificando RuntimeConfig.

REST

Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

  • PROJECT_ID: El ID del proyecto.
  • LOCATION: La región para procesar la solicitud.
  • DISPLAY_NAME: El nombre visible de la extensión que se muestra a los usuarios desde la API y la IU. Debe ser una cadena UTF-8 de hasta 128 caracteres.
  • DESCRIPTION: La descripción de la extensión que se muestra a los usuarios desde la API y la IU. Debe ser una cadena UTF-8 de hasta 1 MB.
  • MANIFEST_NAME: El nombre de la extensión que usa el LLL para razonar. Debe ser una cadena UTF-8 de hasta 128 caracteres.
  • MANIFEST_DESCRIPTION: La descripción en lenguaje natural que se muestra al LLM. Debería describir el uso de la extensión y es esencial que el LLM realice el razonamiento. Debe ser una cadena UTF-8 de hasta 1 MB.
  • GCS_URI: Es el URI de Cloud Storage del archivo YAML de OpenAPI que describe la API de la extensión.
  • AUTH_TYPE: Método de autenticación Valores admitidos: GOOGLE_SERVICE_ACCOUNT_AUTH.
  • SERVING_CONFIG_NAME: Es el nombre de la configuración de publicación de Vertex AI Search para especificar qué recurso de Vertex AI Search usa la extensión. Formato: projects/{project}/locations/{location}/collections/{collection}/engines/{engine}/servingConfigs/{serving_config}

Método HTTP y URL:

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

Cuerpo JSON de la solicitud:

{
  "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 tu solicitud, elige una de estas opciones:

curl

Guarda el cuerpo de la solicitud en un archivo llamado request.json y ejecuta el siguiente 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

Guarda el cuerpo de la solicitud en un archivo llamado request.json y ejecuta el siguiente 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,
        }
    }
)

Ejecuta una extensión

Para ejecutar una extensión, llámala directamente y proporciona los parámetros de ejecución en la solicitud.

En este ejemplo, se ejecuta la extensión del intérprete de código generate_and_execute para obtener la respuesta de la consulta find the max value in the list: [1,2,3,4,-5].

REST

Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

  • PROJECT_ID: El ID del proyecto.
  • LOCATION: La región para procesar la solicitud.
  • EXTENSION_ID: Es el ID de la extensión.
  • OPERATION_ID: El ID seleccionado de la operación que se ejecutará en esta extensión
  • QUERY: Son los parámetros de solicitud para ejecutar la operación en un formato de par clave-valor, {"query": "What is Vertex AI?"}..

Método HTTP y URL:

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

Cuerpo JSON de la solicitud:

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

Para enviar tu solicitud, elige una de estas opciones:

curl

Guarda el cuerpo de la solicitud en un archivo llamado request.json y ejecuta el siguiente 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

Guarda el cuerpo de la solicitud en un archivo llamado request.json y ejecuta el siguiente 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

Si deseas obtener información para instalar o actualizar el SDK de Vertex AI para Python, consulta Instala el SDK de Vertex AI para Python. Si deseas obtener más información, consulta la documentación de referencia de la API de Python.

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": [],
# }

Haz una lista de extensiones

Muestra una lista de las extensiones de un proyecto.

REST

Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

  • PROJECT_ID: El ID del proyecto.
  • LOCATION: La región para procesar la solicitud.
  • EXTENSION_ID: Es el ID de la extensión.

Método HTTP y URL:

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

Para enviar tu solicitud, elige una de estas opciones:

curl

Ejecuta el siguiente 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

Ejecuta el siguiente 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

Si deseas obtener información para instalar o actualizar el SDK de Vertex AI para Python, consulta Instala el SDK de Vertex AI para Python. Si deseas obtener más información, consulta la documentación de referencia de la API de Python.

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

Cómo obtener una extensión

Obtén detalles de una extensión.

REST

Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

  • PROJECT_ID: El ID del proyecto.
  • LOCATION: La región para procesar la solicitud.
  • EXTENSION_ID: Es el ID de la extensión.

Método HTTP y URL:

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

Para enviar tu solicitud, elige una de estas opciones:

curl

Ejecuta el siguiente 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

Ejecuta el siguiente 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

Si deseas obtener información para instalar o actualizar el SDK de Vertex AI para Python, consulta Instala el SDK de Vertex AI para Python. Si deseas obtener más información, consulta la documentación de referencia de la API de Python.

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

Actualiza una extensión

Actualiza una extensión.

REST

Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

  • PROJECT_ID: El ID del proyecto.
  • LOCATION: La región para procesar la solicitud.
  • EXTENSION_ID: Es el ID de la extensión.
  • UPDATE_MASK: Es el parámetro que se actualizará. Valores aceptados: displayName, description, o toolUseExamples

Método HTTP y URL:

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

Cuerpo JSON de la solicitud:

{
  "description": "UPDATE_MASK",
}

Para enviar tu solicitud, elige una de estas opciones:

curl

Guarda el cuerpo de la solicitud en un archivo llamado request.json y ejecuta el siguiente 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

Guarda el cuerpo de la solicitud en un archivo llamado request.json y ejecuta el siguiente 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

Borra la extensión

Borrar una extensión

En este ejemplo, se borra la extensión asociada al ID de extensión.

REST

Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

  • PROJECT_ID: El ID del proyecto.
  • LOCATION: La región para procesar la solicitud.
  • EXTENSION_ID: Es el ID de la extensión.

Método HTTP y URL:

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

Para enviar tu solicitud, elige una de estas opciones:

curl

Ejecuta el siguiente 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

Ejecuta el siguiente 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

Si deseas obtener información para instalar o actualizar el SDK de Vertex AI para Python, consulta Instala el SDK de Vertex AI para Python. Si deseas obtener más información, consulta la documentación de referencia de la API de Python.

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.

¿Qué sigue?