Najprostszym sposobem uwierzytelnienia się w Gemini API jest skonfigurowanie klucza API zgodnie z instrukcjami podanymi w krótkim wprowadzeniu do interfejsu Gemini API. Jeśli potrzebujesz bardziej rygorystycznych kontroli dostępu, możesz użyć protokołu OAuth. Ten przewodnik pomoże Ci skonfigurować uwierzytelnianie za pomocą OAuth.
Ten przewodnik używa uproszczonego podejścia do uwierzytelniania, które jest odpowiednie dla środowiska testowego. W przypadku środowiska produkcyjnego przed wybraniem danych logowania odpowiednich dla aplikacji zapoznaj się z informacjami na temat uwierzytelniania i autoryzacji.
Cele
- Konfigurowanie projektu w chmurze na potrzeby OAuth
- Konfigurowanie domyślnego uwierzytelniania aplikacji
- Zarządzaj danymi logowania w programie zamiast używać
gcloud auth
Wymagania wstępne
Aby uruchomić to krótkie wprowadzenie, musisz mieć:
Konfigurowanie projektu w chmurze
Aby ukończyć ten krótki przewodnik, musisz najpierw skonfigurować projekt Cloud.
1. Włącz API
Zanim zaczniesz korzystać z interfejsów API Google, 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 przypadku Twojego projektu Cloud, przejdź do następnej sekcji.
W konsoli Google Cloud kliknij Menu > > Przegląd.
Wypełnij formularz konfiguracji projektu i w sekcji Odbiorcy ustaw typ użytkownika na Zewnętrzni.
Uzupełnij resztę formularza, zaakceptuj warunki Polityki prywatności użytkowników, a potem kliknij Utwórz.
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 potwierdzić zakresy autoryzacji wymagane przez aplikację.
Dodawanie użytkowników testowych:
3. Autoryzowanie danych logowania do aplikacji na komputer
Aby uwierzytelnić się jako użytkownik i uzyskać 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 wybierz Menu > > 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. Pojawi się ekran utworzonego klienta OAuth z nowym identyfikatorem klienta i tajnym kluczem klienta.
Kliknij OK. Nowo utworzone dane logowania pojawią się w sekcji Identyfikatory klienta OAuth 2.0.
Aby zapisać plik JSON, kliknij przycisk pobierania. Zostanie ono zapisane jako
client_secret_<identifier>.json
, a następnie zmienisz jego nazwę naclient_secret.json
i przeniesiesz do katalogu roboczego.
Konfigurowanie domyślnego uwierzytelniania aplikacji
Aby przekonwertować plik client_secret.json
na przydatne dane logowania, prześlij jego lokalizację jako argument --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. Wybierz „Dalej”.
Dzięki temu token znajdzie się w dobrze znanym miejscu, z dostępem dla gcloud
lub bibliotek klientów.
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 poświadczeń aplikacji (ACD) biblioteki klienta w większości języków nie potrzebują pomocy w ich znajdowaniu.
Curl
Najszybszym sposobem sprawdzenia, czy to działa, jest użycie curl do uzyskania dostępu do interfejsu REST API:
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 znaleźć 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 spróbować wyszukiwania semantycznego na danych tekstowych.
Samodzielne zarządzanie danymi logowania [Python]
W wielu przypadkach nie będziesz mieć do dyspozycji polecenia gcloud
, aby utworzyć token dostępu na podstawie identyfikatora klienta (client_secret.json
). Google udostępnia biblioteki w wielu językach, które umożliwiają zarządzanie tym procesem w aplikacji. W tej sekcji pokazano ten proces w języku Python. Odpowiednie przykłady tej procedury w innych językach znajdziesz w dokumentacji interfejsu Drive API.
1. Instalowanie niezbędnych bibliotek
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. Zapisz menedżera danych logowania
Aby zminimalizować liczbę kliknięć w ekranach autoryzacji, utwórz w katalogu roboczym plik o nazwie load_creds.py
, który będzie przechowywać w pamięci podręcznej plik load_creds.py
, który może później ponownie użyć lub odświeżyć, jeśli wygaśnie.token.json
Zacznij od tego kodu, aby przekonwertować plik client_secret.json
na token, którego można używać z plikiem 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. Tworzenie programu
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
Uruchom przykładowy kod w katalogu roboczym:
python script.py
Gdy skrypt zostanie uruchomiony po raz pierwszy, otworzy się okno przeglądarki i ukaże się prośba o autoryzację dostępu.
Jeśli nie jesteś zalogowany(-a) na konto Google, pojawi się prośba o zalogowanie. Jeśli korzystasz z kilku kont, podczas konfigurowania projektu wybierz konto ustawione jako „konto testowe”.
Informacje autoryzacyjne są przechowywane w systemie plików, więc następnym razem, gdy uruchomisz przykładowy kod, nie pojawi się prośba o autoryzację.
Autoryzacja została skonfigurowana.