La forma más sencilla de autenticarse en la API de Gemini es configurar una clave de API, como se describe en la guía de inicio rápido de la API de Gemini. Si necesitas controles de acceso más estrictos, puedes usar OAuth. Esta guía te ayudará a configurar la autenticación con OAuth.
En esta guía, 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 que sean adecuadas para tu app.
Objetivos
- Configura tu proyecto de la nube 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 Cloud.
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.
2. Cómo configurar la pantalla de consentimiento de OAuth
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.
En la consola de Google Cloud, ve al menú > APIs y servicios > Pantalla de consentimiento de OAuth.
Selecciona el tipo de usuario Externo para tu app y, luego, haz clic en Crear.
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.
Por ahora, puedes omitir el paso 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.
Agrega usuarios de prueba:
- En Usuarios de prueba, haz clic en Agregar usuarios.
- Ingresa tu dirección de correo electrónico y los demás usuarios de prueba autorizados, y haz clic en Guardar y continuar.
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. Cómo autorizar 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 tu app se ejecuta en varias plataformas, debes crear un ID de cliente independiente para cada una.
En la consola de Google Cloud, ve al menú > APIs y servicios > Credenciales.
Haz clic en Crear credenciales > ID de cliente de OAuth.
Haz clic en Tipo de aplicación > Aplicación de escritorio.
En el campo Nombre, escribe un nombre para la credencial. Este nombre solo se muestra en la consola de Google Cloud.
Haz clic en Crear. Aparecerá la pantalla de creación del cliente de OAuth, en la que se mostrará tu nuevo ID de cliente y el secreto del cliente.
Haz clic en Aceptar. La credencial recién creada aparecerá en IDs de cliente de OAuth 2.0.
Haz clic en el botón de descarga para guardar el archivo JSON. Se guardará como
client_secret_<identifier>.json
, cámbiale el nombre aclient_secret.json
y muévelo 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.retriever'
La configuración simplificada del proyecto en este instructivo activa el diálogo "Google has notverified this app." (Google no verificó esta app). Esto es normal; elige "continuar".
De esta manera, se 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.retriever'
Una vez que hayas configurado las credenciales predeterminadas de la aplicación (ACD), las bibliotecas cliente de la mayoría de los lenguajes necesitarán muy poca ayuda o nada de ayuda 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/v1/models \ -H 'Content-Type: application/json' \ -H "Authorization: Bearer ${access_token}" \ -H "x-goog-user-project: ${project_id}" | grep '"name"'
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()])
Próximos pasos
Si funciona, puedes probar la recuperación semántica en tus datos de texto.
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 permitirte administrar ese proceso en 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 Gemini.
pip install --upgrade -q google-api-python-client google-auth-httplib2 google-auth-oauthlib
pip install google-generativeai
2. Escribe el administrador de credenciales
Para minimizar la cantidad de veces que tienes que hacer clic en las pantallas de autorización, crea un archivo llamado load_creds.py
en tu directorio de trabajo para almacenar en caché un archivo token.json
que se pueda volver a usar más adelante o actualizar si vence.
Comienza con el
siguiente código para convertir el archivo client_secret.json
en un token que se puede 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.retriever']
def load_creds():
"""Converts `client_secret.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(
'client_secret.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
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_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.
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.
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á la autorización.
Configuraste correctamente la autenticación.