Guide de démarrage rapide de l'authentification avec OAuth

L'API PaLM vous permet de régler des modèles à partir de vos propres données. Étant donné qu'il s'agit de vos données et des modèles réglés, des contrôles d'accès plus stricts sont nécessaires par rapport aux clés API.

Ce guide de démarrage rapide utilise une approche d'authentification simplifiée adaptée à un environnement de test. Pour un environnement de production, découvrez l'authentification et l'autorisation avant de choisir les identifiants d'accès appropriés pour votre application.

Objectifs

  • Configurer votre projet cloud pour OAuth
  • Configurer les identifiants par défaut de l'application
  • Gérez les identifiants dans votre programme au lieu d'utiliser gcloud auth

Conditions préalables

Pour exécuter ce guide de démarrage rapide, vous avez besoin des éléments suivants:

Configurer votre projet sur le cloud

Pour suivre ce guide de démarrage rapide, vous devez d'abord configurer votre projet Cloud.

1. Activer l'API

Avant d'utiliser les API Google, vous devez les activer dans un projet Google Cloud.

  • Dans la console Google Cloud, activez l'API Google Generative Language.

    Activer l'API

Configurez ensuite l'écran de consentement OAuth du projet et ajoutez-vous en tant qu'utilisateur test. Si vous avez déjà effectué cette étape pour votre projet Cloud, passez à la section suivante.

  1. Dans la console Google Cloud, accédez à Menu > API et services > Écran d'autorisation OAuth.

    Accéder à l'écran de consentement OAuth

  2. Sélectionnez le type d'utilisateur Externe pour votre application, puis cliquez sur Créer.

  3. Remplissez le formulaire d'inscription de l'application (vous pouvez laisser la plupart des champs vides), puis cliquez sur Enregistrer et continuer.

  4. Pour l'instant, vous pouvez ignorer l'ajout de champs d'application et cliquer sur Enregistrer et continuer. Par la suite, lorsque vous créerez une application destinée à être utilisée en dehors de votre organisation Google Workspace, vous devrez ajouter et vérifier les niveaux d'autorisation requis par votre application.

  5. Ajouter des utilisateurs tests:

    1. Sous Utilisateurs test, cliquez sur Ajouter des utilisateurs.
    2. Saisissez votre adresse e-mail et les autres utilisateurs de test autorisés, puis cliquez sur Enregistrer et continuer.
  6. Consultez le résumé d'enregistrement de votre application. Pour apporter des modifications, cliquez sur Modifier. Si l'enregistrement de l'application semble correct, cliquez sur Back to Dashboard (Retour au tableau de bord).

3. Autoriser des identifiants pour une application de bureau

Pour vous authentifier en tant qu'utilisateur final et accéder aux données utilisateur dans votre application, vous devez créer un ou plusieurs ID client OAuth 2.0. Un ID client sert à identifier une application unique auprès des serveurs OAuth de Google. Si votre application s'exécute sur plusieurs plates-formes, vous devez créer un ID client distinct pour chaque plate-forme.

  1. Dans la console Google Cloud, accédez à Menu > API et services > Identifiants.

    Accéder à la page "Identifiants"

  2. Cliquez sur Créer des identifiants > ID client OAuth.

  3. Cliquez sur Type d'application > Application de bureau.

  4. Dans le champ Name (Nom), saisissez un nom pour l'identifiant. Ce nom n'apparaît que dans la console Google Cloud.

  5. Cliquez sur Créer. L'écran du client OAuth créé s'affiche, indiquant votre nouvel ID client et votre nouveau code secret de client.

  6. Cliquez sur OK. Les nouveaux identifiants apparaissent sous ID client OAuth 2.0.

  7. Cliquez sur le bouton de téléchargement pour enregistrer le fichier JSON. Il sera enregistré sous le nom client_secret_<identifier>.json. Renommez-le en client_secret.json et déplacez-le dans votre répertoire de travail.

Configurer les identifiants par défaut de l'application

Pour convertir le fichier client_secret.json en identifiants utilisables, transmettez son emplacement à l'argument --client-id-file de la commande 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 configuration simplifiée du projet décrite dans ce tutoriel déclenche une boîte de dialogue Google n'a pas validé cette application. C'est normal. Sélectionnez Continuer.

Le jeton obtenu est alors placé dans un emplacement bien connu afin que gcloud ou les bibliothèques clientes puissent y accéder.

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'

Une fois que les identifiants par défaut de l'application (ACD) sont définis, les bibliothèques clientes de la plupart des langages n'ont besoin que de peu ou pas d'aide pour les trouver.

Curl

Le moyen le plus rapide de vérifier que cela fonctionne est de l'utiliser pour accéder à l'API REST à l'aide de 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

En Python, les bibliothèques clientes devraient les trouver automatiquement:

pip install google-generativeai

Voici un script minimal pour le tester:

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

Le résultat attendu est :

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

Node.js

Pour utiliser ces identifiants avec la bibliothèque cliente Node.js, définissez la variable d'environnement GOOGLE_APPLICATION_CREDENTIALS.

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

Installez la bibliothèque cliente :

npm install @google-ai/generativelanguage

Créez un script minimal:

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

Voici le résultat attendu:

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

Étapes suivantes

Si cela fonctionne, vous pouvez essayer de régler un modèle vous-même. Consultez Premiers pas avec le réglage.

Gérer soi-même les identifiants [Python]

Dans de nombreux cas, la commande gcloud n'est pas disponible pour créer le jeton d'accès à partir de l'ID client (client_secret.json). Google fournit des bibliothèques dans de nombreux langages pour vous permettre de gérer ce processus dans votre application. Cette section décrit le processus en Python. Des exemples équivalents de ce type de procédure sont disponibles pour d'autres langages dans la documentation de l'API Drive.

1. Installer les bibliothèques nécessaires

Installez la bibliothèque cliente Google pour Python, ainsi que la bibliothèque cliente PaLM.

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

pip install google-generativeai

2. Écrire le gestionnaire d'identifiants

Dans votre répertoire de travail, créez un fichier nommé load_creds.py. Commencez par le code suivant pour convertir le client_secret.json en un jeton utilisable avec 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

Pour réduire le nombre de fois où vous devez parcourir les écrans d'autorisation si un fichier token.json est mis en cache pour qu'il puisse être réutilisé ultérieurement ou s'il a expiré, vous pouvez l'actualiser.

3. Écrire votre programme

Créez maintenant votre 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. Exécuter votre programme

Dans votre répertoire de travail, exécutez l'exemple:

python script.py

La première fois que vous exécutez le script, il ouvre une fenêtre de navigateur et vous invite à autoriser l'accès.

  1. Si vous n'êtes pas déjà connecté à votre compte Google, vous êtes invité à le faire. Si vous êtes connecté à plusieurs comptes, veillez à sélectionner le compte que vous avez défini en tant que "compte de test" lors de la configuration de votre projet.

  2. Les informations d'autorisation sont stockées dans le système de fichiers. Par conséquent, la prochaine fois que vous exécuterez l'exemple de code, vous ne serez pas invité à donner une autorisation.

L'authentification a bien été configurée.