Registe e chame modelos de IA remotos através da gestão de pontos finais de modelos

Esta página descreve como invocar previsões ou gerar incorporações através de um modelo e, em seguida, registar o ponto final do modelo na gestão de pontos finais de modelos.

Para mais informações sobre a função google_ml.create_model(), consulte a referência de gestão de pontos finais de modelos.

Antes de começar

  • Com base no fornecedor do modelo, configure a autenticação.
  • Certifique-se de que usa o nome de utilizador predefinido postgres para aceder à sua base de dados.

Ative a extensão

  1. Defina o google_ml_integration.enable_model_supportsinalizador da base de dadoson para a sua instância. Para mais informações sobre a definição de flags da base de dados, consulte o artigo Configure flags da base de dados.

  2. Ligue-se à sua instância principal através de um psqlcliente ou do Cloud SQL Studio.

  3. Execute o seguinte comando para garantir que a extensão google_ml_integration está atualizada para a versão 1.4.2:

        ALTER EXTENSION google_ml_integration UPDATE TO '1.4.2'
    
  4. Adicione a extensão google_ml_integration versão 1.4.2 através de psql:

      CREATE EXTENSION google_ml_integration VERSION '1.4.2';
    
  5. Opcional: conceda autorização a um utilizador do PostgreSQL sem privilégios de superadministrador para gerir metadados do modelo:

      GRANT SELECT, INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA google_ml TO NON_SUPER_USER;
    

    Substitua NON_SUPER_USER pelo nome de utilizador do PostgreSQL que não seja superutilizador.

Configure a autenticação

As secções seguintes mostram como configurar a autenticação antes de adicionar um ponto final de modelo do Vertex AI ou pontos finais de modelo alojados no Google Cloud.

Configure a autenticação para o Vertex AI

Para usar os pontos finais do modelo do Google Vertex AI, tem de adicionar autorizações do Vertex AI à conta de serviço do Cloud SQL baseada no IAM que usa para se ligar à base de dados. Para mais informações sobre a integração com o Vertex AI, consulte o artigo Integre o Cloud SQL com o Vertex AI.

Configure a autenticação para modelos alojados de forma personalizada

Esta secção explica como configurar a autenticação se estiver a usar o Secret Manager. Para todos os modelos, exceto os pontos finais de modelos da Vertex AI, pode armazenar as suas chaves da API ou tokens de autorização no Secret Manager.

Se o seu ponto final do modelo não processar a autenticação através do Secret Manager, esta secção é opcional. Por exemplo, se o seu ponto final do modelo usar cabeçalhos HTTP para transmitir informações de autenticação ou não usar autenticação, não conclua os passos nesta secção.

Para criar e usar uma chave da API ou um token de autorização, conclua os seguintes passos:

  1. Crie um segredo no Secret Manager. Para mais informações, consulte o artigo Crie um segredo e aceda a uma versão secreta.

    O nome do Secret e o caminho do Secret são usados na função SQL google_ml.create_sm_secret().

  2. Conceda autorizações à instância do Cloud SQL para aceder ao segredo.

      gcloud secrets add-iam-policy-binding SECRET_ID \
          --member="serviceAccount:SERVICE_ACCOUNT_EMAIL" \
          --role="roles/secretmanager.secretAccessor"
    

    Substitua o seguinte:

    • SECRET_ID: o ID do segredo no Secret Manager.
    • SERVICE_ACCOUNT_EMAIL: o endereço de email da conta de serviço do Cloud SQL baseada no IAM. Para encontrar este endereço de email, use o comando gcloud sql instances describe INSTANCE_NAME e substitua INSTANCE_NAME pelo nome da instância. O valor apresentado junto ao parâmetro serviceAccountEmailAddress é o endereço de email.

Modelos de incorporação de texto com suporte integrado

Esta secção mostra como registar pontos finais de modelos para a gestão de pontos finais de modelos.

Modelos de incorporação da Vertex AI

A gestão de pontos finais de modelos oferece suporte integrado para todas as versões dos modelos text-embedding-gecko, text-embedding e gemini-embedding da Vertex AI. Use o nome qualificado para definir a versão do modelo como textembedding-gecko@001 ou textembedding-gecko@002.

Uma vez que os IDs dos pontos finais do modelo de incorporação do Vertex AI são suportados por predefinição com a gestão de pontos finais de modelos, pode usar qualquer um deles diretamente como o ID do modelo. Para estes modelos, a extensão configura automaticamente as funções de transformação predefinidas.

Certifique-se de que a instância do Cloud SQL e o modelo do Vertex AI que está a consultar estão na mesma região.

Para registar o ponto final do modelo textembedding-gecko@002, chame a função create_model:

  CALL
    google_ml.create_model(
      model_id => 'textembedding-gecko@002',
      model_provider => 'google',
      model_qualified_name => 'textembedding-gecko@002',
      model_type => 'text_embedding',
      model_auth_type => 'cloudsql_service_agent_iam');

Modelos de incorporação de texto alojados de forma personalizada

Esta secção mostra como registar pontos finais de modelos personalizados alojados em redes dentro de Google Cloud.

A adição de pontos finais de modelos de incorporação de texto alojados de forma personalizada envolve a criação de funções de transformação e, opcionalmente, cabeçalhos HTTP personalizados. Por outro lado, a adição de pontos finais de modelos genéricos alojados de forma personalizada envolve, opcionalmente, a geração de cabeçalhos HTTP personalizados e a definição do URL do pedido do modelo.

