モデル エンドポイント管理を使用してリモート AI モデルを登録して呼び出す

このページでは、モデル エンドポイント管理にモデル エンドポイントを登録し、モデルを使用して予測を呼び出す方法、またはエンベディングを生成する方法について説明します。

始める前に

モデル エンドポイント管理にモデル エンドポイントを登録する前に、google_ml_integration 拡張機能を有効にし、モデル エンドポイントで認証が必要な場合はモデル プロバイダに基づいて認証を設定する必要があります。

postgres のデフォルト ユーザー名でデータベースにアクセスしていることを確認します。

拡張機能を有効にする

関連する関数を使用するには、google_ml_integration 拡張機能を追加して有効にする必要があります。モデル エンドポイント管理では、google_ml_integration 拡張機能をインストールしておく必要があります。

  1. インスタンスの google_ml_integration.enable_model_support データベース フラグが on に設定されていることを確認します。データベース フラグの設定の詳細については、インスタンスのデータベース フラグを構成するをご覧ください。

  2. psql を使用するか、AlloyDB for PostgreSQL Studio を使用してデータベースに接続します。

  3. psql を使用して google_ml_integration 拡張機能を追加します。

      CREATE EXTENSION IF NOT EXISTS google_ml_integration;
    
  4. 省略可: google_ml_integration 拡張機能がすでにインストールされている場合は、最新バージョンに更新されるようにこれを変更します。

        ALTER EXTENSION google_ml_integration UPDATE;
    
  5. 省略可: マルチモーダル モデル、ランキング モデル、演算子関数のサポートなど、AlloyDB for PostgreSQL AI クエリエンジンプレビュー)の機能を使用するアクセス権をリクエストします。

  6. 省略可: モデルのメタデータを管理する権限を非スーパー PostgreSQL ユーザーに付与します。

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

    NON_SUPER_USER は、非スーパー PostgreSQL ユーザー名に置き換えます。

  7. サードパーティ モデルなど、VPC 外でホストされているモデルにアクセスできるように、アウトバウンド IP が有効になっていることを確認します。詳細については、インスタンスへのアウトバウンド接続を追加するをご覧ください。

認証を設定する

以降のセクションでは、モデル エンドポイントを登録する前に認証を設定する方法について説明します。

Vertex AI の認証を設定する

Google Vertex AI モデル エンドポイントを使用するには、データベースへの接続に使用する IAM ベースの AlloyDB サービス アカウントに Vertex AI の権限を追加する必要があります。Vertex AI との統合の詳細については、Vertex AI との統合をご覧ください。

Secret Manager を使用して認証を設定する

このセクションでは、サードパーティ プロバイダの認証情報を保存するために Secret Manager を使用する場合に、認証を設定する方法について説明します。

モデル エンドポイントが Secret Manager を介した認証を処理しない場合(たとえば、モデル エンドポイントが HTTP ヘッダーを使用して認証情報を渡す場合や、認証をまったく使用しない場合)は、この手順は省略可能です。

API キーまたは署名なしトークンを作成して使用する手順は次のとおりです。

  1. Secret Manager でシークレットを作成します。詳細については、シークレットを作成してシークレット バージョンにアクセスするをご覧ください。

    シークレット パスは google_ml.create_sm_secret() SQL 関数で使用されます。

  2. AlloyDB クラスタに Secret へのアクセス権を付与します。

      gcloud secrets add-iam-policy-binding 'SECRET_NAME' \
          --member="serviceAccount:SERVICE_ACCOUNT_ID" \
          --role="roles/secretmanager.secretAccessor"
    

    次のように置き換えます。

    • SECRET_NAME: Secret Manager 内のシークレット名。
    • SERVICE_ACCOUNT_ID: IAM ベースのサービス アカウントの ID(serviceAccount:service-PROJECT_ID@gcp-sa-alloydb.iam.gserviceaccount.com 形式、例: service-212340152456@gcp-sa-alloydb.iam.gserviceaccount.com)。

      このロールは、プロジェクト レベルでサービス アカウントに付与することもできます。詳細については、Identity and Access Management ポリシー バインディングを追加するをご覧ください。

ヘッダーを使用して認証を設定する

