Referência de gerenciamento de endpoints de modelo

Esta página lista os parâmetros de diferentes funções fornecidas pelo Cloud SQL para registrar e gerenciar endpoints de modelo. A página também lista os secrets que podem ser gerenciados usando o gerenciamento de endpoints de modelo.

Modelos

Use esta referência para entender os parâmetros de funções que permitem gerenciar endpoints de modelo.

mysql.ml_create_model_registration()

Confira a seguir como usar a função mysql.ml_create_model_registration() para registrar metadados de endpoints de modelo:

  CALL
    mysql.ml_create_model_registration(
      'MODEL_ID',
      'REQUEST_URL',
      'PROVIDER_ID',
      'MODEL_TYPE',
      'MODEL_QUALIFIED_NAME',
      'AUTH_TYPE',
      'AUTH_ID',
      'GENERATE_HEADER_FUNCTION',
      'INPUT_TRANSFORM_FUNCTION',
      'OUTPUT_TRANSFORM_FUNCTION');
Parâmetro Obrigatório Descrição
MODEL_ID Obrigatório para todos os endpoints de modelo Um ID exclusivo para o endpoint de modelo definido.
REQUEST_URL Pode ser NULL para modelos da Vertex AI O endpoint específico do modelo ao adicionar outros embeddings de texto e endpoints de modelo genéricos.

O URL da solicitação que a função gera para endpoints de modelo integrados se refere ao projeto e à região ou local do cluster. Se você quiser se referir a outro projeto, especifique model_request_url explicitamente.

Para endpoints de modelo hospedados de maneira personalizada, verifique se o endpoint do modelo está acessível pela Internet.

PROVIDER_ID Obrigatório para endpoints de modelo de embedding de texto com suporte integrado O provedor do endpoint de modelo. O valor padrão é custom. Para o Cloud SQL, defina o provedor como google para endpoints de modelo da Vertex AI, open_ai para endpoints de modelo da OpenAI, anthropic para endpoints de modelo da Anthropic, hugging_face para endpoints de modelo da Hugging Face ou custom para endpoints de modelo hospedados de maneira personalizada.
MODEL_TYPE Pode ser NULL para endpoints de modelo genéricos O tipo de modelo. É possível definir esse valor como text_embedding para endpoints de modelo de embedding de texto ou generic para todos os outros endpoints de modelo.
MODEL_QUALIFIED_NAME Obrigatório para endpoints de modelo da OpenAI; pode ser NULL para outros endpoints de modelo O nome totalmente qualificado caso o endpoint de modelo tenha várias versões ou se o endpoint de modelo o definir. Por exemplo, textembedding-gecko@001 ou textembedding-gecko@002. Como o modelo textembedding-gecko@001 está pré-registrado no gerenciamento de endpoints de modelo, é possível gerar embeddings usando textembedding-gecko@001 como o ID do modelo.
AUTH_TYPE Pode ser NULL, a menos que o endpoint de modelo tenha um requisito de autenticação específico O tipo de autenticação usado pelo endpoint de modelo. É possível defini-lo como auth_type_cloudsql_service_agent_iam para modelos da Vertex AI ou auth_type_secret_manager para outros provedores.
AUTH_ID Transmita como NULL para endpoints da Vertex AI; obrigatório para todos os outros endpoints de modelo que armazenam secrets no Secret Manager O ID do secret definido e usado posteriormente ao registrar um endpoint de modelo.
GENERATE_HEADER_FUNCTION Pode ser NULL O nome da função definida para gerar cabeçalhos personalizados. A assinatura dessa função depende da função mysql.ml_predict_row(). Consulte Função de geração de cabeçalho HTTP.
INPUT_TRANSFORM_FUNCTION Opcional para endpoints de modelo de embedding de texto com suporte integrado; não defina para endpoints de modelo genéricos A função para transformar a entrada da função de previsão correspondente na entrada específica do modelo. Consulte Funções de transformação.
OUTPUT_TRANSFORM_FUNCTION Opcional para endpoints de modelo de embedding de texto com suporte integrado; não defina para endpoints de modelo genéricos A função para transformar a saída específica do modelo na saída da função de previsão. Consulte Funções de transformação.

mysql.ml_alter_model_registration()

Confira a seguir como chamar a função SQL mysql.ml_alter_model_registration() usada para atualizar metadados de endpoints de modelo:

    CALL
    mysql.ml_alter_model_registration(
      'MODEL_ID',
      'REQUEST_URL',
      'PROVIDER_ID',
      'MODEL_TYPE',
      'MODEL_QUALIFIED_NAME',
      'AUTH_TYPE',
      'AUTH_ID',
      'GENERATE_HEADER_FUNCTION',
      'INPUT_TRANSFORM_FUNCTION',
      'OUTPUT_TRANSFORM_FUNCTION');

mysql.ml_drop_model_registration()

Confira a seguir como chamar a função SQL mysql.ml_drop_model_registration() usada para remover um endpoint de modelo:

  CALL mysql.ml_drop_model_registration('MODEL_ID');
