Conversational Analytics API を使用してデータソースの認証と接続を行う

デベロッパーは、geminidataanalytics.googleapis.com を介してアクセスできる Conversational Analytics API を使用して、BigQuery、Looker、Looker Studio の構造化データに関する質問に自然言語で回答する人工知能(AI)を活用したチャット インターフェース(データ エージェント)を構築できます。

このページでは、直接 HTTP リクエストまたは SDK を使用して、Conversational Analytics API の認証を行い、LookerBigQueryLooker Studio でデータへの接続を構成する方法について説明します。Conversational Analytics API は、標準の Google Cloud 認証方法を使用します。

始める前に

Conversational Analytics API で認証を行い、データへの接続を構成するには、Conversational Analytics API を有効にするで説明されている前提条件を満たし、 Google Cloud プロジェクトに必要な API を有効にする必要があります。

Conversational Analytics API に対する認証を行う

このセクションでは、HTTP メソッドと Python メソッドを使用して必要な認可トークンを取得し、Conversational Analytics API に対する認証(geminidataanalytics.googleapis.com 経由で)を行う方法について説明します。

HTTP curl

次の curl コマンドのサンプルは、Conversational Analytics API にリクエストを送信します。gcloud auth print-identity-token コマンドは、認可に使用されるアクセス トークンを提供します。コードサンプルで、 は適切な API リソースパスに置き換えます。

curl  -H "Authorization: Bearer $(gcloud auth print-identity-token)" \
https://geminidataanalytics.googleapis.com/

Python を使用した HTTP

次の Python サンプルコードは、Google Cloud CLI と Python を使用して HTTP 認証用のアクセス トークンを取得する方法を示しています。

  billing_project = 'YOUR_BILLING_PROJECT'
  access_token = !gcloud auth application-default print-access-token
  url = f"https://geminidataanalytics.googleapis.com/v1beta/projects/{billing_project}:method"
  headers = {"Authorization": f'Bearer {access_token[0]}'}

サンプル値を次のように置き換えます。

  • YOUR_BILLING_PROJECT: 必要な API が有効になっている課金プロジェクトの ID。
  • method: ターゲット エンドポイントのリソースパス。例:
    • データ エージェントを作成するには、POST メソッドとリソースパス /v1beta/projects/{billing_project}/locations/global/dataAgents を使用します。
    • 既存のデータ エージェントの一覧を取得するには、GET メソッドとリソースパス /v1beta/projects/{billing_project}/locations/global/dataAgents を使用します。

Python SDK

次の Python コードサンプルは、Colaboratory 内で Conversational Analytics API にアクセスするために Google アカウントを認証する方法を示しています。

from google.colab import auth
auth.authenticate_user()

Conversational Analytics API を使用して Looker に接続する

Conversational Analytics API を使用して Looker に接続するには、次の情報を指定する必要があります。

また、認証を行うユーザーまたはサービス アカウントには、必要な Looker 権限が必要です。

適切な認証方法を選択する

認証には、Looker API キー(クライアント ID とクライアント シークレット)またはアクセス トークンを使用できます。プライベート接続のみで Looker(Google Cloud コア)を使用するお客様は、アクセス トークンで認証する必要があります。

次の表を使用して、適切な認証方法を選択します。

ユーザーの種類 認証方法 Looker(オリジナル)の場合 Looker(Google Cloud コア)の場合 プライベート接続のみを使用する Looker(Google Cloud コア)の場合 説明
埋め込みユーザー アクセス トークン login_user login_user なし ターゲット ユーザーの access_token の LookML 行レベルと列レベルの権限(access_filtersaccess_grantssql_always_where など)を尊重します。
標準ユーザー アクセス トークン

login_user

または

OAuth クライアント

OAuth クライアント OAuth クライアント ターゲット ユーザーの access_token の LookML 行レベルと列レベルの権限(access_filtersaccess_grantssql_always_where など)を尊重します。
Looker API 専用のサービス アカウント API キー クライアント ID とシークレット クライアント ID とシークレット なし すべてのユーザーが Looker への同じレベルのアクセス権を共有します。

API キーは、ユーザーの権限とアクセスレベルを使用します。API キーは、すべてのユーザーが同じレベルのアクセス権を共有するアプリケーションを構築する場合に便利です。

アクセス トークンを使用すると、ターゲット ユーザーの access_token の LookML 行レベルと列レベルの権限(access_filtersaccess_grantssql_always_where など)を使用できます。アクセス トークンはマルチテナント アプリケーションに役立ちます。