次の例は、関数を使用して認証を設定する方法を示したものです。この関数は、エンベディング モデルへのリクエストに必要なヘッダーを含む JSON オブジェクトを返します。

  CREATE OR REPLACE FUNCTION HEADER_GEN_FUNCTION(
    model_id VARCHAR(100),
    input_text TEXT
  )
  RETURNS JSON
  LANGUAGE plpgsql
  AS $$
  #variable_conflict use_variable
  DECLARE
    api_key VARCHAR(255) := 'API_KEY';
    header_json JSON;
  BEGIN
    header_json := json_build_object(
      'Content-Type', 'application/json',
      'Authorization', 'Bearer ' || api_key
    );
    RETURN header_json;
  END;
  $$;

次のように置き換えます。

  • HEADER_GEN_FUNCTION: モデルの登録時に使用できるヘッダー生成関数の名前。
  • API_KEY: モデル プロバイダの API キー。

テキスト エンベディング モデル

このセクションでは、モデル エンドポイント管理にモデル エンドポイントを登録する方法について説明します。

モデル エンドポイント管理では、事前登録済みのモデル エンドポイントとして、一部のテキスト エンベディング モデルと汎用 Vertex AI モデルがサポートされています。モデル ID を直接使用して、モデルタイプに基づくエンベディングの生成や予測の呼び出しを行えます。サポートされている事前登録済みモデルの詳細については、事前登録済みの Vertex AI モデルをご覧ください。

text-embedding-large-exp-03-07 モデルは us-central1 リージョンでのみ使用できます。

たとえば、事前登録された text-embedding-large-exp-03-07 モデルを呼び出すには、以下のとおりエンベディング関数を使用してモデルを直接呼び出します。

SELECT
      embedding(
        model_id => 'text-embedding-large-exp-03-07',
        content => 'AlloyDB is a managed, cloud-hosted SQL database service');

同様に、事前登録された gemini-1.5-pro:generateContent モデルを呼び出すには、以下のとおり予測関数を使用してモデルを直接呼び出します。

 SELECT google_ml.predict_row(
            model_id => 'gemini-1.5-pro:generateContent',
            request_body => '{
        "contents": [
            {
                "role": "user",
                "parts": [
                    {
                        "text": "For TPCH database schema as mentioned here https://www.tpc.org/TPC_Documents_Current_Versions/pdf/TPC-H_v3.0.1.pdf , generate a SQL query to find all supplier names which are located in the India nation. Only provide SQL query with no explanation."
                    }
                ]
            }
        ]
        }')-> 'candidates' -> 0 -> 'content' -> 'parts' -> 0 -> 'text';

エンベディングを生成するには、事前登録済みモデル エンドポイントのエンベディングを生成する方法をご覧ください。予測を呼び出すには、事前登録済みのモデル エンドポイントの予測を呼び出す方法をご覧ください。

サポートが組み込まれたテキスト エンベディング モデル

モデル エンドポイント管理には、Vertex AI と OpenAI の一部モデルのサポートが組み込まれています。サポートが組み込まれているモデルの一覧については、サポートが組み込まれているモデルをご覧ください。

サポートが組み込まれているモデルについては、修飾名をモデルの修飾名として設定し、リクエスト URL を指定できます。モデル エンドポイント管理は、モデルを自動的に識別し、デフォルトの変換関数を設定します。

Vertex AI エンベディング モデル

次の手順では、組み込みサポートを使用して Vertex AI モデルを登録する方法を示します。例として、text-embedding-005 モデル エンドポイントと text-multilingual-embedding-002 モデル エンドポイントを使用します。

クエリを実行する AlloyDB クラスタと Vertex AI モデルの両方が同じリージョンに存在している必要があります。

  1. psql を使用してデータベースに接続します。

  2. google_ml_integration 拡張機能を作成して有効にします

  3. モデル作成関数を呼び出して、モデル エンドポイントを追加します。

    text-embedding-005

      CALL
        google_ml.create_model(
          model_id => 'text-embedding-005',
          model_request_url => 'publishers/google/models/text-embedding-005',
          model_provider => 'google',
          model_qualified_name => 'text-embedding-005',
          model_type => 'text_embedding',
          model_auth_type => 'alloydb_service_agent_iam');
    

    text-multilingual-embedding-002

      CALL
        google_ml.create_model(
          model_id => 'text-multilingual-embedding-002',
          model_request_url => 'publishers/google/models/text-multilingual-embedding-002',
          model_provider => 'google',
          model_qualified_name => 'text-multilingual-embedding-002',
          model_type => 'text_embedding',
          model_auth_type => 'alloydb_service_agent_iam'
          model_in_transform_fn => 'google_ml.vertexai_text_embedding_input_transform',
          model_out_transform_fn => 'google_ml.vertexai_text_embedding_output_transform');
    

