Guida rapida all'autenticazione con OAuth

L'API PaLM consente di ottimizzare i modelli sui tuoi dati. Poiché si tratta dei tuoi dati e dei tuoi modelli ottimizzati, sono necessari controlli dell'accesso più rigidi rispetto alle chiavi API.

Questa guida rapida utilizza un approccio di autenticazione semplificato appropriato per un ambiente di test. Per un ambiente di produzione, scopri di più su autenticazione e autorizzazione prima di scegliere le credenziali di accesso appropriate per la tua app.

Obiettivi

  • Configurare il progetto cloud per OAuth
  • Configura le credenziali predefinite dell'applicazione
  • Gestisci le credenziali nel tuo programma anziché utilizzare gcloud auth

Prerequisiti

Per eseguire questa guida rapida, sono necessari:

Configura il progetto cloud

Per completare questa guida rapida, devi prima configurare il progetto cloud.

1. Abilita l'API

Prima di utilizzare le API di Google, devi attivarle in un progetto Google Cloud.

  • Nella console Google Cloud, abilita l'API Google Generative Language.

    Abilita l'API

Successivamente, configura la schermata per il consenso OAuth del progetto e aggiungiti come utente di test. Se hai già completato questo passaggio per il tuo progetto Cloud, vai alla sezione successiva.

  1. Nella console Google Cloud, vai a Menu > API e servizi > Schermata di consenso OAuth.

    Vai alla schermata per il consenso OAuth

  2. Seleziona il tipo di utente Esterno per la tua app, quindi fai clic su Crea.

  3. Compila il modulo di registrazione dell'app (la maggior parte dei campi può essere lasciato vuoto), poi fai clic su Salva e continua.

  4. Per il momento, puoi saltare l'aggiunta di ambiti e fare clic su Salva e continua. In futuro, quando creerai un'app da utilizzare al di fuori della tua organizzazione Google Workspace, dovrai aggiungere e verificare gli ambiti di autorizzazione richiesti dall'app.

  5. Aggiungi utenti di test:

    1. In Utenti di test, fai clic su Aggiungi utenti.
    2. Inserisci il tuo indirizzo email e tutti gli altri utenti di test autorizzati, quindi fai clic su Salva e continua.
  6. Rivedi il riepilogo della registrazione dell'app. Per apportare modifiche, fai clic su Modifica. Se la registrazione dell'app sembra corretta, fai clic su Torna alla dashboard.

3. Autorizzare le credenziali per un'applicazione desktop

Per eseguire l'autenticazione come utente finale e accedere ai dati utente nella tua app, devi creare uno o più ID client OAuth 2.0. L'ID client consente di identificare una singola app nei server OAuth di Google. Se l'app viene eseguita su più piattaforme, devi creare un ID client separato per ogni piattaforma.

  1. Nella console Google Cloud, vai a Menu > API e servizi > Credenziali.

    Vai a Credenziali

  2. Fai clic su Crea credenziali > ID client OAuth.

  3. Fai clic su Tipo di applicazione > App desktop.

  4. Nel campo Nome, digita un nome per la credenziale. Questo nome viene visualizzato solo nella console Google Cloud.

  5. Fai clic su Crea. Viene visualizzata la schermata relativa al client OAuth creato, che mostra il nuovo ID client e il nuovo client secret.

  6. Fai clic su Ok. La credenziale appena creata viene visualizzata in ID client OAuth 2.0.

  7. Fai clic sul pulsante di download per salvare il file JSON. Verrà salvato come client_secret_<identifier>.json, verrà rinominata client_secret.json e verrà spostata nella directory di lavoro.

Configura le credenziali predefinite dell'applicazione

Per convertire il file client_secret.json in credenziali utilizzabili, passa la sua posizione all'argomento --client-id-file del comando 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'

La configurazione semplificata del progetto in questo tutorial attiva una finestra di dialogo "Google non ha verificato questa app". È normale, scegli "continua".

Il token risultante viene memorizzato in una posizione nota in modo che sia accessibile da gcloud o dalle librerie client.

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'

Una volta impostate le credenziali predefinite dell'applicazione (ACD), le librerie client nella maggior parte dei linguaggi richiedono un aiuto minimo o nullo per trovarle.

Arricciatura

Il modo più rapido per verificare che funzioni è utilizzarlo per accedere all'API rimanente utilizzando 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

In Python, le librerie client dovrebbero trovarle automaticamente:

pip install google-generativeai

Uno script minimo per testarlo potrebbe essere:

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

L'output previsto è:

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

Node.js

Per utilizzare queste credenziali con la libreria client Node.js, imposta la variabile di ambiente GOOGLE_APPLICATION_CREDENTIALS.

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

Installa la libreria client:

npm install @google-ai/generativelanguage

Crea uno script minimo:

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

L'output dovrebbe essere:

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

Passaggi successivi

Se funziona, puoi provare a ottimizzare un modello autonomamente. Prova la Guida introduttiva all'ottimizzazione.

Gestisci autonomamente le credenziali [Python]

In molti casi, il comando gcloud non sarà disponibile per creare il token di accesso dall'ID client (client_secret.json). Google fornisce librerie in molti linguaggi per consentirti di gestire questo processo all'interno dell'app. Questa sezione illustra il processo in Python. Esempi equivalenti di questo tipo di procedura per altri linguaggi sono disponibili nella documentazione dell'API Drive

1. Installa le librerie necessarie

Installa la libreria client di Google per Python e la libreria client PaLM.

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

pip install google-generativeai

2. Scrivi il Gestore delle credenziali

Nella directory di lavoro, crea un file denominato load_creds.py. Inizia con il seguente codice per convertire client_secret.json in un token utilizzabile con 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

Per ridurre al minimo il numero di volte in cui devi fare clic nelle schermate di autorizzazione se memorizza nella cache un file token.json che può essere riutilizzato in un secondo momento o aggiornalo se è scaduto.

3. Scrivi il tuo programma

Ora crea il tuo 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. Esegui il programma

Nella directory di lavoro, esegui l'esempio:

python script.py

La prima volta che esegui lo script, si apre una finestra del browser e ti viene chiesto di autorizzare l'accesso.

  1. Se non hai ancora eseguito l'accesso al tuo Account Google, ti verrà chiesto di farlo. Se hai eseguito l'accesso a più account, assicurati di selezionare l'account che hai impostato come "Account di test" durante la configurazione del progetto.

  2. Le informazioni sull'autorizzazione sono archiviate nel file system, pertanto la prossima volta che esegui il codice campione, non ti verrà richiesta l'autorizzazione.

Hai configurato l'autenticazione.