Referensi pengelolaan endpoint model

Halaman ini mencantumkan parameter untuk berbagai fungsi yang disediakan oleh Cloud SQL untuk mendaftarkan dan mengelola endpoint model. Halaman ini juga mencantumkan secret yang dapat Anda kelola menggunakan pengelolaan endpoint model.

Model

Gunakan referensi ini untuk memahami parameter fungsi yang memungkinkan Anda mengelola endpoint model.

mysql.ml_create_model_registration()

Berikut cara menggunakan fungsi mysql.ml_create_model_registration() untuk mendaftarkan metadata endpoint model:

  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');
Parameter Wajib Deskripsi
MODEL_ID Wajib untuk semua endpoint model ID unik untuk endpoint model yang Anda tentukan.
REQUEST_URL Dapat berupa NULL untuk model Vertex AI Endpoint khusus model saat menambahkan endpoint model generik dan penyematan teks lainnya.

URL permintaan yang dibuat fungsi untuk endpoint model bawaan merujuk ke project dan wilayah atau lokasi cluster Anda. Jika Anda ingin merujuk ke project lain, pastikan Anda menentukan model_request_url secara eksplisit.

Untuk endpoint model yang dihosting kustom, pastikan endpoint model dapat diakses melalui internet.

PROVIDER_ID Wajib untuk endpoint model embedding teks dengan dukungan bawaan Penyedia endpoint model. Nilai defaultnya adalah custom. Untuk Cloud SQL, tetapkan penyedia ke google untuk endpoint model Vertex AI, open_ai untuk endpoint model OpenAI, anthropic untuk endpoint model Anthropic, hugging_face untuk endpoint model Hugging Face, atau custom untuk endpoint model yang dihosting kustom.
MODEL_TYPE Dapat berupa NULL untuk endpoint model generik Jenis model. Anda dapat menetapkan nilai ini ke text_embedding untuk endpoint model penyematan teks atau generic untuk semua endpoint model lainnya.
MODEL_QUALIFIED_NAME Wajib diisi untuk endpoint model OpenAI; dapat berupa NULL untuk endpoint model lainnya Nama yang sepenuhnya memenuhi syarat jika endpoint model memiliki beberapa versi atau jika endpoint model menentukannya—misalnya, textembedding-gecko@001 atau textembedding-gecko@002. Karena model textembedding-gecko@001 telah didaftarkan sebelumnya dengan pengelolaan endpoint model, Anda dapat membuat embedding menggunakan textembedding-gecko@001 sebagai ID model.
AUTH_TYPE Dapat berupa NULL kecuali jika endpoint model memiliki persyaratan autentikasi tertentu Jenis autentikasi yang digunakan oleh endpoint model. Anda dapat menyetelnya ke auth_type_cloudsql_service_agent_iam untuk model Vertex AI atau auth_type_secret_manager untuk penyedia lain.
AUTH_ID Teruskan sebagai NULL untuk endpoint Vertex AI; diperlukan untuk semua endpoint model lainnya yang menyimpan secret di Secret Manager ID rahasia yang Anda tetapkan dan selanjutnya digunakan saat mendaftarkan endpoint model.
GENERATE_HEADER_FUNCTION Dapat berupa NULL Nama fungsi yang Anda tetapkan untuk membuat header kustom. Tanda tangan fungsi ini bergantung pada fungsi mysql.ml_predict_row(). Lihat Fungsi pembuatan Header HTTP.
INPUT_TRANSFORM_FUNCTION Opsional untuk endpoint model embedding teks dengan dukungan bawaan; jangan tetapkan untuk endpoint model generik Fungsi untuk mengubah input fungsi prediksi yang sesuai menjadi input khusus model. Lihat Fungsi transformasi.
OUTPUT_TRANSFORM_FUNCTION Opsional untuk endpoint model embedding teks dengan dukungan bawaan; jangan tetapkan untuk endpoint model generik Fungsi untuk mengubah output khusus model menjadi output fungsi prediksi. Lihat Fungsi transformasi.

mysql.ml_alter_model_registration()

Berikut cara memanggil fungsi SQL mysql.ml_alter_model_registration() yang digunakan untuk memperbarui metadata endpoint model:

    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()

Berikut cara memanggil fungsi SQL mysql.ml_drop_model_registration() yang digunakan untuk menghapus endpoint model:

  CALL mysql.ml_drop_model_registration('MODEL_ID');
Parameter Deskripsi
MODEL_ID ID unik untuk endpoint model yang Anda tentukan.

mysql.ml_list_registered_model()

Berikut ini menunjukkan cara memanggil fungsi SQL mysql.ml_list_registered_model() yang digunakan untuk mencantumkan informasi endpoint model:

  SELECT mysql.ml_list_registered_model('MODEL_ID');
Parameter Deskripsi
MODEL_ID ID unik untuk endpoint model yang Anda tentukan.

mysql.cloudsql_ml_models

Berikut ini cara membuat kueri tabel mysql.cloudsql_ml_models yang digunakan untuk mencantumkan informasi endpoint model untuk semua endpoint model:

  SELECT * FROM mysql.cloudsql_ml_models;

Rahasia

Gunakan referensi ini untuk memahami parameter fungsi yang memungkinkan Anda mengelola secret.

mysql.ml_create_sm_secret_registration()

Berikut cara memanggil fungsi SQL mysql.ml_create_sm_secret_registration() yang digunakan untuk menambahkan secret yang dibuat di Secret Manager:

    CALL
    mysql.ml_create_sm_secret_registration(
      'SECRET_ID',
      'projects/PROJECT_ID/secrets/SECRET_MANAGER_SECRET_ID/versions/VERSION_NUMBER');