モデルが AlloyDB クラスタとは別のプロジェクトとリージョンに保存されている場合は、リクエスト URL を projects/PROJECT_ID/locations/REGION_ID/publishers/google/models/MODEL_ID に設定します。ここで、REGION_ID はモデルがホストされているリージョン、MODEL_ID は修飾モデル名です。

また、AlloyDB インスタンスが存在するプロジェクトの AlloyDB サービス アカウントに Vertex AI ユーザー(roles/aiplatform.user)ロールを付与して、AlloyDB が他のプロジェクトでホストされているモデルにアクセスできるようにします。

Open AI テキスト エンベディング モデル

google_ml_integration 拡張機能は、デフォルトの変換関数を自動的に設定し、遠隔の OpenAI モデルに対する呼び出しを行います。サポートが組み込まれている OpenAI モデルの一覧については、サポートが組み込まれているモデルをご覧ください。

次の例では、text-embedding-ada-002 OpenAI モデル エンドポイントを追加します。OpenAI の text-embedding-3-small モデル エンドポイントと text-embedding-3-large モデル エンドポイントは、同じ手順を使用し、モデルに固有のモデル修飾名を設定して登録できます。

  1. psql を使用してデータベースに接続します。
  2. google_ml_integration 拡張機能を作成して有効にします
  3. 認証のため、OpenAI API キーを Secret Manager に Secret として追加します
  4. Secret Manager に保存されている Secret を呼び出します。

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

    次のように置き換えます。

    • SECRET_ID: 設定した Secret ID。モデル エンドポイントの登録時に使用されます(例: key1)。
    • SECRET_MANAGER_SECRET_ID: シークレットの作成時に Secret Manager で設定したシークレット ID。
    • PROJECT_ID: 実際の Google Cloud プロジェクト ID。
    • VERSION_NUMBER: シークレット ID のバージョン番号。
  5. モデル作成関数を呼び出して、text-embedding-ada-002 モデル エンドポイントを登録します。

    CALL
      google_ml.create_model(
        model_id => 'MODEL_ID',
        model_provider => 'open_ai',
        model_type => 'text_embedding',
        model_qualified_name => 'text-embedding-ada-002',
        model_auth_type => 'secret_manager',
        model_auth_id => 'SECRET_ID');
    

    次のように置き換えます。

    • MODEL_ID: 定義するモデル エンドポイントの一意の ID。このモデル ID は、モデル エンドポイントがエンベディングの生成や予測の呼び出しに必要なメタデータのために参照されます。
    • SECRET_ID: google_ml.create_sm_secret() プロシージャで以前に使用したシークレット ID。

エンベディングを生成するには、組み込みサポートを使用してモデル エンドポイントのエンベディングを生成する方法をご覧ください。

セルフホスト型テキスト エンベディング モデル

このセクションでは、セルフホスト型モデル エンドポイントを登録する方法とともに、変換関数を作成する方法、および必要に応じてカスタム HTTP ヘッダーを作成する方法も説明します。セルフホスト型モデル エンドポイントは、ホストされている場所に関係なくすべてサポートされています。

次の例では、Cymbal でホストされている custom-embedding-model カスタムモデル エンドポイントを追加します。cymbal_text_input_transform 変換関数と cymbal_text_output_transform 変換関数は、モデルの入力形式と出力形式を予測関数の入力形式と出力形式に変換するために使用されます。