必要な Looker の権限

認証に使用される認証情報を持つユーザーまたはサービス アカウントには、クエリするモデルに対する次の権限を含む Looker ロールが付与されている必要があります。

これらの権限は、Looker インスタンスの [管理 > ロール] セクションで構成できます。

Looker API キーを使用して認証する

このセクションでは、直接 HTTP リクエストまたは SDK を使用して API キーを生成し、Conversational Analytics API を構成して Looker に接続する方法について説明します。

Looker インスタンスとの接続を確立するには、有効な Looker API キーが必要です。このキーは Looker によって作成され、クライアント ID とクライアント シークレットで構成されます。Looker は、これらのキーを使用して Looker API へのリクエストを認可します。

新しい Looker API キーの生成については、管理者設定 - ユーザーをご覧ください。認証方法と Looker API キーの管理の詳細については、Looker API の認証をご覧ください。

Python を使用した HTTP

API キー(クライアント ID とシークレット)を生成したら、直接 HTTP リクエストを送信して、Looker に接続するように Conversational Analytics API を構成できます。次のサンプルコードは、HTTP リクエストの本文で Looker データソースの詳細と API キーを指定する方法を示しています。


looker_credentials = {
  "oauth": {
      "secret": {
        "client_id": "your_looker_client_id",
        "client_secret": "your_looker_client_secret",
      }
  }
}

looker_data_source = {
  "looker": {
    "explore_references": {
        "looker_instance_uri": "https://your_company.looker.com",
        "lookml_model": "your_model",
        "explore": "your_explore",
    }
  }
}

サンプル値を次のように置き換えます。

  • your_looker_client_id: 生成された Looker API キーのクライアント ID
  • your_looker_client_secret: 生成された Looker API キーのクライアント シークレット
  • https://your_company.looker.com: Looker インスタンスの完全な URL
  • your_model: 使用する LookML モデルの名前
  • your_explore: 指定されたモデル内で使用する Explore の名前

Python SDK

API キー(クライアント ID とシークレット)を生成したら、Python を使用して Conversational Analytics API を構成し、Looker に接続できます。次の Python コードサンプルは、Looker データソースの詳細と API キーを Conversational Analytics API に指定する方法を示しています。

looker_client_id = "YOUR-LOOKER-CLIENT-ID" # @param {type:"string"}
looker_client_secret = "YOUR-LOOKER-CLIENT-SECRET" # @param {type:"string"}
looker_instance_uri = "YOUR-LOOKER-INSTANCE-URI" # @param {type:"string"}
lookml_model = "YOUR-LOOKER-MODEL" # @param {type:"string"}
explore = "YOUR-LOOKER-EXPLORE" # @param {type:"string"}

# Looker data source
looker_explore_reference = geminidataanalytics.LookerExploreReference()
looker_explore_reference.looker_instance_uri = looker_instance_uri
looker_explore_reference.lookml_model = lookml_model
looker_explore_reference.explore = explore

credentials = geminidataanalytics.Credentials()
credentials.oauth.secret.client_id = looker_client_id
credentials.oauth.secret.client_secret = looker_client_secret

# Connect to your data source
datasource_references = geminidataanalytics.DatasourceReferences()
datasource_references.looker.explore_references = [looker_explore_reference]

サンプル値を次のように置き換えます。

  • YOUR-LOOKER-CLIENT-ID: 生成された Looker API キーのクライアント ID
  • YOUR-LOOKER-CLIENT-SECRET: 生成された Looker API キーのクライアント シークレット
  • YOUR-LOOKER-INSTANCE-URI: Looker インスタンスの完全な URL
  • YOUR-LOOKER-MODEL: 使用する Looker モデルの名前
  • YOUR-LOOKER-EXPLORE: 使用する Looker Explore の名前

アクセス トークンによる認証

このセクションでは、アクセス トークンを使用して Looker に接続するように Conversational Analytics API を構成する方法について説明します。

Looker インスタンスとの接続を確立するには、有効な OAuth2 access_token 値が必要です。この値は、login Looker API エンドポイントへのリクエストが成功すると作成されます。

アクセス トークンの生成について詳しくは、Looker API の認証と、認証トークンを取得するためにクライアント認証情報を提示する方法をご覧ください。

Python を使用した HTTP

次のサンプルコードで示すのは、HTTP リクエストの本文で Looker データソースの詳細とアクセス トークンを指定する方法です。

セキュリティを強化するため、Looker アクセス トークン(access_token)を環境変数として保存することをおすすめします。

