Apresente funcionalidades da loja online

O Vertex AI Feature Store permite-lhe publicar online valores de funcionalidades em tempo real a partir de uma vista de funcionalidades numa loja online. Por exemplo, pode publicar valores de caraterísticas a partir de uma vista de caraterísticas para previsões online. Uma visualização de funcionalidades tem de ser sincronizada, pelo menos, uma vez antes de poder publicar funcionalidades online a partir dessa funcionalidade.

Se a visualização de funcionalidades for definida com base em grupos de funcionalidades e funcionalidades, o Vertex AI Feature Store obtém os valores de funcionalidades mais recentes correspondentes a um ID de entidade específico. Se existirem vários registos com o mesmo valor na coluna ID, o Vertex AI Feature Store obtém os valores de caraterísticas não nulos mais recentes, com base na coluna feature_timestamp.

Se a visualização de funcionalidades estiver diretamente associada a uma origem de dados do BigQuery sem associar grupos de funcionalidades e funcionalidades, o Vertex AI Feature Store obtém todos os valores das funcionalidades da origem de dados. Neste caso, cada linha na origem de dados tem de conter um ID único.

Consoante o tipo de publicação online configurado para a sua loja online, pode publicar valores de atributos de uma das seguintes formas:

Antes de começar

Autentique o Vertex AI, a menos que já o tenha feito.

Select the tab for how you plan to use the samples on this page:

Python

Para usar os Python exemplos nesta página num ambiente de desenvolvimento local, instale e inicialize a CLI gcloud e, em seguida, configure as Credenciais predefinidas da aplicação com as suas credenciais de utilizador.

    Instale a CLI Google Cloud.

    Se estiver a usar um fornecedor de identidade (IdP) externo, primeiro tem de iniciar sessão na CLI gcloud com a sua identidade federada.

    If you're using a local shell, then create local authentication credentials for your user account:

    gcloud auth application-default login

    You don't need to do this if you're using Cloud Shell.

    If an authentication error is returned, and you are using an external identity provider (IdP), confirm that you have signed in to the gcloud CLI with your federated identity.

Para mais informações, consulte Set up authentication for a local development environment.

REST

Para usar os exemplos da API REST nesta página num ambiente de desenvolvimento local, usa as credenciais que fornece à CLI gcloud.

    Instale a CLI Google Cloud.

    Se estiver a usar um fornecedor de identidade (IdP) externo, primeiro tem de iniciar sessão na CLI gcloud com a sua identidade federada.

Para mais informações, consulte o artigo Autenticar para usar REST na Google Cloud documentação de autenticação.

Obtenha valores de funcionalidades através da publicação online do Bigtable

Pode usar o serviço online do Bigtable para fazer o seguinte:

Obtenha valores de funcionalidades para uma única entidade

Se a vista de funcionalidades tiver apenas uma coluna de ID de entidade, pode publicar funcionalidades especificando o valor contido nessa coluna. No entanto, se a visualização de caraterísticas tiver várias colunas de ID de entidade, pode localizar um registo de caraterística especificando os valores nessas colunas para constituir o ID de entidade exclusivo do registo de caraterística.

Obtenha valores de atributos de uma visualização de atributos com apenas uma coluna de ID de entidade

Use os seguintes exemplos para obter valores de funcionalidades para um ID de entidade específico, em que a vista de funcionalidades tem apenas uma coluna de ID de entidade.

REST

Para obter todos os valores das funcionalidades mais recentes de um ID de entidade específico de uma instância de FeatureView, envie um pedido POST através do método featureViews.fetchFeatureValues.

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

  • LOCATION_ID: região onde a loja online está localizada, como us-central1.
  • PROJECT_ID: o ID do seu projeto.
  • FEATUREONLINESTORE_NAME: o nome da loja online que contém a vista de funcionalidades.
  • FEATUREVIEW_NAME: o nome da vista de funcionalidades a partir da qual quer publicar valores de funcionalidades.
  • ENTITY_ID: o valor da coluna de ID no registo de funcionalidades a partir do qual quer publicar os valores de funcionalidades mais recentes.
  • FORMAT: opcional: o formato no qual quer obter os valores das caraterísticas. São suportados os seguintes formatos:
    • KEY_VALUE
    • PROTO_STRUCT

Método HTTP e URL:

