Xác thực bằng tính năng bắt đầu nhanh OAuth

API PaLM cho phép bạn điều chỉnh các mô hình trên dữ liệu của riêng mình. Vì đó là dữ liệu của bạncác mô hình đã được điều chỉnh, nên ứng dụng này cần kiểm soát quyền truy cập nghiêm ngặt hơn so với Khoá API.

Hướng dẫn bắt đầu nhanh này sử dụng phương pháp xác thực đơn giản, phù hợp với môi trường kiểm thử. Đối với môi trường phát hành chính thức, hãy tìm hiểu về cách xác thực và uỷ quyền trước khi chọn thông tin xác thực truy cập phù hợp với ứng dụng của bạn.

Mục tiêu

  • Thiết lập dự án trên đám mây cho OAuth
  • Thiết lập thông tin xác thực mặc định của ứng dụng
  • Quản lý thông tin đăng nhập trong chương trình của bạn thay vì sử dụng gcloud auth

Điều kiện tiên quyết

Để chạy hướng dẫn bắt đầu nhanh này, bạn cần:

Thiết lập dự án trên đám mây

Để hoàn tất quá trình bắt đầu nhanh này, trước tiên bạn cần thiết lập dự án trên đám mây của mình.

1. Bật API

Trước khi sử dụng các API Google, bạn cần bật các API đó trong một dự án trên Google Cloud.

  • Trong bảng điều khiển Google Cloud, hãy bật Google Generative Language API (API Ngôn ngữ tạo sinh của Google).

    Bật API

Tiếp theo, hãy định cấu hình màn hình xin phép bằng OAuth của dự án và tự thêm chính bạn làm người dùng thử nghiệm. Nếu bạn đã hoàn tất bước này cho dự án Cloud của mình, hãy chuyển sang phần tiếp theo.

  1. Trong bảng điều khiển Google Cloud, hãy chuyển đến Trình đơn > API và dịch vụ > màn hình lấy sự đồng ý của OAuth.

    Chuyển đến màn hình xin phép bằng OAuth

  2. Chọn loại người dùng là External (Bên ngoài) cho ứng dụng của bạn, sau đó nhấp vào Create (Tạo).

  3. Hoàn tất biểu mẫu đăng ký ứng dụng (bạn có thể để trống hầu hết các trường), sau đó nhấp vào Save and Continue (Lưu và tiếp tục).

  4. Hiện tại, bạn có thể bỏ qua bước thêm phạm vi và nhấp vào Lưu và tiếp tục. Sau này, khi tạo một ứng dụng để dùng bên ngoài tổ chức Google Workspace, bạn phải thêm và xác minh phạm vi uỷ quyền mà ứng dụng yêu cầu.

  5. Thêm người dùng thử nghiệm:

    1. Trong phần Người dùng thử nghiệm, hãy nhấp vào Thêm người dùng.
    2. Nhập địa chỉ email của bạn và bất kỳ người dùng thử nghiệm được ủy quyền nào khác, sau đó nhấp vào Save and Continue (Lưu và tiếp tục).
  6. Xem lại thông tin tóm tắt về quá trình đăng ký ứng dụng của bạn. Để thực hiện thay đổi, hãy nhấp vào Chỉnh sửa. Nếu quá trình đăng ký ứng dụng vẫn ổn, hãy nhấp vào Quay lại Trang tổng quan.

3. Uỷ quyền thông tin đăng nhập cho một ứng dụng dành cho máy tính

Để xác thực với tư cách người dùng cuối và truy cập vào dữ liệu người dùng trong ứng dụng, bạn cần tạo một hoặc nhiều Mã ứng dụng khách OAuth 2.0. Mã ứng dụng khách được dùng để xác định một ứng dụng cho các máy chủ OAuth của Google. Nếu ứng dụng của bạn chạy trên nhiều nền tảng, bạn phải tạo một mã ứng dụng khách riêng cho từng nền tảng.

  1. Trong bảng điều khiển Google Cloud, hãy chuyển đến Trình đơn > API và dịch vụ > Thông tin xác thực.

    Chuyển đến phần Thông tin xác thực

  2. Nhấp vào Tạo thông tin xác thực > Mã ứng dụng khách OAuth.

  3. Nhấp vào Application type (Loại ứng dụng) > Desktop app (Ứng dụng cho máy tính).

  4. Trong trường Tên, hãy nhập tên cho thông tin xác thực. Tên này chỉ hiển thị trong bảng điều khiển Google Cloud.

  5. Nhấp vào Tạo. Màn hình ứng dụng OAuth do ứng dụng tạo sẽ xuất hiện, hiển thị Mã ứng dụng khách và Mật khẩu ứng dụng khách mới của bạn.

  6. Nhấp vào OK. Thông tin đăng nhập mới tạo sẽ xuất hiện trong Mã ứng dụng khách OAuth 2.0.

  7. Nhấp vào nút tải xuống để lưu tệp JSON. Tệp này sẽ được lưu dưới dạng client_secret_<identifier>.json và đổi tên thành client_secret.json, đồng thời di chuyển tệp này vào thư mục đang làm việc của bạn.