Parameter Deskripsi
SECRET_ID ID rahasia yang Anda tetapkan dan selanjutnya digunakan saat mendaftarkan endpoint model.
PROJECT_ID ID project Trusted Cloud by S3NS yang berisi rahasia. Project ini dapat berbeda dengan project yang berisi instance Cloud SQL Anda.
SECRET_MANAGER_SECRET_ID ID secret yang ditetapkan di Secret Manager saat Anda membuat secret.
VERSION_NUMBER Nomor versi ID rahasia.

mysql.ml_alter_sm_secret_registration()

Berikut cara memanggil fungsi SQL mysql.ml_alter_sm_secret_registration() yang digunakan untuk memperbarui informasi rahasia:

  CALL
    mysql.ml_alter_sm_secret_registration(
      'SECRET_ID',
      'projects/PROJECT_ID/secrets/SECRET_MANAGER_SECRET_ID/versions/VERSION_NUMBER');
Parameter Deskripsi
SECRET_ID ID rahasia yang Anda tetapkan dan selanjutnya digunakan saat mendaftarkan endpoint model.
PROJECT_ID ID project Trusted Cloud by S3NS yang berisi rahasia. Project ini dapat berbeda dengan project yang berisi instance Cloud SQL Anda.
SECRET_MANAGER_SECRET_ID ID secret yang ditetapkan di Secret Manager saat Anda membuat secret.
VERSION_NUMBER Nomor versi ID rahasia.

mysql.ml_drop_sm_secret_registration()

Berikut cara memanggil fungsi SQL mysql.ml_drop_sm_secret_registration() yang digunakan untuk menghapus rahasia:

  CALL mysql.ml_drop_sm_secret_registration('SECRET_ID');
Parameter Deskripsi
SECRET_ID ID rahasia yang Anda tetapkan dan selanjutnya digunakan saat mendaftarkan endpoint model.

Fungsi prediksi

Gunakan referensi ini untuk memahami parameter fungsi yang memungkinkan Anda membuat sematan atau memanggil prediksi.

mysql.ml_embedding()

Berikut cara membuat sematan:

SELECT
  mysql.ml_embedding(
    'MODEL_ID',
    'CONTENT');
Parameter Deskripsi
MODEL_ID ID unik untuk endpoint model yang Anda tentukan.
CONTENT teks yang akan diterjemahkan ke dalam embedding vektor.

Untuk contoh kueri SQL guna menghasilkan embedding teks, lihat Contoh.

mysql.ml_predict_row()

Berikut cara memanggil prediksi:

SELECT
  mysql.ml_predict_row(
    'MODEL_ID',
    'REQUEST_BODY');
Parameter Deskripsi
MODEL_ID ID unik untuk endpoint model yang Anda tentukan.
REQUEST_BODY parameter ke fungsi prediksi, dalam format JSON.

Untuk contoh kueri SQL guna memanggil prediksi, lihat Contoh.

Fungsi transformasi

Gunakan referensi ini untuk memahami parameter fungsi transformasi input dan output.

Fungsi transformasi input

Berikut ini menunjukkan tanda tangan untuk fungsi prediksi untuk endpoint model penyematan teks:

  CREATE FUNCTION IF NOT EXISTS
  INPUT_TRANSFORM_FUNCTION(model_id VARCHAR(100), input_text TEXT) RETURNS JSON DETERMINISTIC;
Parameter Deskripsi
INPUT_TRANSFORM_FUNCTION Fungsi untuk mengubah input fungsi prediksi yang sesuai menjadi input khusus endpoint model.

Fungsi transformasi output

Berikut ini menunjukkan tanda tangan untuk fungsi prediksi untuk endpoint model penyematan teks:

  CREATE FUNCTION IF NOT EXISTS
  OUTPUT_TRANSFORM_FUNCTION(model_id VARCHAR(100), response_json JSON) RETURNS BLOB DETERMINISTIC;
Parameter Deskripsi
OUTPUT_TRANSFORM_FUNCTION Fungsi untuk mengubah output khusus endpoint model menjadi output fungsi prediksi.

Contoh fungsi transformasi

Untuk lebih memahami cara membuat fungsi transformasi untuk endpoint model Anda, pertimbangkan endpoint model penyematan teks yang dihosting kustom yang memerlukan input dan output JSON.

Contoh permintaan curl berikut membuat penyematan berdasarkan perintah dan endpoint model:

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

Contoh respons berikut ditampilkan:

[[ 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]]

Berdasarkan input dan respons ini, Anda dapat menyimpulkan hal berikut:

  • Model mengharapkan input JSON melalui kolom prompt. Kolom ini menerima array input. Karena fungsi mysql.ml_embedding() adalah fungsi tingkat baris, fungsi ini mengharapkan satu input teks dalam satu waktu. Oleh karena itu, Anda perlu membuat fungsi transformasi input yang membangun array dengan satu elemen.

  • Respons dari model adalah array embedding, satu untuk setiap input perintah ke model. Karena fungsi mysql.ml_embedding() adalah fungsi tingkat baris, fungsi ini menampilkan satu input dalam satu waktu. Oleh karena itu, Anda perlu membuat fungsi transformasi output yang dapat digunakan untuk mengekstrak penyematan dari array.

Contoh berikut menunjukkan fungsi transformasi input dan output yang digunakan untuk endpoint model ini saat didaftarkan dengan pengelolaan endpoint model:

fungsi transformasi input

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 $$

fungsi transformasi output

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 ;

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 ;