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

La API de PaLM te permite ajustar modelos en tus propios datos. Dado que son tus datos y tus modelos ajustados, esto necesita 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 el caso de un entorno de producción, obtén información sobre la autenticación y la autorización antes de elegir las credenciales de acceso apropiadas para la app.

Objetivos

  • Configura tu proyecto de Cloud para OAuth
  • Configure las credenciales predeterminadas de la aplicación
  • Administra las credenciales de 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 la nube

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

1. Cómo habilitar 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, pasa a la siguiente sección.

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

    Ir a la pantalla de consentimiento de OAuth

  2. Selecciona el tipo de usuario Externo para tu aplicación 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 Save and Continue.

  4. Por ahora, puedes omitir la tarea de 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 cualquier otro usuario de prueba autorizado. Luego, haz clic en Guardar y continuar.
  6. Revisa el resumen de registro de tu app. Para hacer 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 ID 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 tu app se ejecuta en varias plataformas, debes crear un ID de cliente distinto para cada una.

  1. En la consola de Google Cloud, ve a Menú > API 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 de OAuth creado, que muestra tu nuevo ID de cliente y el secreto del cliente.

  6. Haz clic en OK. La credencial recién creada aparecerá en los 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, cambiarle el nombre a client_secret.json y moverlo a tu directorio de trabajo.

Configura las 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 del proyecto simplificada en este instructivo activa un diálogo "Google ha no verificado 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 (ACD), las bibliotecas cliente en la mayoría de los lenguajes necesitan un mínimo o ninguna ayuda para encontrarlas.

Curl

La forma más rápida de comprobar 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);
    }
  });

Su 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 el modelo por tu cuenta. Prueba Comenzar con el ajuste.

Administra las credenciales por tu cuenta [Python]

En muchos casos, no tendrás el comando gcloud disponible para crear el token de acceso desde el ID de cliente (client_secret.json). Google proporciona bibliotecas en muchos lenguajes para que puedas 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 lenguajes, disponibles en la documentación de la API de Drive.

1. Instala las bibliotecas necesarias

Instalar 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 puedes volver a usar más adelante o actualizarlo si está vencido.

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. Cómo ejecutar el programa

En tu directorio de trabajo, ejecuta la muestra:

python script.py

La primera vez que ejecutes la secuencia de comandos, se abrirá una ventana del navegador y se te solicitará 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 que estableciste como “cuenta de prueba” cuando configures el 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.