O exemplo seguinte adiciona o ponto final do custom-embedding-model modelo de incorporação de texto alojado pela Cymbal, que está alojado no Google Cloud. As funções de transformação cymbal_text_input_transform e cymbal_text_output_transform são usadas para transformar o formato de entrada e saída do modelo no formato de entrada e saída da função de previsão.

Para registar pontos finais de modelos de incorporação de texto alojados de forma personalizada, conclua os seguintes passos:

  1. Chame o segredo armazenado no Secret Manager:

    CALL
      google_ml.create_sm_secret(
        secret_id => 'SECRET_ID',
        secret_path => 'projects/project-id/secrets/SECRET_MANAGER_SECRET_ID/versions/VERSION_NUMBER');
    

    Substitua o seguinte:

    • SECRET_ID: o ID secreto que define e que é usado posteriormente quando regista um ponto final do modelo, por exemplo, key1.
    • SECRET_MANAGER_SECRET_ID: o ID secreto definido no Secret Manager quando criou o segredo.
    • PROJECT_ID: o ID do seu projeto Google Cloud .
    • VERSION_NUMBER: o número da versão do ID secreto.
  2. Crie as funções de transformação de entrada e saída com base na seguinte assinatura para a função de previsão para os pontos finais do modelo de incorporação de texto. Para mais informações sobre como criar funções de transformação, consulte o exemplo de funções de transformação.

    Seguem-se exemplos de funções de transformação específicas do custom-embedding-model ponto final do modelo de incorporação de texto:

    -- Input Transform Function corresponding to the custom model endpoint
    CREATE OR REPLACE FUNCTION cymbal_text_input_transform(model_id VARCHAR(100), input_text TEXT)
    RETURNS JSON
    LANGUAGE plpgsql
    AS $$
    DECLARE
      transformed_input JSON;
      model_qualified_name TEXT;
    BEGIN
      SELECT json_build_object('prompt', json_build_array(input_text))::JSON INTO transformed_input;
      RETURN transformed_input;
    END;
    $$;
    -- Output Transform Function corresponding to the custom model endpoint
    CREATE OR REPLACE FUNCTION cymbal_text_output_transform(model_id VARCHAR(100), response_json JSON)
    RETURNS REAL[]
    LANGUAGE plpgsql
    AS $$
    DECLARE
      transformed_output REAL[];
    BEGIN
      SELECT ARRAY(SELECT json_array_elements_text(response_json->0)) INTO transformed_output;
      RETURN transformed_output;
    END;
    $$;
    
  3. Chame a função de criação de modelos para registar o ponto final do modelo de incorporação personalizado:

  CALL
    google_ml.create_model(
      model_id => 'MODEL_ID',
      model_request_url => 'REQUEST_URL',
      model_provider => 'custom',
      model_type => 'text_embedding',
      model_auth_type => 'secret_manager',
      model_auth_id => 'SECRET_ID',
      model_qualified_name => 'MODEL_QUALIFIED_NAME',
      model_in_transform_fn => 'cymbal_text_input_transform',
      model_out_transform_fn => 'cymbal_text_output_transform');

Substitua o seguinte:

  • MODEL_ID: obrigatório. Um ID exclusivo para o ponto final do modelo que define (por exemplo, custom-embedding-model). Este ID do modelo é referenciado para metadados de que o ponto final do modelo precisa para gerar incorporações ou invocar previsões.
  • REQUEST_URL: obrigatório. O ponto final específico do modelo quando adiciona incorporação de texto personalizada e pontos finais de modelos genéricos, por exemplo, https://cymbal.com/models/text/embeddings/v1. Certifique-se de que o ponto final do modelo é acessível através de um endereço IP interno. A gestão de pontos finais de modelos não suporta endereços IP externos.
  • MODEL_QUALIFIED_NAME: obrigatório se o ponto final do modelo usar um nome qualificado. O nome totalmente qualificado, caso o ponto final do modelo tenha várias versões.
  • SECRET_ID: o ID secreto que usou anteriormente no procedimento google_ml.create_sm_secret().

Modelos genéricos

Esta secção mostra como registar um ponto final de modelo genérico do Vertex AI Model Garden, que não tem suporte integrado.gemini-pro Pode registar qualquer ponto final de modelo genérico alojado no Google Cloud.

O Cloud SQL só suporta pontos finais de modelos disponíveis através do Vertex AI Model Garden e pontos finais de modelos alojados em redes no Google Cloud.

Modelo do Gemini

O exemplo seguinte adiciona o ponto final do modelo gemini-1.0-pro do Vertex AI Model Garden.

Para registar o ponto final do modelo gemini-1.0-pro, chame a função create model:

    CALL
      google_ml.create_model(
        model_id => 'MODEL_ID',
        model_request_url => 'https://us-central1-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/publishers/google/models/gemini-1.0-pro:streamGenerateContent',
        model_provider => 'google',
        model_auth_type => 'cloudsql_service_agent_iam');

Substitua o seguinte:

  • MODEL_ID: um ID exclusivo para o ponto final do modelo que define (por exemplo,
    gemini-1). Este ID do modelo é referenciado para metadados de que o ponto final do modelo precisa para gerar incorporações ou invocar previsões.
  • PROJECT_ID: o ID do seu projeto Google Cloud .

Para mais informações, veja como invocar previsões para pontos finais de modelos genéricos.

O que se segue?