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

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

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

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

  • ตั้งค่าโปรเจ็กต์ระบบคลาวด์สําหรับ OAuth
  • ตั้งค่าข้อมูลเข้าสู่ระบบเริ่มต้นของแอปพลิเคชัน
  • จัดการข้อมูลเข้าสู่ระบบในโปรแกรมแทนการใช้ gcloud auth

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

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

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

หากต้องการเริ่มต้นอย่างรวดเร็วนี้ คุณต้องสร้างโปรเจ็กต์ระบบคลาวด์ก่อน

1. เปิดใช้ API

ก่อนที่จะใช้ Google APIs คุณต้องเปิดใช้ API ดังกล่าวในโปรเจ็กต์ Google Cloud

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

    เปิดใช้ 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'

เมื่อตั้งค่าข้อมูลเข้าสู่ระบบเริ่มต้น (ACD) ของแอปพลิเคชันแล้ว ไลบรารีของไคลเอ็นต์ในภาษาส่วนใหญ่จำเป็นต้องใช้เครื่องมือช่วยในการค้นหาเพียงเล็กน้อยหรือไม่มีเลย

ทรงม้วน

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

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