PaLM API を使用すると、独自のデータでモデルをチューニングできます。お客様のデータとチューニング済みモデルであるため、API キーよりも厳格なアクセス制御が必要です。
このクイックスタートでは、テスト環境に適した簡素な認証方法を使用します。本番環境の場合は、アプリに適したアクセス認証情報を選択する前に、認証と承認について学習してください。
目標
- OAuth 用の Cloud プロジェクトを設定する
- application-default-credentials を設定する
gcloud auth
を使用する代わりに、プログラムで認証情報を管理する
前提条件
このクイックスタートを実行するには、以下のものが必要です。
クラウド プロジェクトを設定する
このクイックスタートを完了するには、まずクラウド プロジェクトを設定する必要があります。
1. API を有効にする
Google API を使用するには、Google Cloud プロジェクトで API を有効にする必要があります。
Google Cloud コンソールで、Google Generative Language API を有効にします。
2. OAuth 同意画面を構成する
次に、プロジェクトの OAuth 同意画面を構成し、自分自身をテストユーザーとして追加します。Cloud プロジェクトでこの手順をすでに完了している場合は、次のセクションに進みます。
Google Cloud コンソールで、メニュー > [API とサービス] > [OAuth 同意画面] に移動します。
アプリのユーザータイプに [外部] を選択し、[作成] をクリックします。
アプリ登録フォームに入力します(ほとんどの項目は空白のままにできます)。[保存して続行] をクリックします。
スコープの追加はスキップして、[保存して次へ] をクリックします。今後、Google Workspace 組織の外部で使用するアプリを作成する場合は、アプリに必要な認可スコープを追加して確認する必要があります。
テストユーザーを追加します。
- [テストユーザー] で [ユーザーを追加] をクリックします。
- メールアドレスと他の承認済みテストユーザーを入力し、[保存して次へ] をクリックします。
アプリ登録の概要を確認します。変更するには、[編集] をクリックします。アプリの登録に問題がなければ、[ダッシュボードに戻る] をクリックします。
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.tuning'
このチュートリアルではプロジェクトの設定を簡素化しているため、[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.tuning'
アプリケーションのデフォルト認証情報(ADC)を設定すると、ほとんどの言語のクライアント ライブラリは、ADC を見つけるために最小限のサポートまたはサポートなしで済みます。
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/v1beta3/models \ -H 'Content-Type: application/json' \ -H "Authorization: Bearer ${access_token}" \ -H "x-goog-user-project: ${project_id}" | grep '"name"'
"name": "models/chat-bison-001",
"name": "models/text-bison-001",
"name": "models/embedding-gecko-001",
Python
Python では、クライアント ライブラリが自動的に見つけます。
pip install google-generativeai
これをテストする最小限のスクリプトは次のようになります。
import google.generativeai as genai
print('Available base models:', [m.name for m in genai.list_models()])
print('My tuned models:', [m.name for m in genai.list_tuned_models()])
想定される出力は次のとおりです。
Available base models: ['models/chat-bison-001', 'models/text-bison-001', 'models/embedding-gecko-001']
My tuned models: []
Node.js
これらの認証情報を Node.js クライアント ライブラリで使用するには、GOOGLE_APPLICATION_CREDENTIALS
環境変数を設定します。
export GOOGLE_APPLICATION_CREDENTIALS='<PATH_TO>/application_default_credentials.json'
クライアント ライブラリをインストールする
npm install @google-ai/generativelanguage
最小限のスクリプトを作成します。
const { ModelServiceClient } =
require("@google-ai/generativelanguage").v1beta3;
const MODEL_NAME = "models/text-bison-001";
const client = new ModelServiceClient({});
client
.listModels({})
.then((result) => {
result = result[0]
for (let i = 0; i < result.length; i++) {
console.log(result[i].name);
}
});
出力は次のようになります。
models/chat-bison-001
models/text-bison-001
models/embedding-gecko-001
次のステップ
問題がなければ、自分でモデルをチューニングできます。チューニングを使ってみる
認証情報を自分で管理する [Python]
多くの場合、クライアント ID(client_secret.json
)からアクセス トークンを作成するための gcloud
コマンドは使用できません。Google は、アプリ内でそのプロセスを管理できるように、さまざまな言語のライブラリを提供しています。このセクションでは、Python でのプロセスを示します。他の言語でこの種の手順と同等のサンプルについては、Drive API のドキュメントをご覧ください。
1. 必要なライブラリのインストール
Python 用 Google クライアント ライブラリと PaLM クライアント ライブラリをインストールします。
pip install --upgrade -q google-api-python-client google-auth-httplib2 google-auth-oauthlib
pip install google-generativeai
2. 認証情報マネージャーを作成する
作業ディレクトリに load_creds.py
という名前のファイルを作成します。まず、次のコードを使用して 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.tuning']
def load_creds():
"""Converts `oauth-client-id.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(
'oauth-client-id.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
承認画面を何度もクリックしなくて済むように、後で再利用できる token.json
ファイルをキャッシュに保存するか、期限切れの場合は更新します。
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_tuned_models()])
print('My tuned models:', [m.name for m in genai.list_tuned_models()])
4. プログラムを実行する
作業ディレクトリでサンプルを実行します。
python script.py
スクリプトを初めて実行すると、ブラウザ ウィンドウが開き、アクセスを承認するよう求められます。
Google アカウントにログインしていない場合は、ログインを求められます。複数のアカウントにログインしている場合は、プロジェクトの構成時に「テスト アカウント」として設定したアカウントを選択してください。
認証情報はファイル システムに保存されるため、サンプルコードを次回実行するときに認証を求められることはありません。
認証が正常に設定されました。