POST https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/featureOnlineStores/FEATUREONLINESTORE_NAME/featureViews/FEATUREVIEW_NAME:fetchFeatureValues

Corpo JSON do pedido:

{
  data_key: { key: "ENTITY_ID" },
  data_format: "FORMAT"
}

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_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/featureOnlineStores/FEATUREONLINESTORE_NAME/featureViews/FEATUREVIEW_NAME:fetchFeatureValues"

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_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/featureOnlineStores/FEATUREONLINESTORE_NAME/featureViews/FEATUREVIEW_NAME:fetchFeatureValues" | Select-Object -Expand Content

Deve receber uma resposta JSON semelhante à seguinte:

key_values {
  features {
    value {
      int64_value: 258348
    }
    name: "feature_0"
  }
  features {
    value {
      double_value: 0.96300036744534068
    }
    name: "feature_1"
  }
  features {
    value {
      double_value: 0.42787383695351083
    }
    name: "feature_2"
  }
  features {
    value {
      double_value: 0.12219888824743128
    }
    name: "feature_3"
  }
  features {
    value {
      double_value: 0.037523154697944622
    }
    name: "feature_4"
  }
  features {
    value {
      double_value: 0.1766952509448767
    }
    name: "feature_5"
  }
}

Python

Use o exemplo seguinte para obter valores de funcionalidades com base num ID de entidade específico através da publicação online do Bigtable.

from google.cloud import aiplatform
from vertexai.resources.preview.feature_store import FeatureOnlineStore, FeatureView

aiplatform.init(project="PROJECT_ID", location="LOCATION_ID")
fos = FeatureOnlineStore("FEATUREONLINESTORE_NAME")
fv = FeatureView("FEATUREVIEW_NAME", feature_online_store_id=fos.name)
fv.read("ENTITY_ID")

Substitua o seguinte:

  • LOCATION_ID: região onde a loja online está localizada, como us-central1.

  • PROJECT_ID: o ID do seu projeto.

  • FEATUREONLINESTORE_NAME: o nome da loja online que contém a vista de funcionalidades.

  • FEATUREVIEW_NAME: o nome da vista de funcionalidades a partir da qual quer publicar valores de funcionalidades.

  • ENTITY_ID: o valor da coluna de ID para a qual quer publicar os valores das funcionalidades mais recentes.

  • FORMAT: opcional: o formato no qual quer obter os valores das caraterísticas. Os formatos suportados incluem formatos de pares JSON KEY_VALUE e proto PROTO_STRUCT.

Obtenha valores de atributos de uma vista de atributos com várias colunas de ID de entidades

Use os seguintes exemplos para obter valores de funcionalidades para um ID de entidade específico, em que a vista de funcionalidades tem várias colunas de ID de entidade.

REST

Para obter todos os valores das funcionalidades mais recentes de um ID de entidade específico de uma instância de FeatureView, envie um pedido POST através do método featureViews.fetchFeatureValues.

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

  • LOCATION_ID: região onde a loja online está localizada, como us-central1.
  • PROJECT_ID: o ID do seu projeto.
  • FEATUREONLINESTORE_NAME: o nome da loja online que contém a vista de funcionalidades.
  • FEATUREVIEW_NAME: o nome da vista de funcionalidades a partir da qual quer publicar valores de funcionalidades.
  • ENTITY_ID_PART_1, ENTITY_ID_PART_2 e ENTITY_ID_PART_3: as partes do ID da entidade nas colunas de ID da entidade configuradas para a vista de funcionalidades. Estas partes constituem o ID da entidade exclusivo para o registo do elemento.
  • FORMAT: opcional: o formato no qual quer obter os valores das caraterísticas. São suportados os seguintes formatos:
    • KEY_VALUE
    • PROTO_STRUCT

Método HTTP e URL:

POST https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/featureOnlineStores/FEATUREONLINESTORE_NAME/featureViews/FEATUREVIEW_NAME:fetchFeatureValues

Corpo JSON do pedido:

{
  data_key: { composite_key: { parts: ["ENTITY_ID_PART_1", "ENTITY_ID_PART_2", "ENTITY_ID_PART_3"] } },
  data_format: "FORMAT"
}

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_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/featureOnlineStores/FEATUREONLINESTORE_NAME/featureViews/FEATUREVIEW_NAME:fetchFeatureValues"

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_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/featureOnlineStores/FEATUREONLINESTORE_NAME/featureViews/FEATUREVIEW_NAME:fetchFeatureValues" | Select-Object -Expand Content

