Cách dễ nhất để xác thực với Gemini API là định cấu hình khoá API, như mô tả trong phần Hướng dẫn nhanh về Gemini API. Nếu cần kiểm soát quyền truy cập chặt chẽ hơn, bạn có thể sử dụng OAuth. Hướng dẫn này sẽ giúp bạn thiết lập quy trình xác thực bằng OAuth.
Hướng dẫn này sử dụng một 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ề xác thực và uỷ quyền trước khi chọn thông tin đăng nhập 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 application-default-credentials
- 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 hướng dẫn nhanh này, trước tiên, bạn cần thiết lập dự án trên đám mây.
1. Bật API
Trước khi sử dụng API của Google, bạn cần bật các API đó trong một dự án Google Cloud.
Trong Google Cloud Console, hãy bật Google Generative Language API.
2. Định cấu hình màn hình xin phép bằng OAuth
Tiếp theo, hãy định cấu hình màn hình đồng ý OAuth của dự án và thêm chính bạn làm người dùng kiểm thử. Nếu bạn đã hoàn tất bước này cho dự án trên Google Cloud, hãy chuyển sang phần tiếp theo.
Trong Google Cloud Console, hãy chuyển đến Trình đơn > Google Auth platform > Tổng quan.
Hoàn tất biểu mẫu cấu hình dự án và đặt loại người dùng thành Bên ngoài trong mục Đối tượng.
Hoàn tất phần còn lại của biểu mẫu, chấp nhận các điều khoản trong Chính sách dữ liệu người dùng, rồi nhấp vào Tạo.
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. Trong tương lai, khi tạo một ứng dụng để sử dụng bên ngoài tổ chức Google Workspace, bạn phải thêm và xác minh các phạm vi uỷ quyền mà ứng dụng của bạn yêu cầu.
Thêm người dùng kiểm thử:
- Chuyển đến Audience page củaGoogle Auth platform.
- Trong phần Người dùng kiểm thử, hãy nhấp vào Thêm người dùng.
- Nhập địa chỉ email của bạn và mọi người dùng kiểm thử được uỷ quyền khác, sau đó nhấp vào Lưu.
3. Uỷ quyền thông tin đăng nhập cho một ứng dụng máy tính
Để xác thực với tư cách là người dùng cuối và truy cập vào dữ liệu người dùng trong ứng dụng của bạn, bạn cần tạo một hoặc nhiều Mã ứng dụng OAuth 2.0. Mã ứng dụng khách được dùng để xác định một ứng dụng duy nhất 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ã nhận dạng ứng dụng riêng cho mỗi nền tảng.
Trong Google Cloud Console, hãy chuyển đến Trình đơn > Google Auth platform > Clients (Ứng dụng).
Nhấp vào Tạo ứng dụng.
Nhấp vào Loại ứng dụng > Ứng dụng dành cho máy tính.
Trong trường Name (Tên), hãy nhập tên cho thông tin đăng nhập. Tên này chỉ xuất hiện trong bảng điều khiển Google Cloud.
Nhấp vào Tạo. Màn hình Ứng dụng OAuth đã tạo sẽ xuất hiện, cho biết Mã ứng dụng và Khoá bí mật của ứng dụng mới.
Nhấp vào OK. Thông tin đăng nhập mới tạo sẽ xuất hiện trong phần Mã ứng dụng OAuth 2.0.
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
, sau đó đổi tên thànhclient_secret.json
và di chuyển vào thư mục 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 đăng nhập có thể sử dụng, hãy truyền vị trí của tệp này 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.retriever'
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". Đây là điều 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í đã biết để gcloud
hoặc các thư viện ứng dụng có thể truy cập vào mã thông báo đó.
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.retriever'
Sau khi bạn đặt Thông tin đăng nhập mặc định của ứng dụng (ADC), các thư viện ứng dụng bằng hầu hết các ngôn ngữ sẽ cần rất ít hoặc không cần sự trợ giúp để tìm thấy chúng.
Curl
Cách nhanh nhất để kiểm tra xem phương thức này có hoạt động hay không là sử dụng phương thức này để truy cập vào REST API bằng curl:
access_token=$(gcloud auth application-default print-access-token) project_id=<MY PROJECT ID>
curl -X GET https://generativelanguage.googleapis.com/v1/models \ -H 'Content-Type: application/json' \ -H "Authorization: Bearer ${access_token}" \ -H "x-goog-user-project: ${project_id}" | grep '"name"'
Python
Trong Python, các thư viện ứng dụng sẽ tự động tìm thấy các tệp 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()])
Các bước tiếp theo
Nếu cách này hiệu quả, bạn đã sẵn sàng thử Tính năng truy xuất ngữ nghĩa trên dữ liệu văn bản.
Tự quản lý thông tin xác thực [Python]
Trong nhiều trường hợp, bạn sẽ không có lệnh gcloud
để tạo mã truy cập từ Mã ứng dụng (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 bằng Python. Bạn có thể xem các ví dụ tương đương về loại quy trình này cho các ngôn ngữ khác trong tài liệu về Drive API
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 Gemini.
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
Để giảm thiểu số lần bạn phải nhấp qua các màn hình uỷ quyền, hãy tạo một tệp có tên là load_creds.py
trong thư mục làm việc để lưu vào bộ nhớ đệm một tệp token.json
mà tệp này có thể sử dụng lại sau hoặc làm mới nếu hết hạn.
Bắt đầu bằng đoạn mã sau để chuyển đổi tệp client_secret.json
thành một mã thông báo có thể dùng với 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.retriever']
def load_creds():
"""Converts `client_secret.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(
'client_secret.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
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_models()])
4. Chạy chương trình
Trong thư mục làm việc, hãy chạy mẫu:
python script.py
Trong lần đầu tiên bạn chạy tập lệnh, tập lệnh này sẽ mở một cửa sổ trình duyệt và nhắc bạn uỷ quyền truy cập.
Nếu chưa đăng nhập vào Tài khoản Google, 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 thử nghiệm" khi định cấu hình dự án.
Thông tin uỷ quyền được lưu trữ trong hệ thống tệp, vì vậy, vào lần tiếp theo chạy mã mẫu, bạn sẽ không được nhắc uỷ quyền.
Bạn đã thiết lập thành công quy trình xác thực.