Krótkie wprowadzenie do uwierzytelniania z protokołem OAuth

Interfejs PaLM API umożliwia dostrojenie modeli na podstawie Twoich danych. Ponieważ są to Twoje daneTwoje dopracowane modele, wymagają one bardziej rygorystycznych ustawień kontroli dostępu niż klucze API.

Ten krótki 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 samouczek, musisz najpierw skonfigurować projekt w chmurze.

1. Włącz API

Zanim zaczniesz korzystać z interfejsów API Google, musisz je włączyć w projekcie Google Cloud.

Następnie skonfiguruj ekran zgody OAuth w projekcie i dodaj siebie jako testowego użytkownika. Jeśli ten krok został już wykonany w przypadku Twojego projektu Cloud, przejdź do następnej sekcji.

  1. W konsoli Google Cloud kliknij Menu > Interfejsy API i usługi > Ekran zgody OAuth.

    Otwórz ekran zgody OAuth

  2. Wybierz w przypadku aplikacji typ użytkownika Zewnętrzny, a potem kliknij Utwórz.

  3. Wypełnij formularz rejestracji aplikacji (większość pól możesz pozostawić pustych), a następnie kliknij Zapisz i kontynuuj.

  4. 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ę.

  5. Dodawanie użytkowników testowych:

    1. W sekcji Użytkownicy testowi kliknij Dodaj użytkowników.
    2. Wpisz swój adres e-mail i adresy e-mail innych autoryzowanych użytkowników testu, a następnie kliknij Zapisz i kontynuuj.
  6. Sprawdź podsumowanie rejestracji aplikacji. Aby wprowadzić zmiany, kliknij Edytuj. Jeśli rejestracja aplikacji wygląda dobrze, kliknij Powrót do panelu.

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 aplikacja działa na wielu platformach, musisz utworzyć osobny identyfikator klienta dla każdej z nich.

  1. W konsoli Google Cloud kliknij Menu > Interfejsy API i usługi > Dane logowania.

    Otwórz stronę Dane logowania

  2. Kliknij Utwórz dane logowania > Identyfikator klienta OAuth.

  3. Kliknij Typ aplikacji > Aplikacja na komputer.

  4. W polu Nazwa wpisz nazwę danych logowania. Ta nazwa jest wyświetlana tylko w konsoli Google Cloud.

  5. Kliknij Utwórz. Pojawi się ekran z nowym klientem OAuth, na którym wyświetlane są nowy identyfikator klienta i tajny klucz klienta.

  6. Kliknij OK. Nowo utworzone dane uwierzytelniające pojawią się w sekcji Identyfikatory klienta OAuth 2.0.

  7. Aby zapisać plik JSON, kliknij przycisk pobierania. Plik zostanie zapisany jako client_secret_<identifier>.json. Zmień jego nazwę na client_secret.json i przenieś 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.tuning'

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.tuning'

Po skonfigurowaniu domyślnych poświadczeń aplikacji biblioteki klienta w większości języków nie wymagają 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/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

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()])
print('My tuned models:', [m.name for m in genai.list_tuned_models()])

Oczekiwane dane wyjściowe to:

Available base models: ['models/chat-bison-001', 'models/text-bison-001', 'models/embedding-gecko-001']
My tuned models: []

Node.js

Aby używać tych danych logowania z biblioteką klienta Node.js, ustaw zmienną środowiskową GOOGLE_APPLICATION_CREDENTIALS.

export GOOGLE_APPLICATION_CREDENTIALS='<PATH_TO>/application_default_credentials.json'

Zainstaluj bibliotekę klienta:

npm install @google-ai/generativelanguage

Utwórz minimalny skrypt:

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);
    }
  });

Dane wyjściowe powinny wyglądać tak:

models/chat-bison-001
models/text-bison-001
models/embedding-gecko-001

Dalsze kroki

Jeśli to działa, możesz samodzielnie spróbować dostroić model. Zapoznaj się z artykułem Pierwsze kroki z dostrajaniem.

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. W dokumentacji interfejsu API Drive znajdziesz podobne przykłady procedury dla innych języków.

1. Instalowanie niezbędnych bibliotek

Zainstaluj bibliotekę klienta Google dla Pythona i bibliotekę klienta PaLM.

pip install --upgrade -q google-api-python-client google-auth-httplib2 google-auth-oauthlib

pip install google-generativeai

2. Zapisz menedżera danych logowania

W katalogu roboczym utwórz plik o nazwie load_creds.py. Zacznij od tego kodu, aby przekonwertować 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.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

Aby zminimalizować liczbę kliknięć na ekranach autoryzacji, jeśli plik token.json jest przechowywany w pamięci podręcznej, aby można było go użyć później, lub odświeżyć, jeśli jego ważność wygasła.

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_tuned_models()])
print('My tuned models:', [m.name for m in genai.list_tuned_models()])

4. Uruchamianie programu

Uruchom przykład w katalogu roboczym:

python script.py

Gdy skrypt zostanie uruchomiony po raz pierwszy, otworzy się okno przeglądarki i ukaże się w nim prośba o autoryzację dostępu.

  1. 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”.

  2. 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.