Gemini API の認証を行う最も簡単な方法は、Gemini API のクイックスタートで説明されているように API キーを構成することです。より厳格なアクセス制御が必要な場合は、代わりに OAuth を使用できます。このガイドでは、OAuth を使用した認証の設定について説明します。
このガイドでは、テスト環境に適した簡素な認証方法を使用します。本番環境の場合は、アプリに適したアクセス認証情報を選択する前に、認証と認可について学習してください。
目標
- 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 コンソールで、メニュー > > [概要] に移動します。
プロジェクト構成フォームに入力し、[オーディエンス] セクションでユーザータイプを [外部] に設定します。
フォームの残りの部分に入力し、ユーザーデータ ポリシーの利用規約に同意して、[作成] をクリックします。
ここでは、スコープの追加をスキップして [保存して次へ] をクリックします。今後、Google Workspace 組織の外部で使用するアプリを作成する場合は、アプリに必要な認可スコープを追加して確認する必要があります。
テストユーザーを追加します。
3. デスクトップ アプリケーションの認証情報を承認する
エンドユーザーとして認証を行い、アプリ内でユーザーデータにアクセスするには、1 つ以上の OAuth 2.0 クライアント ID を作成する必要があります。クライアント ID は、Google の OAuth サーバーで個々のアプリを識別するために使用します。アプリが複数のプラットフォームで実行される場合は、プラットフォームごとに個別のクライアント ID を作成する必要があります。
Google Cloud コンソールで、メニュー > > クライアントに移動します。
[Create Client] をクリックします。
[アプリケーションの種類] > [デスクトップ アプリ] をクリックします。
[名前] フィールドに、認証情報の名前を入力します。この名前は 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)を設定すると、ほとんどの言語のクライアント ライブラリは、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 アカウントにログインしていない場合は、ログインを求められます。複数のアカウントにログインしている場合は、プロジェクトの構成時に「テスト アカウント」として設定したアカウントを選択してください。
認証情報はファイル システムに保存されるため、サンプルコードを次回実行するときに認証を求められることはありません。
認証が正常に設定されました。