Nesta página, listamos 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()
Veja a seguir como usar a função mysql.ml_create_model_registration()
para registrar metadados de endpoint 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 do modelo que você define. |
REQUEST_URL |
Pode ser nulo para modelos de IA do Vertex AI | O endpoint específico do modelo ao adicionar outros endpoints de embedding de texto e de modelo genérico. O URL de solicitação que a função gera para endpoints de modelo integrado se refere ao projeto e à região ou ao local do cluster. Se você quiser se referir a outro projeto, especifique o 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 do modelo. O valor padrão é custom. Para o Cloud SQL, defina o provedor como google para endpoints de modelo de IA da Vertex AI, open_ai para endpoints de modelo de IA da OpenAI, anthropic para endpoints de modelo de IA da Anthropic, hugging_face para endpoints de modelo de IA da Hugging Face ou custom para endpoints de modelo de IA hospedados pelo cliente. |
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 do modelo tenha várias versões ou se o endpoint do modelo o definir, por exemplo, textembedding-gecko@001 ou textembedding-gecko@002. Como o modelo textembedding-gecko@001 é pré-registrado com o 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 do modelo tenha um requisito de autenticação específico | O tipo de autenticação usado pelo endpoint do modelo. É possível definir como auth_type_cloudsql_service_agent_iam para modelos de IA da Vertex AI ou auth_type_secret_manager para outros provedores. |
AUTH_ID |
Passe 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 que você definiu e que é usado ao registrar um endpoint de modelo. |
GENERATE_HEADER_FUNCTION |
Pode ser NULL | O nome da função que você definiu 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()
Veja a seguir como chamar a função SQL mysql.ml_alter_model_registration() usada
para atualizar os metadados do endpoint do 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()
Veja a seguir como chamar a função SQL mysql.ml_drop_model_registration() usada
para descartar um endpoint de modelo:
CALL mysql.ml_drop_model_registration('MODEL_ID');
| Parâmetro | Descrição |
|---|---|
MODEL_ID |
Um ID exclusivo para o endpoint do modelo que você define. |
mysql.ml_list_registered_model()
Veja a seguir como chamar a função SQL mysql.ml_list_registered_model() usada
para listar informações de endpoint de modelo:
SELECT mysql.ml_list_registered_model('MODEL_ID');
| Parâmetro | Descrição |
|---|---|
MODEL_ID |
Um ID exclusivo para o endpoint do modelo que você define. |
mysql.cloudsql_ml_models
Veja a seguir como consultar a tabela mysql.cloudsql_ml_models usada para listar informações de endpoint 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()
Veja 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 que você definiu e que é usado ao registrar um endpoint de modelo. |
PROJECT_ID |
O ID do projeto do Cloud de Confiance by S3NS que contém o secret. Esse projeto pode ser diferente daquele 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()
Veja a seguir como chamar a função SQL mysql.ml_alter_sm_secret_registration()
usada para atualizar informações secretas:
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 que você definiu e que é usado ao registrar um endpoint de modelo. |
PROJECT_ID |
O ID do projeto do Cloud de Confiance by S3NS que contém o secret. Esse projeto pode ser diferente daquele 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()
Veja 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 que você definiu e que é usado ao registrar um endpoint de modelo. |
Funções de previsão
Use esta referência para entender os parâmetros de funções que permitem gerar embeddings ou invocar previsões.
mysql.ml_embedding()
Veja a seguir como gerar embeddings:
SELECT
mysql.ml_embedding(
'MODEL_ID',
'CONTENT');
| Parâmetro | Descrição |
|---|---|
MODEL_ID |
Um ID exclusivo para o endpoint do modelo que você define. |
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()
Veja 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 do modelo que você define. |
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 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 do modelo. |
Função de transformação de saída
Confira 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 do 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 do modelo, considere um endpoint de modelo de embedding de texto hospedado pelo cliente que requer entrada e saída JSON.
O exemplo de solicitação curl a seguir cria embeddings com base no comando e no endpoint do 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 uma entrada JSON pelo campo
prompt. Esse campo aceita uma matriz de entradas. Como a funçãomysql.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, um para cada comando inserido 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 com o 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 ;