Guía de inicio rápido de Authentication con OAuth

La API de PaLM te permite ajustar modelos en tus propios datos. Como se trata de tus datos y tus modelos ajustados, esto requiere controles de acceso más estrictos que las claves de API.

En esta guía de inicio rápido, se usa un enfoque de autenticación simplificado que es apropiado para un entorno de pruebas. En un entorno de producción, obtén información sobre la autenticación y autorización antes de elegir las credenciales de acceso adecuadas para tu app.

Objetivos

  • Configura tu proyecto de Cloud para OAuth
  • Configura application-default-credentials
  • Administra las credenciales en tu programa en lugar de usar gcloud auth

Requisitos previos

Para ejecutar esta guía de inicio rápido, necesitas lo siguiente:

Configura tu proyecto de Cloud

Para completar esta guía de inicio rápido, primero debes configurar tu proyecto de nube.

1. Habilita la API

Antes de usar las APIs de Google, debes activarlas en un proyecto de Google Cloud.

  • En la consola de Google Cloud, habilita la API de Google Generative Language.

    Habilitar la API

A continuación, configura la pantalla de consentimiento de OAuth del proyecto y agrégate como usuario de prueba. Si ya completaste este paso para tu proyecto de Cloud, ve a la próxima sección.

  1. En la consola de Google Cloud, ve a Menú > APIs y servicios > Pantalla de consentimiento de OAuth.

    Ve a la pantalla de consentimiento de OAuth

  2. Selecciona el tipo de usuario Externo para tu app y, luego, haz clic en Crear.

  3. Completa el formulario de registro de la app (puedes dejar la mayoría de los campos en blanco) y, luego, haz clic en Guardar y continuar.

  4. Por ahora, puedes omitir agregar permisos y hacer clic en Guardar y continuar. En el futuro, cuando crees una app para usarla fuera de tu organización de Google Workspace, deberás agregar y verificar los permisos de autorización que requiere tu app.

  5. Agrega usuarios de prueba:

    1. En Usuarios de prueba, haz clic en Agregar usuarios.
    2. Ingresa tu dirección de correo electrónico y los demás usuarios de prueba autorizados, y haz clic en Guardar y continuar.
  6. Revisa el resumen del registro de tu app. Para realizar cambios, haz clic en Editar. Si el registro de la app parece correcto, haz clic en Volver al panel.

3. Autoriza credenciales para una aplicación de escritorio

Para autenticarte como usuario final y acceder a los datos del usuario en tu app, debes crear uno o más IDs de cliente de OAuth 2.0. Un ID de cliente se usa con el fin de identificar una sola app para los servidores de OAuth de Google. Si la app se ejecuta en varias plataformas, debes crear un ID de cliente independiente para cada una.

  1. En la consola de Google Cloud, ve a Menú > APIs y servicios > Credenciales.

    Ir a Credenciales

  2. Haz clic en Crear credenciales > ID de cliente de OAuth.

  3. Haz clic en Tipo de aplicación > App de escritorio.

  4. En el campo Nombre, escribe un nombre para la credencial. Este nombre solo se muestra en la consola de Google Cloud.

  5. Haz clic en Crear. Aparecerá la pantalla Se creó el cliente de OAuth, que muestra tu nuevo ID de cliente y secreto de cliente.

  6. Haz clic en Aceptar. La credencial recién creada aparecerá en IDs de cliente de OAuth 2.0.

  7. Haz clic en el botón de descarga para guardar el archivo JSON. Se guardará como client_secret_<identifier>.json, cámbiale el nombre a client_secret.json y muévelo a tu directorio de trabajo.

Configura credenciales predeterminadas de la aplicación

Para convertir el archivo client_secret.json en credenciales utilizables, pasa su ubicación al argumento --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 configuración de proyecto simplificada en este instructivo activa el diálogo "Google no verificó esta app". Esto es normal. Elige “Continuar”.

Esto coloca el token resultante en una ubicación conocida para que gcloud o las bibliotecas cliente puedan acceder a él.

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 vez que hayas configurado las credenciales predeterminadas de la aplicación (ADC), las bibliotecas cliente en la mayoría de los lenguajes necesitan ayuda mínima o ninguna para encontrarlas.

Curl

La forma más rápida de probar que esto funciona es usarla para acceder a la API de Rest con 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, las bibliotecas cliente deberían encontrarlas automáticamente:

pip install google-generativeai

Una secuencia de comandos mínima para probarlo podría ser la siguiente:

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

El resultado esperado es el siguiente:

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

Node.js

Para usar estas credenciales con la biblioteca cliente de Node.js, configura la variable de entorno GOOGLE_APPLICATION_CREDENTIALS.

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

Instala la biblioteca cliente:

npm install @google-ai/generativelanguage

Crea una secuencia de comandos mínima:

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

El resultado debería ser el siguiente:

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

Próximos pasos

Si funciona, puedes intentar ajustar un modelo por tu cuenta. Prueba Comienza a usar el ajuste.

Administra tus credenciales por tu cuenta [Python]

En muchos casos, no tendrás disponible el comando gcloud para crear el token de acceso a partir del ID de cliente (client_secret.json). Google proporciona bibliotecas en muchos lenguajes para permitirte administrar ese proceso dentro de tu app. En esta sección, se muestra el proceso en Python. Hay ejemplos equivalentes de este tipo de procedimiento, para otros idiomas, disponibles en la documentación de la API de Drive.

1. Instala las bibliotecas necesarias

Instala la biblioteca cliente de Google para Python y la biblioteca cliente de PaLM.

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

pip install google-generativeai

2. Escribe el administrador de credenciales

En tu directorio de trabajo, crea un archivo llamado load_creds.py. Comienza con el siguiente código para convertir el client_secret.json en un token que se pueda usar 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

Para minimizar la cantidad de veces que debes hacer clic en las pantallas de autorización si almacena en caché un archivo token.json que se puede volver a usar más adelante, o bien actualizarlo si caducó.

3. Escribe tu programa

Ahora crea tu 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. Ejecuta tu programa

En tu directorio de trabajo, ejecuta la muestra:

python script.py

La primera vez que ejecutas la secuencia de comandos, se abre una ventana del navegador y se te solicita que autorices el acceso.

  1. Si aún no accediste a tu Cuenta de Google, se te solicitará que lo hagas. Si accediste a varias cuentas, asegúrate de seleccionar la cuenta que configuraste como "Cuenta de prueba" cuando configures tu proyecto.

  2. La información de autorización se almacena en el sistema de archivos, por lo que la próxima vez que ejecutes el código de muestra, no se te solicitará autorización.

Configuraste correctamente la autenticación.