Parâmetro Descrição
MODEL_ID Um ID exclusivo para o endpoint de modelo definido.

mysql.ml_list_registered_model()

Confira a seguir como chamar a função SQL mysql.ml_list_registered_model() usada para listar informações de endpoints de modelo:

  SELECT mysql.ml_list_registered_model('MODEL_ID');
Parâmetro Descrição
MODEL_ID Um ID exclusivo para o endpoint de modelo definido.

mysql.cloudsql_ml_models

Confira a seguir como consultar a tabela mysql.cloudsql_ml_models usada para listar informações de endpoints de modelo para todos os endpoints de modelo:

  SELECT * FROM mysql.cloudsql_ml_models;

Secrets

Use esta referência para entender os parâmetros de funções que permitem gerenciar secrets.

mysql.ml_create_sm_secret_registration()

Confira a seguir como chamar a função SQL mysql.ml_create_sm_secret_registration() usada para adicionar o secret criado no Secret Manager:

    CALL
    mysql.ml_create_sm_secret_registration(
      'SECRET_ID',
      'projects/PROJECT_ID/secrets/SECRET_MANAGER_SECRET_ID/versions/VERSION_NUMBER');
Parâmetro Descrição
SECRET_ID O ID do secret definido e usado posteriormente ao registrar um endpoint de modelo.
PROJECT_ID O ID do Google Cloud projeto que contém o secret. Esse projeto pode ser diferente do projeto que contém a instância do Cloud SQL.
SECRET_MANAGER_SECRET_ID O ID do secret definido no Secret Manager quando você criou o secret.
VERSION_NUMBER O número da versão do ID do secret.

mysql.ml_alter_sm_secret_registration()

Confira a seguir como chamar a função SQL mysql.ml_alter_sm_secret_registration() usada para atualizar informações de secrets:

  CALL
    mysql.ml_alter_sm_secret_registration(
      'SECRET_ID',
      'projects/PROJECT_ID/secrets/SECRET_MANAGER_SECRET_ID/versions/VERSION_NUMBER');
Parâmetro Descrição
SECRET_ID O ID do secret definido e usado posteriormente ao registrar um endpoint de modelo.
PROJECT_ID O ID do Google Cloud projeto que contém o secret. Esse projeto pode ser diferente do projeto que contém a instância do Cloud SQL.
SECRET_MANAGER_SECRET_ID O ID do secret definido no Secret Manager quando você criou o secret.
VERSION_NUMBER O número da versão do ID do secret.

mysql.ml_drop_sm_secret_registration()

Confira a seguir como chamar a função SQL mysql.ml_drop_sm_secret_registration() usada para remover um secret:

  CALL mysql.ml_drop_sm_secret_registration('SECRET_ID');
Parâmetro Descrição
SECRET_ID O ID do secret definido e usado posteriormente ao registrar um endpoint de modelo.

Funções de Prediction

Use esta referência para entender os parâmetros de funções que permitem gerar embeddings ou invocar previsões.

mysql.ml_embedding()

Confira a seguir como gerar embeddings:

SELECT
  mysql.ml_embedding(
    'MODEL_ID',
    'CONTENT');
Parâmetro Descrição
MODEL_ID Um ID exclusivo para o endpoint de modelo definido.
CONTENT O texto a ser traduzido em um embedding de vetor.

Para exemplos de consultas SQL para gerar embeddings de texto, consulte Exemplos.

mysql.ml_predict_row()

Confira a seguir como invocar previsões:

SELECT
  mysql.ml_predict_row(
    'MODEL_ID',
    'REQUEST_BODY');
Parâmetro Descrição
MODEL_ID Um ID exclusivo para o endpoint de modelo definido.
REQUEST_BODY Os parâmetros para a chamada de previsão, no formato JSON.

Para exemplos de consultas SQL para invocar previsões, consulte Exemplos.

Funções de transformação

Use esta referência para entender os parâmetros das funções de transformação de entrada e saída.

Função de transformação de entrada

Confira a seguir a assinatura da função de previsão para endpoints de modelo de embedding de texto:

  CREATE FUNCTION IF NOT EXISTS
  INPUT_TRANSFORM_FUNCTION(model_id VARCHAR(100), input_text TEXT) RETURNS JSON DETERMINISTIC;
Parâmetro Descrição
INPUT_TRANSFORM_FUNCTION A função para transformar a entrada da função de previsão correspondente na entrada específica do endpoint de modelo.

Função de transformação de saída

Confira a seguir a assinatura da função de previsão para endpoints de modelo de embedding de texto:

  CREATE FUNCTION IF NOT EXISTS
  OUTPUT_TRANSFORM_FUNCTION(model_id VARCHAR(100), response_json JSON) RETURNS BLOB DETERMINISTIC;
Parâmetro Descrição
OUTPUT_TRANSFORM_FUNCTION A função para transformar a saída específica do endpoint de modelo na saída da função de previsão.

