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 en su lugar. 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 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 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, ve a la próxima sección.
En la consola de Google Cloud, ve a Menú > > Descripción general.
Completa el formulario de configuración del proyecto y establece el tipo de usuario como Externo en la sección Público.
Completa el resto del formulario, acepta las condiciones de la Política de Datos del Usuario y, luego, haz clic en Crear.
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.
Agrega usuarios de prueba:
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 a Menú > > Clientes.
Haz clic en Crear cliente.
Haz clic en Tipo de aplicación > App 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 Se creó el cliente de OAuth, que muestra tu nuevo ID de cliente y secreto de 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 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 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.retriever'
Una vez que hayas configurado las credenciales predeterminadas de la aplicación (ACD), 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/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 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 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 debes 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 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.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á autorización.
Configuraste correctamente la autenticación.