Najprostszym sposobem uwierzytelniania w interfejsie Gemini API jest skonfigurowanie klucza interfejsu API zgodnie z opisem w krótkim wprowadzeniu do interfejsu Gemini API. Jeśli potrzebujesz bardziej rygorystycznych opcji sterowania dostępem, możesz zamiast tego użyć protokołu OAuth. Ten przewodnik pomoże Ci skonfigurować uwierzytelnianie za pomocą protokołu OAuth.
W tym przewodniku używamy uproszczonego podejścia do uwierzytelniania, które jest odpowiednie w środowisku testowym. W przypadku środowiska produkcyjnego przed wybraniem danych logowania odpowiednich dla Twojej aplikacji dowiedz się więcej o uwierzytelnianiu i autoryzacji.
Cele
- Konfigurowanie projektu w chmurze na potrzeby OAuth
- Konfigurowanie domyślnego uwierzytelniania aplikacji
- zarządzać danymi logowania w programie zamiast korzystać z usługi
gcloud auth
;
Wymagania wstępne
Aby uruchomić ten przewodnik, musisz mieć:
Konfigurowanie projektu w chmurze
Aby wykonać zadania z tego krótkiego przewodnika, musisz najpierw skonfigurować projekt w Cloud.
1. Włącz API
Zanim zaczniesz korzystać z interfejsów Google API, musisz je włączyć w projekcie Google Cloud.
W konsoli Google Cloud włącz interfejs Google Generative Language API.
2. Konfigurowanie ekranu zgody OAuth
Następnie skonfiguruj ekran zgody OAuth w projekcie i dodaj siebie jako użytkownika testowego. Jeśli ten krok został już wykonany w Twoim projekcie Google Cloud, przejdź do następnej sekcji.
W konsoli Google Cloud kliknij Menu >Google Auth platform > Przegląd.
Wypełnij formularz konfiguracji projektu i w sekcji Odbiorcy ustaw typ użytkownika na Zewnętrzni.
Wypełnij pozostałą część formularza, zaakceptuj warunki zasad dotyczących danych użytkownika, a potem kliknij Utwórz.
Na razie możesz pominąć dodawanie zakresów i kliknąć Zapisz i kontynuuj. W przyszłości, gdy będziesz tworzyć aplikację do użytku poza organizacją Google Workspace, musisz dodać i zweryfikować zakresy autoryzacji wymagane przez aplikację.
Dodaj użytkowników testowych:
- Przejdź do Audience page w Google Auth platform.
- W sekcji Użytkownicy testowi kliknij Dodaj użytkowników.
- Wpisz swój adres e-mail i adresy e-mail innych autoryzowanych testerów, a następnie kliknij Zapisz.
3. Autoryzowanie danych logowania w aplikacji na komputer
Aby uwierzytelniać się jako użytkownik i uzyskiwać dostęp do danych użytkownika w aplikacji, musisz utworzyć co najmniej 1 identyfikator klienta OAuth 2.0. Identyfikator klienta wskazuje konkretną aplikację na serwerach OAuth Google. Jeśli Twoja aplikacja działa na kilku platformach, musisz utworzyć osobny identyfikator klienta dla każdej z nich.
W konsoli Google Cloud kliknij Menu Google Auth platform Klienci.
Kliknij Utwórz klienta.
Kliknij Typ aplikacji > Aplikacja na komputer.
W polu Nazwa wpisz nazwę danych logowania. Ta nazwa jest wyświetlana tylko w konsoli Google Cloud.
Kliknij Utwórz. Wyświetli się ekran utworzonego klienta OAuth z nowym identyfikatorem klienta i tajnym kluczem klienta.
Kliknij OK. Nowo utworzone dane logowania pojawią się w sekcji Identyfikatory klientów OAuth 2.0.
Aby zapisać plik JSON, kliknij przycisk pobierania. Zostanie on zapisany jako
client_secret_<identifier>.json
. Zmień jego nazwę naclient_secret.json
i przenieś go do katalogu roboczego.
Konfigurowanie domyślnego uwierzytelniania aplikacji
Aby przekonwertować plik client_secret.json
na dane logowania, które można wykorzystać, przekaż jego lokalizację do argumentu --client-id-file
polecenia 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'
Uproszczona konfiguracja projektu w tym samouczku powoduje wyświetlenie okna „Google nie zweryfikowało tej aplikacji”. To normalne. Kliknij „Dalej”.
Spowoduje to umieszczenie wygenerowanego tokena w znanej lokalizacji, dzięki czemu będzie on dostępny dla gcloud
lub bibliotek klienta.
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'
Po skonfigurowaniu domyślnych danych logowania aplikacji (ADC) biblioteki klienta w większości języków nie potrzebują pomocy w ich znalezieniu lub potrzebują jej w minimalnym stopniu.
Curl
Najszybszym sposobem sprawdzenia, czy to działa, jest użycie go do uzyskania dostępu do interfejsu REST API za pomocą polecenia 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
W Pythonie biblioteki klienta powinny znajdować je automatycznie:
pip install google-generativeai
Minimalny skrypt do przetestowania może wyglądać tak:
import google.generativeai as genai
print('Available base models:', [m.name for m in genai.list_models()])
Dalsze kroki
Jeśli to działa, możesz wypróbować wyszukiwanie semantyczne na danych tekstowych.
Samodzielne zarządzanie danymi logowania [Python]
W wielu przypadkach nie będziesz mieć do dyspozycji polecenia gcloud
, które umożliwia utworzenie tokena dostępu na podstawie identyfikatora klienta (client_secret.json
). Google udostępnia biblioteki w wielu językach, które pozwalają zarządzać tym procesem w aplikacji. W tej sekcji pokazujemy ten proces w języku Python. Odpowiednie przykłady tej procedury w innych językach znajdziesz w dokumentacji interfejsu Drive API.
1. Zainstaluj niezbędne biblioteki.
Zainstaluj bibliotekę klienta Google dla Pythona i bibliotekę klienta Gemini.
pip install --upgrade -q google-api-python-client google-auth-httplib2 google-auth-oauthlib
pip install google-generativeai
2. Tworzenie menedżera danych logowania
Aby zminimalizować liczbę kliknięć na ekranach autoryzacji, utwórz w katalogu roboczym plik o nazwie load_creds.py
, który będzie przechowywać w pamięci podręcznej plik token.json
, aby można było go później użyć ponownie lub odświeżyć, jeśli wygaśnie.
Zacznij od tego kodu, aby przekonwertować plik client_secret.json
na token, którego można używać z 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. Napisz program
Teraz utwórz 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. Uruchamianie programu
W katalogu roboczym uruchom przykładowy kod:
python script.py
Przy pierwszym uruchomieniu skryptu otworzy się okno przeglądarki z prośbą o autoryzację dostępu.
Jeśli nie zalogowano się na konto Google, pojawi się prośba o zalogowanie. Jeśli korzystasz z kilku kont, podczas konfigurowania projektu wybierz konto, które zostało ustawione jako „Konto testowe”.
Informacje o autoryzacji są przechowywane w systemie plików, więc gdy następnym razem uruchomisz przykładowy kod, nie pojawi się prośba o autoryzację.
Uwierzytelnianie zostało skonfigurowane.