looker_credentials = {
  "oauth": {
    "token": {
      "access_token": "YOUR-TOKEN",
    }
  }
}

looker_data_source = {
  "looker": {
    "explore_references": {
        "looker_instance_uri": "https://your_company.looker.com",
        "lookml_model": "your_model",
        "explore": "your_explore",
    }
  }
}

サンプル値を次のように置き換えます。

  • YOUR-TOKEN: Looker の認証用に生成する access_token 値。
  • https://your_company.looker.com: Looker インスタンスの完全な URL
  • your_model: 使用する LookML モデルの名前
  • your_explore: 指定されたモデル内で使用する Explore の名前

Python SDK

次の Python コードサンプルで示すのは、Looker データソースの詳細とアクセス トークンを定義し、Python SDK を使用して認証する方法です。

セキュリティを強化するため、Looker アクセス トークン(access_token)を環境変数として保存することをおすすめします。

looker_access_token = "YOUR-TOKEN"
looker_instance_uri = "YOUR-LOOKER-INSTANCE-URI"
lookml_model = "YOUR-LOOKER-MODEL"
explore = "YOUR-LOOKER-EXPLORE"

# Looker data source
looker_explore_reference = geminidataanalytics.LookerExploreReference()
looker_explore_reference.looker_instance_uri = looker_instance_uri
looker_explore_reference.lookml_model = lookml_model
looker_explore_reference.explore = explore

credentials = geminidataanalytics.Credentials()
credentials.oauth.token.access_token = looker_access_token

# Connect to your data source
datasource_references = geminidataanalytics.DatasourceReferences()
datasource_references.looker.explore_references = [looker_explore_reference]

サンプル値を次のように置き換えます。

  • YOUR-TOKEN: Looker の認証に使用する access_token
  • YOUR-LOOKER-INSTANCE-URI: Looker インスタンスの完全な URL
  • YOUR-LOOKER-MODEL: 使用する Looker モデルの名前
  • YOUR-LOOKER-EXPLORE: 使用する Looker Explore の名前

JavaScript を使用した HTTP

次のサンプルコードで示すのは、HTTP リクエストの本文で Looker データソースの詳細とアクセス トークンを指定する方法です。

セキュリティを強化するため、Looker アクセス トークン(access_token)を環境変数として保存することをおすすめします。

const requestBody = {
  project: GCP_PROJECT,
  messages: [
    {
      user_message: {
        text: inputWithPreviousMessages,
      },
    },
  ],
  context: {
    system_instruction: agentConfig.system_instructions,
    datasource_references: {
      looker: {
        explore_references: [
          {
            looker_instance_uri: YOUR-LOOKER-INSTANCE-URI,
            lookml_model: YOUR-LOOKER-MODEL,
            explore: YOUR-LOOKER-EXPLORE,
          },
        ],
        credentials: {
          oauth: {
            token: {
              access_token: YOUR-TOKEN,
            },
          },
        },
      },
    },
  },
}

サンプル値を次のように置き換えます。

  • YOUR-LOOKER-INSTANCE-URI: Looker インスタンスの完全な URL
  • YOUR-LOOKER-MODEL: 使用する LookML モデルの名前
  • YOUR-LOOKER-EXPLORE: 指定されたモデル内で使用する Explore の名前
  • YOUR-TOKEN: Looker の認証用に生成する access_token 値。

Conversational Analytics API を使用して BigQuery に接続する

Conversational Analytics API を使用して 1 つ以上の BigQuery テーブルに接続するには、テーブルごとに該当する BigQuery プロジェクトの認証を行う必要があります。各テーブルについて、次の情報を指定します。

  • BigQuery プロジェクト ID
  • BigQuery データセット ID
  • BigQuery テーブル ID

Conversational Analytics API では、接続できる BigQuery テーブルの数に上限はありません。ただし、多数のテーブルに接続すると、精度が低下したり、Gemini の入力トークン上限を超える可能性があります。複数のテーブルにわたる複雑な結合を必要とするクエリでも、レスポンスの精度が低下する可能性があります。

このセクションでは、直接 HTTP リクエストまたは SDK を使用して、BigQuery に接続するように Conversational Analytics API を構成する方法について説明します。

Python を使用した HTTP

次のサンプルコードは、複数の BigQuery テーブルへの接続を定義します。

