PaLM API を使用すると、独自のデータでモデルをチューニングできます。データはユーザーのデータと調整されたモデルであるため、API キーよりも厳密なアクセス制御が必要です。
このクイックスタートでは、テスト環境に適した簡素化された認証方法を使用します。本番環境では、アプリに適したアクセス認証情報を選択する前に、認証と認可についてご確認ください。
目標
- OAuth 用にクラウド プロジェクトを設定する
- 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 同意画面] に移動します。
アプリのユーザータイプに [外部] を選択し、[作成] をクリックします。
アプリ登録フォームに入力(ほとんどのフィールドは空白のままにできます)を行い、[保存して次へ] をクリックします。
現時点では、スコープの追加をスキップして、[保存して次へ] をクリックします。今後、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.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'
アプリケーションのデフォルト認証情報(ACD)を設定すると、ほとんどの言語のクライアント ライブラリで必要な認証情報は最小限に抑えられるか、何も起こりません。
Curl
これが機能していることをテストする最も簡単な方法は、curl で残りの 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 アカウントにまだログインしていない場合は、ログインするよう求められます。複数のアカウントにログインしている場合は、プロジェクトを構成する際に「テスト アカウント」として設定しているアカウントを必ず選択してください。
認可情報はファイル システムに保存されるため、サンプルコードを次回実行したときに承認を求められません。
これで認証の設定が完了しました。