使用模型端點管理工具註冊及呼叫遠端 AI 模型

本頁面說明如何使用模型叫用預測或產生嵌入,然後向模型端點管理服務註冊模型端點。

如要進一步瞭解 mysql.ml_create_model_registration() 函式,請參閱模型端點管理參考資料

事前準備

  • 根據模型供應商設定驗證。

設定驗證方法

以下各節說明如何設定驗證,然後新增 Vertex AI 模型端點或 Google Cloud代管的模型端點。

設定 Vertex AI 的驗證

如要使用 Google Vertex AI 模型端點,您必須將 Vertex AI 權限新增至用來連線至資料庫的 IAM 型 Cloud SQL 服務帳戶。如要進一步瞭解如何整合 Vertex AI,請參閱「整合 Cloud SQL 與 Vertex AI」。

為自訂代管模型設定驗證

本節說明如何在使用 Secret Manager 時設定驗證。 除了 Vertex AI 模型端點以外,您可以在 Secret Manager 中儲存所有模型的 API 金鑰或不記名權杖。

如果模型端點並非透過 Secret Manager 處理驗證,則這個部分為選填。舉例來說,如果模型端點使用 HTTP 標頭傳遞驗證資訊,或完全不使用驗證,則不必完成本節中的步驟。

如要建立及使用 API 金鑰或不記名權杖,請完成下列步驟:

  1. 在 Secret Manager 中建立密鑰。詳情請參閱「建立密鑰及存取密鑰版本」。

    密碼名稱和密碼路徑會用於 mysql.ml_create_sm_secret_registration() SQL 函式。

  2. 授予 Cloud SQL 執行個體存取密碼的權限。

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

    更改下列內容:

    • SECRET_ID:Secret Manager 中的密鑰 ID。
    • SERVICE_ACCOUNT_EMAIL:以 IAM 為基礎的 Cloud SQL 服務帳戶電子郵件地址。如要找出這個電子郵件地址,請使用 gcloud sql instances describe INSTANCE_NAME 指令,並將 INSTANCE_NAME 替換為執行個體名稱。serviceAccountEmailAddress 參數旁邊顯示的值就是電子郵件地址。

內建支援的文字嵌入模型

本節說明如何註冊模型端點,以便管理模型端點。

Vertex AI 嵌入模型

模型端點管理功能內建支援所有版本的 text-embedding-geckotext-embeddinggemini-embedding 模型,使用完整名稱將模型版本設為 textembedding-gecko@001textembedding-gecko@002

由於模型端點管理功能預設支援 Vertex AI 嵌入模型端點 ID,因此您可以直接將任何 ID 做為模型 ID 使用。對於這些模型,嵌入函式會自動執行輸入和輸出轉換。

請確認 Cloud SQL 執行個體和您查詢的 Vertex AI 模型位於相同區域。

如要註冊 gemini-embedding-001 模型端點,請呼叫 ml_create_model_registration 函式:

  CALL
    mysql.ml_create_model_registration(
      'gemini-embedding-001',
      'publishers/google/models/gemini-embedding-001',
      'google','text_embedding', 'gemini-embedding-001',
      'AUTH_TYPE_CLOUDSQL_SERVICE_AGENT_IAM',
       NULL,
      'mysql.cloudsql_ml_text_embedding_input_transform',
      'mysql.cloudsql_ml_text_embedding_output_transform', NULL);

自訂代管文字嵌入模型

本節說明如何註冊在 Google Cloud網路中代管的自訂模型端點。

如要新增自訂代管的文字嵌入模型端點,請建立轉換函式,並視需要建立自訂 HTTP 標頭。另一方面,新增自訂代管的通用模型端點時,可選擇產生自訂 HTTP 標頭,並設定模型要求網址。

以下範例會新增 Cymbal 代管的 custom-embedding-model 文字嵌入模型端點,該端點代管於 Google Cloud。cymbal_text_input_transformcymbal_text_output_transform 轉換函式可用來將模型的輸入和輸出格式,轉換為預測函式的輸入和輸出格式。

如要註冊自訂主機代管的文字嵌入模型端點,請完成下列步驟:

  1. 呼叫儲存在 Secret Manager 中的密鑰:

    CALL
      mysql.ml_create_sm_secret_registration(
        'SECRET_ID',
        'projects/project-id/secrets/SECRET_MANAGER_SECRET_ID/versions/VERSION_NUMBER');
    

    更改下列內容:

    • SECRET_ID:您設定的密鑰 ID,後續註冊模型端點時會使用這個 ID,例如 key1
    • SECRET_MANAGER_SECRET_ID:您建立密鑰時在 Secret Manager 中設定的密鑰 ID。
    • PROJECT_ID:您的 Google Cloud 專案 ID。
    • VERSION_NUMBER:密鑰 ID 的版本號碼。
  2. 根據文字嵌入模型端點的預測函式,建立輸入和輸出轉換函式。如要進一步瞭解如何建立轉換函式,請參閱轉換函式範例

    以下是專為 custom-embedding-model 文字嵌入模型端點設計的轉換函式範例:

    -- Input Transform Function corresponding to the custom model endpoint
    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 $$
    
    -- Output Transform Function corresponding to the custom model endpoint
    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 ;
    
  3. 呼叫建立模型函式,註冊自訂嵌入模型端點:

   CALL
      mysql.ml_create_model_registration(
        'MODEL_ID',
        'REQUEST_URL',
        'custom',
        'text_embedding',
        'MODEL_QUALIFIED_NAME',
        'auth_type_secret_manager',
        'SECRET_ID'
        'database_name.cymbal_text_input_transform',
        'database_name.cymbal_text_output_transform', NULL);

更改下列內容:

  • MODEL_ID:必填。您定義的模型端點專屬 ID (例如 custom-embedding-model)。模型端點需要參照這個模型 ID,才能產生嵌入或叫用預測。
  • REQUEST_URL:必填。新增自訂文字嵌入和一般模型端點時,模型專屬的端點 (例如 https://cymbal.com/models/text/embeddings/v1)。確認可透過內部 IP 位址存取模型端點。模型端點管理服務不支援外部 IP 位址。
  • MODEL_QUALIFIED_NAME:如果模型端點使用限定名稱,則為必要欄位。如果模型端點有多個版本,則為完整名稱。
  • SECRET_ID:您在先前的mysql.ml_create_sm_secret_registration()程序中使用的密鑰 ID。

通用模型

本節說明如何從 Vertex AI Model Garden 註冊一般gemini-flash模型端點,該端點預設已在目錄中註冊。您可以註冊在 Google Cloud內代管的任何通用模型端點。

Cloud SQL 僅支援透過 Vertex AI Model Garden 提供的模型端點,以及託管於 Google Cloud網路中的模型端點。

Gemini 模型

下列範例使用 Vertex AI Model Garden 中的 gemini-2.5-flash 模型端點。

如要註冊 gemini-2.5-flash 模型端點,請呼叫 mysql.ml_create_model_registration 函式:

    CALL
      mysql.ml_create_model_registration(
        'MODEL_ID',
        'https://us-central1-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/publishers/google/models/gemini-2.5-flash:streamGenerateContent',
        'google',
        'auth_type_cloudsql_service_agent_iam',
        NULL, NULL, NULL, NULL);

更改下列內容:

  • MODEL_ID:您定義的模型端點專屬 ID (例如
    gemini-1)。模型端點需要參考這個模型 ID,才能產生嵌入或叫用預測。
  • PROJECT_ID:您的 Google Cloud 專案 ID。

詳情請參閱如何叫用一般模型端點的預測結果

後續步驟