セルフホスト型テキスト エンベディング モデルのエンドポイントを登録するには、次の操作を行います。

  1. psql を使用してデータベースに接続します。

  2. google_ml_integration 拡張機能を作成して有効にします

  3. 省略可: 認証のため、API キーを Secret Manager に Secret として追加します

  4. Secret Manager に保存されている Secret を呼び出します。

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

    次のように置き換えます。

    • SECRET_ID: 設定した Secret ID。モデル エンドポイントの登録時に使用されます(例: key1)。
    • SECRET_MANAGER_SECRET_ID: シークレットの作成時に Secret Manager で設定したシークレット ID。
    • PROJECT_ID: 実際の Google Cloud プロジェクト ID。
    • VERSION_NUMBER: シークレット ID のバージョン番号。
  5. テキスト エンベディング モデルのエンドポイント用の予測関数の次の署名に基づいて、入力変換関数と出力変換関数を作成します。変換関数の作成方法については、変換関数の例をご覧ください。

    次の例は、custom-embedding-model テキスト エンベディング モデルのエンドポイントに固有の変換関数です。

    -- 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;
    $$;
    
  6. モデル作成関数を呼び出して、カスタム エンベディング モデルのエンドポイントを登録します。

    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');
    

    次のように置き換えます。

    • MODEL_ID: 必須。定義するモデル エンドポイントの一意の ID(custom-embedding-model など)。このモデル ID は、モデル エンドポイントがエンベディングの生成や予測の呼び出しに必要なメタデータのために参照されます。
    • REQUEST_URL: 必須。カスタム テキスト エンベディングと汎用モデル エンドポイントを追加する場合のモデル固有のエンドポイント(https://cymbal.com/models/text/embeddings/v1 など)。モデル エンドポイントに内部 IP アドレスからアクセスできることを確認します。モデル エンドポイント管理はパブリック IP アドレスをサポートしていません。
    • MODEL_QUALIFIED_NAME: モデル エンドポイントで修飾名を使用する場合に必須です。モデル エンドポイントに複数のバージョンがある場合の完全修飾名。
    • SECRET_ID: google_ml.create_sm_secret() プロシージャで以前に使用したシークレット ID。

組み込みサポートのあるマルチモーダル モデル

モデル エンドポイント管理には Vertex AI による multimodalembedding@001 モデルの組み込みサポートが用意されているため、モデル ID を直接呼び出してマルチモーダル エンベディングを生成できます。

次の例では、multimodalembedding@001 修飾モデル名をモデル ID として使用して、マルチモーダル画像エンベディングを生成します。

  1. psql を使用してデータベースに接続します。
  2. google_ml_integration 拡張機能を作成して有効にします
  3. マルチモーダル画像エンベディングを生成する:

    SELECT
      ai.image_embedding(
        model_id => 'multimodalembedding@001',
        image => 'IMAGE_PATH_OR_TEXT',
        mimetype => 'MIMETYPE');
    

次のように置き換えます。

  • IMAGE_PATH_OR_TEXT は、画像の Cloud Storage パスに置き換えます。たとえば、gs://cymbal_user_data/image-85097193-cd9788aacebb.jpeg は、画像のベクトル エンベディングまたは Base64 の文字列に変換します。
  • MIMETYPE は、画像の MIME タイプに置き換えます。

ランキング モデル

このセクションでは、組み込みサポートを備えた semantic-ranker-512-002 Vertex AI ランキング モデルを登録する方法について説明します。semantic-ranker-512-002 モデルと semantic-ranker-512-003 モデルは、どちらも組み込みサポートを備えています。

Vertex AI ランキング モデル

このセクションでは、モデル エンドポイント管理にランキング エンドポイントを登録する方法について説明します。

semantic-ranker-512-002 モデル エンドポイントを登録する手順は次のとおりです。

  1. AlloyDB サービス アカウントとは別のサービス アカウントを作成します

  2. ランキング モデル エンドポイントを登録するプロジェクトで Discovery Engine API を有効にします。

  3. サービス アカウントに次のロールを付与します。

    • Discovery Engine Admin (roles/discoveryengine.admin)
    • Vertex AI Administrator (roles/aiplatform.admin)
  4. サービス アカウントに次のサービス アカウントのロールを付与します。

    • Service Account Token Creator role (roles/iam.serviceAccountTokenCreator)
    • Service Account User role (roles/iam.serviceAccountUser)
  5. 長い有効期間を持つサービス アカウントのアクセス トークンを生成します。

    gcloud auth print-access-token \
      --impersonate-service-account="service-PROJECT_NUMBER@gcp-sa-alloydb.iam.gserviceaccount.com" \
      --lifetime=43200
  6. 生成された認証トークンをシークレットとして認証用の Secret Manager に追加します

  7. psql を使用してデータベースに接続します。

  8. google_ml_integration 拡張機能を作成して有効にします

  9. Secret Manager に保存するシークレットを作成します。

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

    次のように置き換えます。

    • SECRET_ID: 設定した Secret ID。モデル エンドポイントの登録時に使用されます(例: key1)。
    • SECRET_MANAGER_SECRET_ID: シークレットの作成時に Secret Manager で設定したシークレット ID。
    • PROJECT_ID: 実際の Google Cloud プロジェクト ID。
    • VERSION_NUMBER: シークレット ID のバージョン番号。最新バージョンのシークレットが使用されるため、シークレット トークンが期限切れになり、Secret Manager で更新した場合は、AlloyDB でバージョンを再度更新する必要はありません。
  10. モデル作成関数を呼び出して、モデル エンドポイントを追加します。

        CALL
          google_ml.create_model(
            model_id => 'semantic-ranker-512-002',
            model_type => 'reranking',
            model_provider => 'custom',
            model_request_url =>
              'https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/rankingConfigs/default_ranking_config:rank',
            model_qualified_name => 'semantic-ranker-512@002',
            model_auth_type => 'secret_manager',
            model_auth_id => 'SECRET_ID',
            model_in_transform_fn => 'google_ml.vertexai_reranking_input_transform',
            model_out_transform_fn => 'google_ml.vertexai_reranking_output_transform',
            generate_headers_fn => 'google_ml.vertexai_reranking_header_gen_fn');
    

    PROJECT_ID は、プロジェクトの ID に置き換えます。

汎用モデル

このセクションでは、Hugging Face、OpenAI、Vertex AI、Anthropic などのホスト型モデル プロバイダで利用可能な汎用モデル エンドポイントを登録する方法について説明します。このセクションでは、Hugging Face でホストされている汎用モデル エンドポイント、Vertex AI Model Garden の汎用 gemini-pro モデル、claude-haiku モデル エンドポイントを登録する例を示します。

入力と出力が JSON 形式であれば、任意の汎用モデル エンドポイントを登録できます。モデルのエンドポイント メタデータに基づいて、HTTP ヘッダーの生成やリクエスト URL の定義が必要になる場合があります。

事前登録済みの汎用モデルとサポートが組み込まれたモデルの詳細については、サポートされているモデルをご覧ください。

汎用 Gemini モデル

このセクションでは、汎用 Gemini モデルを登録する方法について説明します。

gemini-1.5-pro モデル

一部の gemini-pro モデルは事前登録されているため、モデル ID を直接呼び出して予測を呼び出すことができます。

次の例では、Vertex AI Model Garden の gemini-1.5-pro:generateContent モデル エンドポイントを使用しています。

  1. psql を使用してデータベースに接続します。
  2. google_ml_integration 拡張機能を作成して有効にします
  3. 以下のとおり、事前登録済みのモデル ID を使用して予測を呼び出します。

    SELECT
        json_array_elements(
        google_ml.predict_row(
            model_id => 'gemini-1.5-pro:generateContent',
            request_body => '{
        "contents": [
            {
                "role": "user",
                "parts": [
                    {
                        "text": "For TPCH database schema as mentioned here https://www.tpc.org/TPC_Documents_Current_Versions/pdf/TPC-H_v3.0.1.pdf , generate a SQL query to find all supplier names which are located in the India nation."
                    }
                ]
            }
        ]
        }'))-> 'candidates' -> 0 -> 'content' -> 'parts' -> 0 -> 'text';
    

Hugging Face の汎用モデル

次の例では、Hugging Face でホストされている facebook/bart-large-mnli カスタム分類モデル エンドポイントを追加します。

  1. psql を使用してデータベースに接続します。
  2. google_ml_integration 拡張機能を作成して有効にします
  3. 認証のため、OpenAI API キーを Secret Manager に Secret として追加します。他の OpenAI モデルの Secret をすでに作成している場合は、同じ Secret を再利用できます。
  4. Secret Manager に保存されている Secret を呼び出します。

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

    次のように置き換えます。

    • SECRET_ID: ユーザーが設定し、後にモデル エンドポイントの登録時に使用される Secret ID。
    • SECRET_MANAGER_SECRET_ID: シークレットの作成時に Secret Manager で設定したシークレット ID。
    • PROJECT_ID: 実際の Google Cloud プロジェクト ID。
    • VERSION_NUMBER: シークレット ID のバージョン番号。
  5. モデル作成関数を呼び出して、facebook/bart-large-mnli モデル エンドポイントを登録します。

    CALL
      google_ml.create_model(
        model_id => 'MODEL_ID',
        model_provider => 'hugging_face',
        model_request_url => 'REQUEST_URL',
        model_qualified_name => 'MODEL_QUALIFIED_NAME',
        model_auth_type => 'secret_manager',
        model_auth_id => 'SECRET_ID');
    

    次のように置き換えます。

    • MODEL_ID: 定義するモデル エンドポイントの一意の ID(custom-classification-model など)。このモデル ID は、モデル エンドポイントがエンベディングの生成や予測の呼び出しに必要なメタデータのために参照されます。
    • REQUEST_URL: カスタム テキスト エンベディングと汎用モデル エンドポイントを追加する場合のモデル固有のエンドポイント(https://api-inference.huggingface.co/models/facebook/bart-large-mnli など)。
    • MODEL_QUALIFIED_NAME: モデル エンドポイント バージョンの完全修飾名(facebook/bart-large-mnli など)。
    • SECRET_ID: google_ml.create_sm_secret() プロシージャで以前に使用したシークレット ID。

Anthropic 汎用モデル

次の例では、claude-3-opus-20240229 モデル エンドポイントを追加します。モデル エンドポイント管理は、Anthropic モデルの登録に必要なヘッダー関数を提供します。

  1. psql を使用してデータベースに接続します。
  2. google_ml_integration 拡張機能を作成して有効にします

    Secret Manager

    1. 認証のため、署名なしトークンを Secret として Secret Manager に追加します
    2. Secret Manager に保存されている Secret を呼び出します。

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

      次のように置き換えます。

      • SECRET_ID: ユーザーが設定し、後にモデル エンドポイントの登録時に使用される Secret ID。
      • SECRET_MANAGER_SECRET_ID: シークレットの作成時に Secret Manager で設定したシークレット ID。
      • PROJECT_ID: 実際の Google Cloud プロジェクト ID。
      • VERSION_NUMBER: シークレット ID のバージョン番号。
    3. モデル作成関数を呼び出して、claude-3-opus-20240229 モデル エンドポイントを登録します。

      CALL
        google_ml.create_model(
          model_id => 'MODEL_ID',
          model_provider => 'anthropic',
          model_request_url => 'REQUEST_URL',
          model_auth_type => 'secret_manager',
          model_auth_id => 'SECRET_ID',
          generate_headers_fn => 'google_ml.anthropic_claude_header_gen_fn');
      

      次のように置き換えます。

      • MODEL_ID: 定義するモデル エンドポイントの一意の ID(anthropic-opus など)。このモデル ID は、モデル エンドポイントがエンベディングの生成や予測の呼び出しに必要なメタデータのために参照されます。
      • REQUEST_URL: カスタム テキスト エンベディングと汎用モデル エンドポイントを追加する場合のモデル固有のエンドポイント(https://api.anthropic.com/v1/messages など)。

    Auth ヘッダー

    1. google_ml.anthropic_claude_header_gen_fn のデフォルトのヘッダー生成関数を使用するか、ヘッダー生成関数を作成します。

        CREATE OR REPLACE FUNCTION anthropic_sample_header_gen_fn(model_id VARCHAR(100), request_body JSON)
        RETURNS JSON
        LANGUAGE plpgsql
        AS $$
        #variable_conflict use_variable
        BEGIN
              RETURN json_build_object('x-api-key', 'ANTHROPIC_API_KEY', 'anthropic-version', 'ANTHROPIC_VERSION')::JSON;
        END;
        $$;
      

      次のように置き換えます。

      • ANTHROPIC_API_KEY: anthropic API キー。
      • ANTHROPIC_VERSION(省略可): 使用する特定のモデル バージョン(例: 2023-06-01)。
    2. モデル作成関数を呼び出して、claude-3-opus-20240229 モデル エンドポイントを登録します。

      CALL
        google_ml.create_model(
          model_id => 'MODEL_ID',
          model_provider => 'anthropic',
          model_request_url => 'REQUEST_URL',
          generate_headers_fn => 'google_ml.anthropic_claude_header_gen_fn');
      

      次のように置き換えます。

      • MODEL_ID: 定義するモデル エンドポイントの一意の ID(anthropic-opus など)。このモデル ID は、モデル エンドポイントがエンベディングの生成や予測の呼び出しに必要なメタデータのために参照されます。
      • REQUEST_URL: カスタム テキスト エンベディングと汎用モデル エンドポイントを追加する場合のモデル固有のエンドポイント(https://api.anthropic.com/v1/messages など)。

詳細については、汎用モデル エンドポイントの予測を呼び出す方法をご覧ください。

次のステップ