Thiết lập thông tin xác thực mặc định của ứng dụng

Để chuyển đổi tệp client_secret.json thành thông tin xác thực có thể sử dụng, hãy truyền vị trí của tệp đó vào đối số --client-id-file của lệnh 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'

Quy trình thiết lập dự án đơn giản trong hướng dẫn này sẽ kích hoạt hộp thoại "Google chưa xác minh ứng dụng này". Điều này là bình thường, hãy chọn "tiếp tục".

Thao tác này sẽ đặt mã thông báo kết quả ở một vị trí phổ biến để gcloud hoặc thư viện ứng dụng có thể truy cập mã này.

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'

Sau khi bạn đã đặt thông tin xác thực mặc định của ứng dụng (ACD), thư viện ứng dụng trong hầu hết các ngôn ngữ chỉ cần ở mức tối thiểu hoặc không cần giúp tìm các thư viện đó.

Uốn cong

Cách nhanh nhất để kiểm tra xem tính năng này có hoạt động hay không là sử dụng nó để truy cập vào API còn lại bằng cách sử dụng 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

Trong Python, các thư viện ứng dụng sẽ tự động tìm các thư viện này:

pip install google-generativeai

Một tập lệnh tối thiểu để kiểm thử có thể là:

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()])

Kết quả đầu ra dự kiến là:

Available base models: ['models/chat-bison-001', 'models/text-bison-001', 'models/embedding-gecko-001']
My tuned models: []

Node.js

Để sử dụng các thông tin đăng nhập này với thư viện ứng dụng Node.js, hãy đặt biến môi trường GOOGLE_APPLICATION_CREDENTIALS.

export GOOGLE_APPLICATION_CREDENTIALS='<PATH_TO>/application_default_credentials.json'

Cài đặt thư viện ứng dụng:

npm install @google-ai/generativelanguage

Tạo một tập lệnh tối thiểu:

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);
    }
  });

Kết quả đầu ra của lệnh này sẽ là:

models/chat-bison-001
models/text-bison-001
models/embedding-gecko-001

Các bước tiếp theo

Nếu cách đó hiệu quả, bạn đã sẵn sàng thử tự điều chỉnh mô hình. Hãy thử Bắt đầu sử dụng tính năng điều chỉnh.

Tự quản lý thông tin đăng nhập [Python]

Trong nhiều trường hợp, bạn sẽ không có sẵn lệnh gcloud để tạo mã truy cập từ Client-ID (client_secret.json). Google cung cấp các thư viện bằng nhiều ngôn ngữ để cho phép bạn quản lý quy trình đó trong ứng dụng của mình. Phần này minh hoạ quy trình này trong python. Đối với các ngôn ngữ khác, bạn có thể xem các ví dụ tương đương về quy trình này trong tài liệu về API Drive

1. Cài đặt các thư viện cần thiết

Cài đặt thư viện ứng dụng Google cho Python và thư viện ứng dụng PaLM.

pip install --upgrade -q google-api-python-client google-auth-httplib2 google-auth-oauthlib

pip install google-generativeai

2. Viết trình quản lý thông tin xác thực

Trong thư mục đang làm việc, hãy tạo một tệp có tên load_creds.py. Bắt đầu bằng mã sau để chuyển đổi client_secret.json thành mã thông báo có thể sử dụng được bằng 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

Để giảm thiểu số lần bạn phải nhấp vào màn hình uỷ quyền nếu lưu tệp token.json vào bộ nhớ đệm để có thể sử dụng lại sau này, hoặc làm mới nếu tệp đã hết hạn.

3. Viết chương trình

Bây giờ, hãy tạo 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. Chạy chương trình

Trong thư mục đang hoạt động của bạn, hãy chạy mẫu:

python script.py

Lần đầu tiên bạn chạy tập lệnh, tập lệnh sẽ mở ra một cửa sổ trình duyệt và nhắc bạn cấp quyền truy cập.

  1. Nếu chưa đăng nhập vào Tài khoản Google thì bạn sẽ được nhắc đăng nhập. Nếu bạn đăng nhập vào nhiều tài khoản, hãy nhớ chọn tài khoản mà bạn đặt làm "Tài khoản kiểm thử" khi định cấu hình dự án.

  2. Thông tin uỷ quyền được lưu trữ trong hệ thống tệp, vì vậy, lần chạy mã mẫu tiếp theo, bạn sẽ không thấy lời nhắc uỷ quyền.

Bạn đã thiết lập thành công phương thức xác thực.