bigquery_data_sources = {
    "bq": {
      "tableReferences": [
        {
          "projectId": "my_project_id",
          "datasetId": "my_dataset_id",
          "tableId": "my_table_id"
        },
        {
          "projectId": "my_project_id_2",
          "datasetId": "my_dataset_id_2",
          "tableId": "my_table_id_2"
        },
        {
          "projectId": "my_project_id_3",
          "datasetId": "my_dataset_id_3",
          "tableId": "my_table_id_3"
        },
      ]
    }
}

サンプル値を次のように置き換えます。

  • my_project_id: 接続する BigQuery データセットとテーブルを含む Google Cloud プロジェクトの ID。公開データセットに接続するには、bigquery-public-data を指定します。
  • my_dataset_id: BigQuery データセットの ID。
  • my_table_id: BigQuery テーブルの ID。

Python SDK

Colaboratory の auth SDK を使用して、Colaboratory で認証されたユーザーの認証情報で BigQuery に対する認証を行うことができます。

次の Python コードサンプルは、複数の BigQuery テーブルへの接続を定義し、Colaboratory 内で BigQuery に対して Google アカウントの認証を行う方法を示しています。

from google.colab import auth
auth.authenticate_user()

# BigQuery data source
bigquery_table_reference = geminidataanalytics.BigQueryTableReference()
bigquery_table_reference.project_id = "my_project_id"
bigquery_table_reference.dataset_id = "my_dataset_id"
bigquery_table_reference.table_id = "my_table_id"

bigquery_table_reference_2 = geminidataanalytics.BigQueryTableReference()
bigquery_table_reference_2.project_id = "my_project_id_2"
bigquery_table_reference_2.dataset_id = "my_dataset_id_2"
bigquery_table_reference_2.table_id = "my_table_id_2"

bigquery_table_reference_3 = geminidataanalytics.BigQueryTableReference()
bigquery_table_reference_3.project_id = "my_project_id_3"
bigquery_table_reference_3.dataset_id = "my_dataset_id_3"
bigquery_table_reference_3.table_id = "my_table_id_3"

# Connect to your data source
datasource_references = geminidataanalytics.DatasourceReferences()
datasource_references.bq.table_references = [bigquery_table_reference, bigquery_table_reference_2, bigquery_table_reference_3]

サンプル値を次のように置き換えます。

  • my_project_id: 接続する BigQuery データセットとテーブルを含む Google Cloud プロジェクトの ID。公開データセットに接続するには、bigquery-public-data を指定します。
  • my_dataset_id: BigQuery データセットの ID。例: san_francisco
  • my_table_id: BigQuery テーブルの ID。例: street_trees

Conversational Analytics API を使用して Looker Studio に接続する

Conversational Analytics API を使用して Looker Studio に接続するには、まず Looker Studio API を有効にする必要があります。このセクションでは、直接 HTTP リクエストまたは SDK を使用して、Looker Studio に接続するように Conversational Analytics API を構成する方法について説明します。

Looker Studio API を有効にする

Looker Studio API を有効にするには、API を有効にするの手順を実施します。

Looker Studio に対する認証

Conversational Analytics API を使用して Looker Studio に接続するには、Looker Studio で認証を行い、Looker Studio のデータソース ID を提供する必要があります。

Python を使用した HTTP

Looker Studio API を有効にすると、Python で HTTP curl リクエストを送信して、Looker Studio の認証を行うことができます。次のサンプルコードで示すのは、HTTP リクエストの本文で Looker データソースの詳細を指定する方法です。

Looker Studio の認証は、直接 HTTP リクエストを送信することで行うことができます。HTTP 呼び出しの例を次のコードブロックに示します。

looker_studio_data_source = {
    "studio":{
        "studio_references":
        [
            {
              "datasource_id": "your_studio_datasource_id"
            }
        ]
    }
}

your_studio_datasource_id は、使用する Looker Studio データソースの実際のデータソース ID に置き換えます。

Python SDK

Looker Studio API を有効にすると、SDK を使用して Looker Studio の認証を行うことができます。次の Python コードサンプルで示すのは、Looker データソースの詳細を指定して Looker Studio で認証する方法を示しています。


datasource_id = "STUDIO-DATASOURCE-ID"

# Looker Studio
studio_references = geminidataanalytics.StudioDatasourceReference()
studio_references.datasource_id = studio_datasource_id

# Connect to your data source
datasource_references = geminidataanalytics.DatasourceReferences()
datasource_references.studio.studio_references = [studio_references]

STUDIO-DATASOURCE-ID は、使用する Looker Studio データソースの実際のデータソース ID に置き換えます。