透過 OAuth 進行驗證的快速入門導覽課程

PaLM API 可讓您根據自己的資料調整模型。由於這是您的資料經過調整的模型,因此存取控製程度要比 API 金鑰更嚴格。

本快速入門導覽課程使用適用於測試環境的簡化驗證方法。如果是實際工作環境,請先瞭解驗證和授權,再選擇適合應用程式的存取憑證

目標

  • 設定 OAuth 的雲端專案
  • 設定應用程式預設憑證
  • 不使用 gcloud auth 管理程式中的憑證

必要條件

如要執行本快速入門導覽課程,您需要:

設定 Cloud 專案

您必須先設定 Cloud 專案,才能完成這個快速入門導覽課程。

1. 啟用 API

您必須先在 Google Cloud 專案中啟用 Google API,才能使用這些 API。

  • 在 Google Cloud 控制台中,啟用 Google Generative Language API。

    啟用 API

接著設定專案的 OAuth 同意畫面,並將您新增為測試使用者。如果您已完成 Cloud 專案的這個步驟,請跳到下一節。

  1. 在 Google Cloud 控制台中,依序前往「選單」>「API 和服務」>「OAuth 同意畫面」

    前往 OAuth 同意畫面

  2. 為應用程式選取「外部」使用者類型,然後按一下「建立」

  3. 填寫應用程式註冊表單 (大部分欄位都可以留空),然後按一下「Save and Continue」(儲存並繼續)

  4. 現階段,您可以略過新增範圍的步驟,然後按一下「儲存並繼續」。日後,當您建立在 Google Workspace 機構外部使用的應用程式時,必須新增並驗證應用程式所需的授權範圍。

  5. 新增測試使用者:

    1. 在「測試使用者」下方,點選「新增使用者」
    2. 輸入您的電子郵件地址和任何其他授權的測試使用者,然後按一下「Save and Continue」(儲存並繼續)
  6. 查看應用程式註冊摘要。如要變更,請按一下「編輯」。如果應用程式註冊作業沒有問題,請按一下「Back to Dashboard」(返回資訊主頁)

3. 為桌面應用程式授權憑證

如要以使用者身分進行驗證並存取應用程式中的使用者資料,您必須建立一或多個 OAuth 2.0 用戶端 ID。用戶端 ID 可用於向 Google 的 OAuth 伺服器識別單一應用程式。如果應用程式在多個平台上執行,您必須為各個平台建立個別的用戶端 ID。

  1. 在 Google Cloud 控制台中,依序前往「Menu」(選單) >「APIs & Services」(API 和服務) >「Credentials」(憑證)

    前往「憑證」頁面

  2. 按一下「建立憑證」 >「OAuth 用戶端 ID」

  3. 依序按一下「應用程式類型」 >「電腦版應用程式」

  4. 在「Name」(名稱) 欄位中,輸入憑證名稱。這個名稱只會顯示在 Google Cloud 控制台中。

  5. 按一下「建立」,畫面上隨即會顯示已建立 OAuth 用戶端的畫面,其中顯示新的用戶端 ID 和用戶端密鑰。

  6. 按一下「OK」(確定)。新建立的憑證會顯示在「OAuth 2.0 Client IDs」下方。

  7. 點選下載按鈕即可儲存 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 尚未驗證這個應用程式」對話方塊。這是正常現象,請選擇「continue」

這會將產生的權杖置於廣為人知的位置,以便 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]

在多數情況下,您將無法使用 gcloud 指令透過用戶端 ID (client_secret.json) 建立存取權杖。Google 提供多種語言的程式庫,方便您在應用程式中管理該程序。本節將以 Python 說明相關程序。至於其他程式語言,請參閱 drive API 說明文件,瞭解這類程序的對應範例。

1. 安裝所需的程式庫

安裝 Python 和 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

首次執行指令碼時,指令碼會開啟瀏覽器視窗,並提示您授予存取權。

  1. 如果尚未登入 Google 帳戶,系統會提示您登入。如果您登入多個帳戶,請務必在設定專案時選取您設為「測試帳戶」的帳戶。

  2. 授權資訊會儲存在檔案系統中,因此在您下次執行程式碼範例時,系統不會提示您進行授權。

您已成功設定驗證。