אימות באמצעות מדריך למתחילים של OAuth

PaLM API מאפשר לכוונן מודלים לפי הנתונים שלכם. מכיוון שאלה הנתונים שלך והמודלים המכווננים שלך, יש צורך באמצעי בקרה מחמירים יותר לבקרה מאשר ב-API-Keys.

במדריך למתחילים נעשה שימוש בגישת אימות פשוטה שמתאימה לסביבת בדיקה. בסביבת ייצור, כדאי לקרוא על אימות והרשאה לפני בוחרים את פרטי הכניסה שמתאימים לאפליקציה.

מטרות

  • הגדרה של פרוטוקול OAuth בפרויקט בענן
  • הגדרת פרטי כניסה שמוגדרים כברירת מחדל לאפליקציה
  • ניהול פרטי הכניסה בתוכנית במקום להשתמש ב-gcloud auth

דרישות מוקדמות

כדי להפעיל את המדריך למתחילים, צריך:

הגדרת הפרויקט בענן

כדי להשלים את המדריך למתחילים, צריך להגדיר את הפרויקט בענן.

1. מפעילים את ה-API

לפני שמשתמשים ב-Google APIs, צריך להפעיל אותם בפרויקט ב-Google Cloud.

  • במסוף Google Cloud, מפעילים את Google Generative Language API.

    הפעלת ה-API

בשלב הבא, צריך להגדיר את מסך ההסכמה ל-OAuth של הפרויקט ולהוסיף את עצמכם כמשתמשי בדיקה. אם כבר השלמתם את השלב הזה בפרויקט Cloud, תוכלו לדלג לקטע הבא.

  1. במסוף Google Cloud, נכנסים לתפריט > APIs & Services > מסך ההסכמה ל-OAuth.

    מעבר למסך ההסכמה של OAuth

  2. בוחרים בסוג המשתמש חיצוני לאפליקציה ולוחצים על יצירה.

  3. ממלאים את טופס ההרשמה לאפליקציה (אפשר להשאיר את רוב השדות ריקים) ולוחצים על Save and Continue (שמירה והמשך).

  4. בינתיים, אפשר לדלג על הוספת היקפים וללחוץ על שמירה והמשך. בעתיד, כשתיצרו אפליקציה לשימוש מחוץ לארגון שלכם ב-Google Workspace, תצטרכו להוסיף ולאמת את היקפי ההרשאות שנדרשים לאפליקציה.

  5. הוספת משתמשים לבדיקה:

    1. בקטע משתמשים לבדיקה, לוחצים על הוספת משתמשים.
    2. מזינים את כתובת האימייל שלכם ואת כל המשתמשים המורשים לבדיקה, ואז לוחצים על Save and Continue (שמירה והמשך).
  6. בודקים את סיכום הרישום של האפליקציה. כדי לבצע שינויים, לוחצים על עריכה. אם נראה שהרישום של האפליקציה תקין, לוחצים על Back to Dashboard.

3. אישור פרטי כניסה לאפליקציה למחשב

כדי לבצע אימות כמשתמשי קצה ולגשת לנתוני המשתמשים באפליקציה שלכם, עליכם ליצור מזהה לקוח אחד או יותר של OAuth 2.0. מזהה הלקוח משמש לזיהוי אפליקציה יחידה לשרתי OAuth של Google. אם האפליקציה שלכם פועלת בכמה פלטפורמות, עליכם ליצור מזהה לקוח נפרד לכל פלטפורמה.

  1. במסוף Google Cloud, נכנסים לתפריט > APIs & Services > Credentials.

    לדף Credentials

  2. לוחצים על Create Credentials (יצירת פרטי כניסה) > OAuth client ID (מזהה לקוח OAuth).

  3. לוחצים על סוג האפליקציה > אפליקציה למחשב.

  4. בשדה שם, מקלידים שם לפרטי הכניסה. השם הזה מוצג רק במסוף Google Cloud.

  5. לוחצים על Create. מופיע המסך של יצירת לקוח 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]

במקרים רבים לא תהיה לכם אפשרות ליצור את אסימון הגישה מ-Client-ID (client_secret.json) באמצעות הפקודה gcloud. 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. פרטי ההרשאות מאוחסנים במערכת הקבצים, כך שבפעם הבאה שתריצו את הקוד לדוגמה, לא תתבקשו להעניק הרשאה.

הגדרת האימות הושלמה בהצלחה.