Deve receber uma resposta JSON semelhante à seguinte:

key_values {
  features {
    value {
      int64_value: 258348
    }
    name: "feature_0"
  }
  features {
    value {
      double_value: 0.96300036744534068
    }
    name: "feature_1"
  }
  features {
    value {
      double_value: 0.42787383695351083
    }
    name: "feature_2"
  }
  features {
    value {
      double_value: 0.12219888824743128
    }
    name: "feature_3"
  }
  features {
    value {
      double_value: 0.037523154697944622
    }
    name: "feature_4"
  }
  features {
    value {
      double_value: 0.1766952509448767
    }
    name: "feature_5"
  }
}

Python

Use o exemplo seguinte para obter valores de funcionalidades com base num ID de entidade específico através da publicação online do Bigtable.

from google.cloud import aiplatform
from vertexai.resources.preview.feature_store import FeatureOnlineStore, FeatureView

aiplatform.init(project="PROJECT_ID", location="LOCATION_ID")
fos = FeatureOnlineStore("FEATUREONLINESTORE_NAME")
fv = FeatureView("FEATUREVIEW_NAME", feature_online_store_id=fos.name)
fv.read(["ENTITY_ID_PART_1", "ENTITY_ID_PART_2", "ENTITY_ID_PART_3"])

Substitua o seguinte:

  • LOCATION_ID: região onde a loja online está localizada, como us-central1.

  • PROJECT_ID: o ID do seu projeto.

  • FEATUREONLINESTORE_NAME: o nome da loja online que contém a vista de funcionalidades.

  • FEATUREVIEW_NAME: o nome da vista de funcionalidades a partir da qual quer publicar valores de funcionalidades.

  • ENTITY_ID_PART_1, ENTITY_ID_PART_2 e ENTITY_ID_PART_3: as partes do ID da entidade nas colunas de ID da entidade configuradas para a vista de recursos. Estas partes constituem o ID da entidade exclusivo para o registo do elemento.

  • FORMAT: opcional: o formato no qual quer obter os valores das caraterísticas. Os formatos suportados incluem formatos de pares JSON KEY_VALUE e proto PROTO_STRUCT.

Obtenha valores de funcionalidades para um conjunto de entidades

Use o exemplo seguinte para obter valores de caraterísticas especificando um conjunto de IDs de várias colunas de ID de entidades através do serviço online do Bigtable.

REST

Para obter todos os valores das funcionalidades mais recentes de um ID de entidade específico de uma instância de FeatureView, envie um pedido POST através do método featureViews.streamingFetchFeatureValues.

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

  • LOCATION_ID: região onde a loja online está localizada, como us-central1.
  • PROJECT_ID: o ID do seu projeto.
  • FEATUREONLINESTORE_NAME: o nome da loja online que contém a vista de funcionalidades.
  • FEATUREVIEW_NAME: o nome da vista de funcionalidades a partir da qual quer publicar valores de funcionalidades.
  • ENTITY_ID_1, ENTITY_ID_2, ENTITY_ID_3 e ENTITY_ID_4: O conjunto de valores das colunas de ID nos registos de atributos a partir dos quais quer publicar os valores de atributos mais recentes. Tenha em atenção que agrupar os IDs das entidades como várias listas aninhadas num pedido pode ajudar a reduzir a latência, uma vez que o Vertex AI Feature Store executa uma operação de leitura separada para cada lista aninhada de IDs.

Método HTTP e URL:

POST https://LOCATION_ID-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION_ID/featureOnlineStores/FEATUREONLINESTORE_NAME/featureViews/FEATUREVIEW_NAME:streamingFetchFeatureValues

Corpo JSON do pedido:

[
  {
    data_keys: [{key: "ENTITY_ID_1"}, {key: "ENTITY_ID_2"}],
    feature_view: "projects/PROJECT_ID/locations/LOCATION_ID/featureOnlineStores/FEATUREONLINESTORE_NAME/featureViews/FEATUREVIEW_NAME"
  },
  {
    data_keys: [{key: "ENTITY_ID_3"}, {key: "ENTITY_ID_4"}],
    feature_view: "projects/PROJECT_ID/locations/LOCATION_ID/featureOnlineStores/FEATUREONLINESTORE_NAME/featureViews/FEATUREVIEW_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_ID-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION_ID/featureOnlineStores/FEATUREONLINESTORE_NAME/featureViews/FEATUREVIEW_NAME:streamingFetchFeatureValues"

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_ID-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION_ID/featureOnlineStores/FEATUREONLINESTORE_NAME/featureViews/FEATUREVIEW_NAME:streamingFetchFeatureValues" | Select-Object -Expand Content

Deve receber uma resposta JSON semelhante à seguinte:

[data {
  key_values {
    features {
      name: "movies"
      value {
        string_value: "movie_04"
      }
    }
    features {
      name: "feature_timestamp"
      value {
        int64_value: 1631694494000000
      }
    }
  }
  data_key {
    key: "eve"
  }
}
, data {
  key_values {
    features {
      name: "movies"
      value {
        string_value: "movie_03"
      }
    }
    features {
      name: "feature_timestamp"
      value {
        int64_value: 1631612115000000
      }
    }
  }
  data_key {
    key: "alice"
  }
}
data {
  key_values {
    features {
      name: "movies"
      value {
        string_value: "movie_02"
      }
    }
    features {
      name: "feature_timestamp"
      value {
        int64_value: 1631694494000000
      }
    }
  }
  data_key {
    key: "bob"
  }
}
]

Python

Use o exemplo seguinte para obter valores de caraterísticas de várias colunas de ID de entidades através do serviço online do Bigtable.

from google.cloud.aiplatform_v1beta1 import FeatureOnlineStoreServiceClient
from google.cloud.aiplatform_v1beta1.types import feature_online_store_service as feature_online_store_service_pb2

data_client = FeatureOnlineStoreServiceClient(
  client_options={"api_endpoint": f"LOCATION_ID-aiplatform.googleapis.com"}
)

feature_view = "projects/PROJECT_ID/locations/LOCATION_ID/featureOnlineStores/FEATUREONLINESTORE_NAME/featureViews/FEATUREVIEW_NAME"

keys_list=[
    ["ENTITY_ID_1","ENTITY_ID_2"],
    ["ENTITY_ID_3","ENTITY_ID_4"]
  ]

requests = []

for keys in keys_list:
  requests.append(
    feature_online_store_service_pb2.StreamingFetchFeatureValuesRequest(
      feature_view=feature_view,
      data_keys=[
          feature_online_store_service_pb2.FeatureViewDataKey(key=key)
          for key in keys
      ]
    )
  )

responses = data_client.streaming_fetch_feature_values(
    requests=iter(requests)
)
responses = [response for response in responses]

Substitua o seguinte:

  • LOCATION_ID: região onde a loja online está localizada, como us-central1.

  • PROJECT_ID: o ID do seu projeto.

  • FEATUREONLINESTORE_NAME: o nome da loja online que contém a vista de funcionalidades.

  • FEATUREVIEW_NAME: o nome da vista de funcionalidades a partir da qual quer publicar valores de funcionalidades.

  • ENTITY_ID_1, ENTITY_ID_2, ENTITY_ID_3 e ENTITY_ID_4: os IDs das entidades a partir das quais quer publicar os valores das funcionalidades mais recentes. Tenha em atenção que agrupar os IDs das entidades como várias listas aninhadas num pedido pode ajudar a reduzir a latência, uma vez que o Vertex AI Feature Store executa uma operação de leitura separada para cada lista aninhada de IDs.

Obtenha valores de funcionalidades através da publicação online otimizada a partir de um ponto final público

Se configurou a instância da loja online para publicar valores de atributos através da publicação online otimizada a partir de um ponto final público, tem de realizar os seguintes passos para obter valores de atributos a partir de uma visualização de atributos na loja online:

  1. Obtenha o nome de domínio do ponto final público para a instância FeatureOnlineStore.

  2. Obtenha valores de funcionalidades a partir de um ID de entidade através do nome do domínio do ponto final público.

Obtenha o nome do domínio do ponto final público para a loja online

Quando cria e configura uma instância da loja online para o serviço online otimizado com um ponto final público, o Vertex AI Feature Store gera o nome do domínio do ponto final público para a loja online. Antes de poder começar a publicar valores de atributos a partir de uma vista de atributos na loja online, tem de obter o nome de domínio do ponto final público a partir dos detalhes da loja online.

Use o exemplo seguinte para obter os detalhes de uma instância de loja online.

REST

Para obter os detalhes de um recurso FeatureOnlineStore no seu projeto, envie um pedido através do método featureOnlineStores.get.GET

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

  • LOCATION_ID: região onde a loja online está localizada, como us-central1.
  • PROJECT_ID: o ID do seu projeto.
  • FEATUREONLINESTORE_NAME: o nome da instância da loja online.

Método HTTP e URL:

GET https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/featureOnlineStores/FEATUREONLINESTORE_NAME

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_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/featureOnlineStores/FEATUREONLINESTORE_NAME"

PowerShell

Execute o seguinte comando:

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

Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/featureOnlineStores/FEATUREONLINESTORE_NAME" | Select-Object -Expand Content

Deve receber uma resposta JSON semelhante à seguinte:

{
  "name": "projects/PROJECT_NUMBER/locations/LOCATION_ID/featureOnlineStores/FEATUREONLINESTORE_NAME_1",
  "createTime": "2023-09-06T23:25:04.256314Z",
  "updateTime": "2023-09-06T23:25:04.256314Z",
  "etag": "AMEw9yMgoV0bAsYuKwVxz4Y7lOmxV7riNVHg217KaQAKORqvdqGCrQ1DIt8yHgoGXf8=",
  "state": "STABLE",
  "dedicatedServingEndpoint": {
    "publicEndpointDomainName": "PUBLIC_ENDPOINT_DOMAIN_NAME"
  },
  "optimized": {}
}

Precisa do PUBLIC_ENDPOINT_DOMAIN_NAME da resposta para obter os valores das funcionalidades no passo seguinte.

Obtenha valores de funcionalidades a partir de um ID de entidade

Depois de obter o nome do domínio do ponto final público para a instância da loja online, use o exemplo seguinte para obter valores de funcionalidades para um ID de entidade específico através da publicação online otimizada.

REST

Para obter todos os valores de funcionalidades mais recentes de um ID de entidade específico de uma instância de FeatureView, envie um pedido POST através do método featureViews.fetchFeatureValues.

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

  • PUBLIC_ENDPOINT_DOMAIN_NAME: o nome do domínio do ponto final público da instância da loja online que recuperou através do método featureOnlineStores.get.
  • LOCATION_ID: região onde a loja online está localizada, como us-central1.
  • PROJECT_ID: o ID do seu projeto.
  • FEATUREONLINESTORE_NAME: o nome da loja online que contém a vista de funcionalidades.
  • FEATUREVIEW_NAME: o nome da vista de funcionalidades a partir da qual quer publicar valores de funcionalidades.
  • ENTITY_ID: o valor da coluna de ID no registo de funcionalidades a partir do qual quer publicar os valores de funcionalidades mais recentes.
  • FORMAT: opcional: o formato usado para obter os valores das caraterísticas. São suportados os seguintes formatos:
    • KEY_VALUE
    • PROTO_STRUCT

Método HTTP e URL:

POST https://PUBLIC_ENDPOINT_DOMAIN_NAME/v1/projects/PROJECT_ID/locations/LOCATION_ID/featureOnlineStores/FEATUREONLINESTORE_NAME/featureViews/FEATUREVIEW_NAME:fetchFeatureValues

Corpo JSON do pedido:

{
  data_key: { key: "ENTITY_ID" },
  data_format: "FORMAT"
}

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://PUBLIC_ENDPOINT_DOMAIN_NAME/v1/projects/PROJECT_ID/locations/LOCATION_ID/featureOnlineStores/FEATUREONLINESTORE_NAME/featureViews/FEATUREVIEW_NAME:fetchFeatureValues"

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://PUBLIC_ENDPOINT_DOMAIN_NAME/v1/projects/PROJECT_ID/locations/LOCATION_ID/featureOnlineStores/FEATUREONLINESTORE_NAME/featureViews/FEATUREVIEW_NAME:fetchFeatureValues" | Select-Object -Expand Content

Deve receber uma resposta JSON semelhante à seguinte:

key_values {
  features {
    value {
      int64_value: 258348
    }
    name: "feature_0"
  }
  features {
    value {
      double_value: 0.96300036744534068
    }
    name: "feature_1"
  }
  features {
    value {
      double_value: 0.42787383695351083
    }
    name: "feature_2"
  }
  features {
    value {
      double_value: 0.12219888824743128
    }
    name: "feature_3"
  }
  features {
    value {
      double_value: 0.037523154697944622
    }
    name: "feature_4"
  }
  features {
    value {
      double_value: 0.1766952509448767
    }
    name: "feature_5"
  }
}

Python

Use o exemplo seguinte para obter valores de funcionalidades com base num ID de entidade específico através da publicação online otimizada.

from google.cloud.aiplatform_v1 import FeatureOnlineStoreServiceClient
from google.cloud.aiplatform_v1.types import feature_online_store_service as feature_online_store_service_pb2

data_client = FeatureOnlineStoreServiceClient(
  client_options={"api_endpoint": f"PUBLIC_ENDPOINT_DOMAIN_NAME"}
)
data_client.fetch_feature_values(
  request=feature_online_store_service_pb2.FetchFeatureValuesRequest(
    feature_view=f"projects/PROJECT_ID/locations/LOCATION_ID/featureOnlineStores/FEATUREONLINESTORE_NAME/featureViews/FEATUREVIEW_NAME",
    data_key=feature_online_store_service_pb2.FeatureViewDataKey(key=f"ENTITY_ID"),
    data_format=feature_online_store_service_pb2.FeatureViewDataFormat.FORMAT,
  )
)

Substitua o seguinte:

  • PUBLIC_ENDPOINT_DOMAIN_NAME: o nome do domínio do ponto final público da instância da loja online que recuperou através do método featureOnlineStores.get.

  • LOCATION_ID: região onde a loja online está localizada, como us-central1.

  • PROJECT_ID: o ID do seu projeto.

  • FEATUREONLINESTORE_NAME: o nome da loja online que contém a vista de funcionalidades.

  • FEATUREVIEW_NAME: o nome da vista de funcionalidades a partir da qual quer publicar valores de funcionalidades.

  • ENTITY_ID: o valor da coluna de ID no registo de funcionalidades a partir do qual quer publicar os valores de funcionalidades mais recentes.

  • FORMAT: opcional: o formato no qual quer obter os valores das caraterísticas. Os formatos suportados incluem formatos de pares JSON KEY_VALUE e proto PROTO_STRUCT.

Obtenha valores de funcionalidades através da publicação online otimizada a partir de um ponto final do Private Service Connect

Se configurou a instância da loja online para publicar valores de atributos através da publicação online otimizada a partir de um ponto final do Private Service Connect, tem de realizar os seguintes passos para obter valores de atributos a partir de uma visualização de atributos na loja online:

  1. Recupere a configuração do Private Service Connect para a instância FeatureOnlineStore.

  2. Adicione um ponto final para o Private Service Connect à configuração de rede.

  3. Estabeleça ligação ao ponto final do Private Service Connect através de gRPC.

  4. Obtenha valores de atributos a partir de um ID de entidade.

Recupere a string de anexo do serviço para a loja online

Quando cria e configura uma instância de loja online para o serviço online otimizado com um ponto final do Private Service Connect, o Vertex AI Feature Store gera uma string de associação de serviços que pode usar para configurar o ponto final do Private Service Connect. Pode obter a string de associação de serviço a partir dos detalhes da loja online.

Use o exemplo seguinte para obter os detalhes de uma instância de loja online.

REST

Para obter os detalhes de um recurso FeatureOnlineStore no seu projeto, envie um pedido através do método featureOnlineStores.get.GET

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

  • LOCATION_ID: região onde a loja online está localizada, como us-central1.
  • PROJECT_ID: o ID do seu projeto.
  • FEATUREONLINESTORE_NAME: o nome da instância da loja online.

Método HTTP e URL:

GET https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/featureOnlineStores/FEATUREONLINESTORE_NAME

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_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/featureOnlineStores/FEATUREONLINESTORE_NAME"

PowerShell

Execute o seguinte comando:

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

Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/featureOnlineStores/FEATUREONLINESTORE_NAME" | Select-Object -Expand Content

Deve receber uma resposta JSON semelhante à seguinte:

{
  "name": "projects/PROJECT_NUMBER/locations/LOCATION_ID/featureOnlineStores/FEATUREONLINESTORE_NAME_1",
  "createTime": "2023-09-06T23:25:04.256314Z",
  "updateTime": "2023-09-06T23:25:04.256314Z",
  "etag": "AMEw9yMgoV0bAsYuKwVxz4Y7lOmxV7riNVHg217KaQAKORqvdqGCrQ1DIt8yHgoGXf8=",
  "state": "STABLE",
  "dedicatedServingEndpoint": {
    "privateServiceConnectConfig": {
      "enablePrivateServiceConnect": "true",
      "projectAllowlist": [
        "PROJECT_NAME"
      ]
    },
    serviceAttachment: "SERVICE_ATTACHMENT_STRING"
  },
  "optimized": {}
}

Precisa do SERVICE_ATTACHMENT_STRING da resposta para obter os valores das funcionalidades no passo seguinte.

Adicione um ponto final para o Private Service Connect

Para adicionar um ponto final do Private Service Connect para o serviço online otimizado à configuração da sua rede, execute os seguintes passos:

  1. Na Google Cloud consola, selecione o projeto que contém a instância da loja online.

  2. Crie um ponto final para o Private Service Connect especificando o SERVICE_ATTACHMENT_STRING como o serviço de destino. Para obter informações sobre como criar um ponto final para o Private Service Connect, consulte o artigo Crie um ponto final.

Depois de criar o ponto final, este é apresentado no separador Pontos finais ligados na página Private Service Connect. O endereço IP do ponto final aparece na coluna Endereços IP.

Aceda ao separador Pontos finais ligados

Tem de usar este endereço IP para estabelecer ligação ao ponto final da instância da loja online ao ponto final do Private Service Connect através de gRPC no passo seguinte.

Estabeleça ligação ao ponto final do Private Service Connect através do gRPC

Use o seguinte exemplo de código para estabelecer ligação ao ponto final do Private Service Connect criado para a sua loja online através do gRPC.

Python

from google.cloud.aiplatform_v1 import FeatureOnlineStoreServiceClient
from google.cloud.aiplatform_v1.services.feature_online_store_service.transports.grpc import FeatureOnlineStoreServiceGrpcTransport
import grpc

data_client = FeatureOnlineStoreServiceClient(
  transport = FeatureOnlineStoreServiceGrpcTransport(
    # Add the IP address of the Endpoint you just created.
    channel = grpc.insecure_channel("ENDPOINT_IP:10002")
  )
)

Substitua o seguinte:

  • ENDPOINT_IP: o endereço IP do ponto final na coluna Endereços IP na página Private Service Connect.

Obtenha valores de funcionalidades a partir de um ID de entidade

Depois de se ligar ao ponto final do Private Service Connect através do gRPC, use o exemplo seguinte para obter valores de funcionalidades para um ID de entidade específico através do serviço online otimizado.

Python

data_client.fetch_feature_values(
  request=feature_online_store_service_pb2.FetchFeatureValuesRequest(
  feature_view=f"projects/PROJECT_ID/locations/LOCATION_ID/featureOnlineStores/FEATUREONLINESTORE_NAME/featureViews/FEATUREVIEW_NAME",
  data_key=feature_online_store_service_pb2.FeatureViewDataKey(ENTITY_ID),
  data_format=feature_online_store_service_pb2.FeatureViewDataFormat.PROTO_STRUCT,
  )
)

Substitua o seguinte:

  • LOCATION_ID: região onde a loja online está localizada, como us-central1.

  • PROJECT_ID: o ID do seu projeto.

  • FEATUREONLINESTORE_NAME: o nome da loja online que contém a vista de funcionalidades.

  • FEATUREVIEW_NAME: o nome da vista de funcionalidades a partir da qual quer publicar valores de funcionalidades.

  • ENTITY_ID: o valor da coluna de ID no registo de funcionalidades a partir do qual quer publicar os valores de funcionalidades mais recentes.

  • FORMAT: opcional: o formato no qual quer obter os valores das caraterísticas. Os formatos suportados incluem o par de chave-valor JSON e os formatos proto Struct. Tenha em atenção que o formato proto Struct não suporta o tipo de valor de funcionalidade de bytes. Se quiser obter valores de caraterísticas formatados como bytes, use JSON como formato de resposta.

O que se segue?