Exemplo de funções de transformação

Para entender melhor como criar funções de transformação para o endpoint de modelo, considere um endpoint de modelo de embedding de texto hospedado de maneira personalizada que exige entrada e saída JSON.

O exemplo de solicitação curl a seguir cria embeddings com base no prompt e no endpoint de modelo:

  curl -m 100 -X POST https://cymbal.com/models/text/embeddings/v1 \
    -H "Content-Type: application/json"
    -d '{"prompt": ["Cloud SQL Embeddings"]}'

A seguinte resposta de exemplo é retornada:

[[ 0.3522231  -0.35932037  0.10156056  0.17734447 -0.11606089 -0.17266059
   0.02509351  0.20305622 -0.09787305 -0.12154685 -0.17313677 -0.08075467
   0.06821183 -0.06896557  0.1171584  -0.00931572  0.11875633 -0.00077482
   0.25604948  0.0519384   0.2034983  -0.09952664  0.10347155 -0.11935943
  -0.17872004 -0.08706985 -0.07056875 -0.05929353  0.4177883  -0.14381726
   0.07934926  0.31368294  0.12543282  0.10758053 -0.30210832 -0.02951015
   0.3908268  -0.03091059  0.05302926 -0.00114946 -0.16233777  0.1117468
  -0.1315904   0.13947351 -0.29569918 -0.12330773 -0.04354299 -0.18068913
   0.14445548  0.19481727]]

Com base nessa entrada e resposta, é possível inferir o seguinte:

  • O modelo espera entrada JSON pelo campo prompt. Esse campo aceita uma matriz de entradas. Como a função mysql.ml_embedding() é uma função de nível de linha, ela espera uma entrada de texto por vez. Portanto, é necessário criar uma função de transformação de entrada que crie uma matriz com um único elemento.

  • A resposta do modelo é uma matriz de embeddings, uma para cada entrada de prompt no modelo. Como a função mysql.ml_embedding() é uma função de nível de linha, ela retorna uma única entrada por vez. Portanto, é necessário criar uma função de transformação de saída que possa ser usada para extrair o embedding da matriz.

O exemplo a seguir mostra as funções de transformação de entrada e saída usadas para esse endpoint de modelo quando ele é registrado no gerenciamento de endpoints de modelo:

função de transformação de entrada

DELIMITER $$
CREATE FUNCTION IF NOT EXISTS cymbal_text_input_transform(model_id VARCHAR(100), input_text TEXT)
RETURNS JSON
DETERMINISTIC

BEGIN
  RETURN JSON_OBJECT('prompt', JSON_ARRAY(input_text));
END $$

função de transformação de saída

CREATE FUNCTION IF NOT EXISTS cymbal_text_output_transform(model_id VARCHAR(100), response_json JSON)
RETURNS BLOB
DETERMINISTIC

BEGIN
  RETURN STRING_TO_VECTOR(
         JSON_EXTRACT(
              content,
              '$.predictions[0].embeddings.values'
            )
    );

END $$
DELIMITER ;

Default included transform functions

Model Endpoint Management provides in-built support for two common text embedding model families, Google's Gemini embedding models and OpenAI's text embedding models. The input and output transforms are preloaded when these models are registered, for convenience. They can be overwritten by specifying your own transform functions during registration, or by calling mysql.ml_alter_model_registration().

HTTP header generation function

The following shows signature for the header generation function that can be used with the `mysql.ml_embedding()` prediction function when registering other text embedding model endpoints.

  CREATE FUNCTION IF NOT EXISTS GENERATE_HEADERS(model_id VARCHAR(100), input_text TEXT) RETURNS JSON DETERMINISTIC;

For the mysql.ml_predict_row() prediction function, the signature is as follows:

CREATE FUNCTION IF NOT EXISTS GENERATE_HEADERS(model_id TEXT, input JSON) RETURNS JSON DETERMINISTIC;
Parameter Description
GENERATE_HEADERS The function to generate custom headers. You can also pass the authorization header generated by the header generation function while registering the model endpoint.

Header generation function example

To better understand how to create a function that generates output in JSON key value pairs that are used as HTTP headers, consider a custom-hosted text embedding model endpoint.

The following example curl request passes the version HTTP header, which is used by the model endpoint:

  curl -m 100 -X POST https://cymbal.com/models/text/embeddings/v1 \
      -H "Content-Type: application/json" \
      -H "version: 2024-01-01" \
      -d '{"prompt": ["Cloud SQL Embeddings"]}'

The model expects text input through the version field and returns the version value in JSON format. The following example shows the header generation function that is used for this text embedding model endpoint when it is registered with model endpoint management:

DELIMITER $$
CREATE FUNCTION IF NOT EXISTS header_gen_fn(model_id VARCHAR(100), input_text TEXT)
RETURNS JSON
DETERMINISTIC
BEGIN
  RETURN JSON_OBJECT('version', '2024-01-01');
END;
$$
DELIMITER ;