Gemini API を使用すると、独自のデータに対してセマンティックな取得を行うことができます。ユーザーのデータであるため、API キーよりも厳格なアクセス制御が必要です。
このクイックスタートでは、テスト環境に適した簡略化された認証方法を使用します。本番環境の場合は、アプリに適したアクセス認証情報を選択する前に、認証と認可について学習する。
目標
- OAuth 用に Cloud プロジェクトを設定する
- application-default-credentials を設定する
gcloud auth
を使用する代わりに、プログラムで認証情報を管理する
前提条件
このクイックスタートを実行するには、次のものが必要です。
クラウド プロジェクトを設定する
このクイックスタートを完了するには、まず Cloud プロジェクトを設定する必要があります。
1. API を有効にする
Google API を使用する前に、Google Cloud プロジェクトで API を有効にする必要があります。
Google Cloud コンソールで、Google Generative Language API を有効にします。
2. OAuth 同意画面を構成する
次に、プロジェクトの OAuth 同意画面を構成し、ご自身をテストユーザーとして追加します。Cloud プロジェクトでこの手順をすでに完了している場合は、次のセクションに進みます。
Google Cloud コンソールで、メニュー > [API とサービス] > [OAuth 同意画面] に移動します。
アプリのユーザータイプ [外部] を選択し、[作成] をクリックします。
アプリ登録フォームに入力し(ほとんどのフィールドは空白のままにできます)、保存して次へをクリックします。
現時点では、スコープの追加をスキップして、[Save and Continue] をクリックします。今後、Google Workspace 組織外で使用するアプリを作成する場合は、アプリに必要な認可スコープを追加して検証する必要があります。
テストユーザーを追加します。
- [テストユーザー] で [ユーザーを追加] をクリックします。
- メールアドレスとその他の承認済みテストユーザーを入力し、[保存して次へ] をクリックします。
アプリ登録の概要を確認します。変更するには、[編集] をクリックします。アプリ登録に問題がなければ、[Back to Dashboard] をクリックします。
3. デスクトップ アプリケーションの認証情報を承認する
エンドユーザーとして認証を行い、アプリ内でユーザーデータにアクセスするには、1 つ以上の OAuth 2.0 クライアント ID を作成する必要があります。クライアント ID は、Google の OAuth サーバーで個々のアプリを識別するために使用します。アプリが複数のプラットフォームで実行される場合は、プラットフォームごとに個別のクライアント ID を作成する必要があります。
Google Cloud コンソールで、メニュー > [API とサービス] > [認証情報] に移動します。
[認証情報を作成] > [OAuth クライアント ID] をクリックします。
[アプリケーションの種類] > [デスクトップ アプリ] をクリックします。
[名前] フィールドに、認証情報の名前を入力します。この名前は Google Cloud コンソールにのみ表示されます。
[作成] をクリックします。[OAuth クライアントの作成] 画面に、新しいクライアント ID とクライアント シークレットが表示されます。
[OK] をクリックします。新しく作成された認証情報が [OAuth 2.0 クライアント ID] の下に表示されます。
ダウンロード ボタンをクリックして JSON ファイルを保存します。このファイルは
client_secret_<identifier>.json
として保存され、名前をclient_secret.json
に変更して作業ディレクトリに移動します。
アプリケーションのデフォルト認証情報を設定する
client_secret.json
ファイルを使用可能な認証情報に変換するには、gcloud auth application-default login
コマンドの --client-id-file
引数に場所を渡します。
gcloud auth application-default login \
--client-id-file=client_secret.json \
--scopes='https://www.googleapis.com/auth/cloud-platform,https://www.googleapis.com/auth/generative-language.retriever'
このチュートリアルの簡略化されたプロジェクト設定では、「このアプリは Google によって確認されていません」ダイアログがトリガーされます。これは正常な動作です。[続行] を選択します。
これにより、生成されたトークンが既知の場所に配置されるため、gcloud
またはクライアント ライブラリからアクセスできるようになります。
gcloud auth application-default login
--no-browser
--client-id-file=client_secret.json
--scopes='https://www.googleapis.com/auth/cloud-platform,https://www.googleapis.com/auth/generative-language.retriever'
アプリケーションのデフォルト認証情報(ACD)を設定すると、ほとんどの言語のクライアント ライブラリで見つけやすくなります。
Curl
これが機能していることをテストする最も簡単な方法は、curl を使用して REST API にアクセスすることです。
access_token=$(gcloud auth application-default print-access-token)
project_id=<MY PROJECT ID>
curl -X GET https://generativelanguage.googleapis.com/v1/models \
-H 'Content-Type: application/json' \
-H "Authorization: Bearer ${access_token}" \
-H "x-goog-user-project: ${project_id}" | grep '"name"'
Python
Python では、クライアント ライブラリが自動的にこれらを検出します。
pip install google-generativeai
テストの最小スクリプトは次のようになります。
import google.generativeai as genai
print('Available base models:', [m.name for m in genai.list_models()])
次のステップ
うまくいく場合は、テキストデータのセマンティック取得を試してみましょう。
認証情報を自分で管理する [Python]
多くの場合、クライアント ID(client_secret.json
)からアクセス トークンを作成する gcloud
コマンドは利用できません。Google は、アプリ内でこのプロセスを管理できるように、多くの言語のライブラリを提供しています。このセクションでは、Python でのプロセスについて説明します。他の言語の同等の例が Drive API ドキュメントにあります。
1. 必要なライブラリのインストール
Python 用の Google クライアント ライブラリと Gemini クライアント ライブラリをインストールします。
pip install --upgrade -q google-api-python-client google-auth-httplib2 google-auth-oauthlib
pip install google-generativeai
2. 認証情報マネージャーを作成する
認証画面でクリックが必要になる回数を最小限に抑えるには、作業ディレクトリに load_creds.py
というファイルを作成して、後で再利用したり、期限切れになったときに更新したりできる token.json
ファイルをキャッシュに保存します。
まず次のコードを実行して、client_secret.json
ファイルを genai.configure
で使用できるトークンに変換します。
import os.path
from google.auth.transport.requests import Request
from google.oauth2.credentials import Credentials
from google_auth_oauthlib.flow import InstalledAppFlow
SCOPES = ['https://www.googleapis.com/auth/generative-language.retriever']
def load_creds():
"""Converts `client_secret.json` to a credential object.
This function caches the generated tokens to minimize the use of the
consent screen.
"""
creds = None
# The file token.json stores the user's access and refresh tokens, and is
# created automatically when the authorization flow completes for the first
# time.
if os.path.exists('token.json'):
creds = Credentials.from_authorized_user_file('token.json', SCOPES)
# If there are no (valid) credentials available, let the user log in.
if not creds or not creds.valid:
if creds and creds.expired and creds.refresh_token:
creds.refresh(Request())
else:
flow = InstalledAppFlow.from_client_secrets_file(
'client_secret.json', SCOPES)
creds = flow.run_local_server(port=0)
# Save the credentials for the next run
with open('token.json', 'w') as token:
token.write(creds.to_json())
return creds
3. プログラムを作成する
script.py
を作成します。
import pprint
import google.generativeai as genai
from load_creds import load_creds
creds = load_creds()
genai.configure(credentials=creds)
print()
print('Available base models:', [m.name for m in genai.list_models()])
4. プログラムを実行する
作業ディレクトリでサンプルを実行します。
python script.py
スクリプトを初めて実行すると、ブラウザ ウィンドウが開き、アクセスの承認を求めるプロンプトが表示されます。
Google アカウントにまだログインしていない場合は、ログインするよう求められます。複数のアカウントにログインしている場合は、プロジェクトを構成するときに「テスト アカウント」に設定したアカウントを選択してください。
認可情報はファイル システムに保存されるため、サンプルコードを次回実行するときに、認可を求められません。
認証を設定できました。