การตรวจสอบสิทธิ์ด้วยการเริ่มต้นใช้งาน OAuth อย่างรวดเร็ว

PaLM API ช่วยให้คุณปรับแต่งโมเดลโดยใช้ข้อมูลของคุณเองได้ เนื่องจากเป็นข้อมูลของคุณและโมเดลที่ปรับแต่ง จึงต้องมีการควบคุมการเข้าถึงที่เข้มงวดกว่าคีย์ API

คู่มือเริ่มต้นฉบับย่อนี้ใช้แนวทางการตรวจสอบสิทธิ์แบบง่ายซึ่งเหมาะกับสภาพแวดล้อมการทดสอบ สําหรับสภาพแวดล้อมที่ใช้งานจริง โปรดดูข้อมูลเกี่ยวกับการตรวจสอบสิทธิ์และการให้สิทธิ์ก่อนเลือกข้อมูลเข้าสู่ระบบการเข้าถึงที่เหมาะสมสําหรับแอป

วัตถุประสงค์

  • ตั้งค่าโปรเจ็กต์ที่อยู่ในระบบคลาวด์สำหรับ OAuth
  • ตั้งค่า application-default-credentials
  • จัดการข้อมูลเข้าสู่ระบบในโปรแกรมแทนการใช้ gcloud auth

ข้อกำหนดเบื้องต้น

หากต้องการเรียกใช้การเริ่มต้นใช้งานอย่างรวดเร็วนี้ คุณต้องมีสิ่งต่อไปนี้

ตั้งค่าโปรเจ็กต์ที่อยู่ในระบบคลาวด์

หากต้องการเริ่มต้นใช้งานอย่างรวดเร็วนี้ ให้ตั้งค่าโปรเจ็กต์ที่อยู่ในระบบคลาวด์ก่อน

1. เปิดใช้ API

คุณต้องเปิดใช้ API ของ Google ในโปรเจ็กต์ Google Cloud ก่อนจึงจะใช้ได้

  • เปิดใช้ Generative Language API ของ Google ในคอนโซล Google Cloud

    เปิดใช้ API

ถัดไป ให้กําหนดค่าหน้าจอขอความยินยอม OAuth ของโปรเจ็กต์และเพิ่มตัวคุณเองเป็นผู้ใช้ทดสอบ หากคุณทำขั้นตอนนี้ในโปรเจ็กต์ระบบคลาวด์เสร็จแล้ว ให้ข้ามไปที่ส่วนถัดไป

  1. ในคอนโซล Google Cloud ให้ไปที่เมนู > API และบริการ > OAuth หน้าจอขอความยินยอม

    ไปที่หน้าจอขอความยินยอม OAuth

  2. เลือกประเภทผู้ใช้เป็นภายนอกสําหรับแอป แล้วคลิกสร้าง

  3. กรอกแบบฟอร์มการลงทะเบียนแอปให้เสร็จสมบูรณ์ (คุณสามารถปล่อยช่องส่วนใหญ่ว่างไว้ได้) แล้วคลิกบันทึกและดำเนินการต่อ

  4. ในระหว่างนี้ คุณสามารถข้ามการเพิ่มขอบเขตและคลิกบันทึกและดําเนินการต่อ ในอนาคต เมื่อคุณสร้างแอปเพื่อใช้งานนอกองค์กร Google Workspace คุณต้องเพิ่มและยืนยันขอบเขตการให้สิทธิ์ที่จําเป็นสําหรับแอป

  5. วิธีเพิ่มผู้ใช้ทดสอบ

    1. ในส่วนผู้ใช้ทดสอบ ให้คลิกเพิ่มผู้ใช้
    2. ป้อนอีเมลของคุณและผู้ใช้ทดสอบที่ได้รับอนุญาตคนอื่นๆ แล้วคลิกบันทึกและดำเนินการต่อ
  6. ตรวจสอบข้อมูลสรุปการลงทะเบียนแอป หากต้องการเปลี่ยนแปลง ให้คลิกแก้ไข หากการลงทะเบียนแอปดูเรียบร้อยดี ให้คลิกกลับไปที่แดชบอร์ด

3. ให้สิทธิ์ข้อมูลเข้าสู่ระบบสําหรับแอปพลิเคชันบนเดสก์ท็อป

หากต้องการตรวจสอบสิทธิ์ในฐานะผู้ใช้ปลายทางและเข้าถึงข้อมูลผู้ใช้ในแอป คุณจะต้องสร้างรหัสไคลเอ็นต์ OAuth 2.0 อย่างน้อย 1 รายการ รหัสไคลเอ็นต์ใช้เพื่อระบุแอปเดี่ยวไปยังเซิร์ฟเวอร์ OAuth ของ Google หากแอปทำงานบนหลายแพลตฟอร์ม คุณต้องสร้างรหัสไคลเอ็นต์แยกกันสำหรับแต่ละแพลตฟอร์ม

  1. ในคอนโซล Google Cloud ให้ไปที่เมนู > API และบริการ > ข้อมูลเข้าสู่ระบบ

    ไปที่ข้อมูลเข้าสู่ระบบ

  2. คลิกสร้างข้อมูลเข้าสู่ระบบ > รหัสไคลเอ็นต์ OAuth

  3. คลิกประเภทแอปพลิเคชัน > แอปเดสก์ท็อป

  4. พิมพ์ชื่อของข้อมูลเข้าสู่ระบบในช่องชื่อ ชื่อนี้จะแสดงในคอนโซล Google Cloud เท่านั้น

  5. คลิกสร้าง หน้าจอ "สร้างไคลเอ็นต์ OAuth แล้ว" จะปรากฏขึ้นพร้อมแสดงรหัสไคลเอ็นต์และรหัสลับไคลเอ็นต์ใหม่

  6. คลิกตกลง ข้อมูลเข้าสู่ระบบที่สร้างขึ้นใหม่จะปรากฏในส่วนรหัสไคลเอ็นต์ OAuth 2.0

  7. คลิกปุ่มดาวน์โหลดเพื่อบันทึกไฟล์ JSON ระบบจะบันทึกไฟล์เป็น client_secret_<identifier>.json แล้วเปลี่ยนชื่อเป็น client_secret.json แล้วย้ายไปยังไดเรกทอรีการทำงาน

ตั้งค่าข้อมูลเข้าสู่ระบบเริ่มต้นของแอปพลิเคชัน

หากต้องการแปลงไฟล์ client_secret.json ให้เป็นข้อมูลเข้าสู่ระบบที่ใช้งานได้ ให้ส่งตำแหน่งของไฟล์เป็นอาร์กิวเมนต์ --client-id-file ของคำสั่ง gcloud auth application-default login

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) แล้ว ไลบรารีไคลเอ็นต์ในภาษาส่วนใหญ่จะค้นหาข้อมูลเข้าสู่ระบบดังกล่าวได้โดยไม่ต้องใช้ความช่วยเหลือ

ม้วน

วิธีที่รวดเร็วที่สุดในการทดสอบว่าการดำเนินการนี้ใช้งานได้คือการใช้เพื่อเข้าถึง REST API โดยใช้ curl

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 เพื่อสร้างโทเค็นการเข้าถึงจากรหัสไคลเอ็นต์ (client_secret.json) Google มีไลบรารีหลายภาษาให้คุณจัดการกระบวนการดังกล่าวภายในแอป ส่วนนี้จะแสดงกระบวนการใน Python ตัวอย่างที่เทียบเท่าของขั้นตอนประเภทนี้สำหรับภาษาอื่นๆ มีอยู่ในเอกสารประกอบของ Drive API

1. ติดตั้งไลบรารีที่จําเป็น

ติดตั้งไลบรารีของไคลเอ็นต์ Google สําหรับ 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. ระบบจะจัดเก็บข้อมูลการให้สิทธิ์ไว้ในระบบไฟล์ ดังนั้นในครั้งถัดไปที่คุณเรียกใช้โค้ดตัวอย่าง ระบบจะไม่แจ้งให้ขอสิทธิ์

คุณตั้งค่าการตรวจสอบสิทธิ์เรียบร้อยแล้ว