Краткое руководство по аутентификации с помощью OAuth, Краткое руководство по аутентификации с помощью OAuth

PaLM API позволяет настраивать модели на основе ваших собственных данных. Поскольку это ваши данные и настроенные модели, для этого требуется более строгий контроль доступа, чем для API-ключей.

В этом кратком руководстве используется упрощенный подход к аутентификации, подходящий для среды тестирования. В производственной среде узнайте об аутентификации и авторизации, прежде чем выбирать учетные данные доступа , подходящие для вашего приложения.

Цели

  • Настройте свой облачный проект для OAuth
  • Настройка учетных данных приложения по умолчанию
  • Управляйте учетными данными в своей программе вместо использования gcloud auth

Предварительные условия

Чтобы запустить это краткое руководство, вам необходимо:

Настройте свой облачный проект

Чтобы выполнить это краткое руководство, сначала необходимо настроить облачный проект.

1. Включите API

Прежде чем использовать API Google, вам необходимо включить их в проекте Google Cloud.

  • В консоли Google Cloud включите Google Generative Language API.

    Включить API

Затем настройте экран согласия OAuth проекта и добавьте себя в качестве тестового пользователя. Если вы уже выполнили этот шаг для своего облачного проекта, перейдите к следующему разделу.

  1. В консоли Google Cloud выберите Меню > API и службы > Экран согласия OAuth .

    Перейдите на экран согласия OAuth.

  2. Выберите тип пользователя «Внешний» для вашего приложения, затем нажмите «Создать» .

  3. Заполните форму регистрации приложения (большинство полей можно оставить пустыми), затем нажмите «Сохранить и продолжить» .

  4. На данный момент вы можете пропустить добавление областей и нажать «Сохранить и продолжить» . В будущем, когда вы создадите приложение для использования за пределами вашей организации Google Workspace, вам необходимо будет добавить и проверить области авторизации, необходимые вашему приложению.

  5. Добавьте тестовых пользователей:

    1. В разделе «Тестовые пользователи» нажмите «Добавить пользователей» .
    2. Введите свой адрес электронной почты и адрес других авторизованных тестовых пользователей, затем нажмите «Сохранить и продолжить» .
  6. Просмотрите сводку регистрации приложения. Чтобы внести изменения, нажмите «Изменить» . Если регистрация приложения выглядит нормально, нажмите «Вернуться на панель управления» .

3. Авторизация учетных данных для настольного приложения.

Чтобы пройти аутентификацию в качестве конечного пользователя и получить доступ к пользовательским данным в вашем приложении, вам необходимо создать один или несколько идентификаторов клиента OAuth 2.0. Идентификатор клиента используется для идентификации одного приложения на серверах Google OAuth. Если ваше приложение работает на нескольких платформах, вам необходимо создать отдельный идентификатор клиента для каждой платформы.

  1. В консоли Google Cloud выберите Меню > API и службы > Учетные данные .

    Перейти к учетным данным

  2. Нажмите «Создать учетные данные» > «Идентификатор клиента OAuth ».

  3. Нажмите Тип приложения > Приложение для ПК .

  4. В поле Имя введите имя учетных данных. Это имя отображается только в консоли Google Cloud.

  5. Нажмите Создать . Появится экран создания клиента OAuth, показывающий ваш новый идентификатор клиента и секрет клиента.

  6. Нажмите ОК . Вновь созданные учетные данные появятся в разделе «Идентификаторы клиентов OAuth 2.0».

  7. Нажмите кнопку загрузки, чтобы сохранить файл JSON. Он будет сохранен как client_secret_<identifier>.json , переименуйте его в client_secret.json и переместите в свой рабочий каталог.

Настройка учетных данных приложения по умолчанию

Чтобы преобразовать файл client_secret.json в пригодные для использования учетные данные, передайте его местоположение в аргументе --client-id-file команды 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'

Упрощенная настройка проекта в этом руководстве вызывает сообщение «Google не проверил это приложение». диалог. Это нормально, выберите «продолжить» .

При этом полученный токен помещается в хорошо известное место, чтобы к нему мог получить доступ gcloud или клиентские библиотеки.

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'

После установки учетных данных приложения по умолчанию (ACD) клиентским библиотекам на большинстве языков требуется минимальная помощь для их поиска.

Завиток

Самый быстрый способ проверить, работает ли это, — использовать его для доступа к остальному API с помощью Curl:

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 клиентские библиотеки должны найти их автоматически:

pip install google-generativeai

Минимальный сценарий для проверки может быть таким:

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()])

Ожидаемый результат:

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

Node.js

Чтобы использовать эти учетные данные с клиентской библиотекой Node.js, установите переменную среды GOOGLE_APPLICATION_CREDENTIALS .

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

Установите клиентскую библиотеку:

npm install @google-ai/generativelanguage

Создайте минимальный скрипт:

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

Его вывод должен быть:

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

Следующие шаги

Если это работает, вы готовы попробовать настроить модель самостоятельно. Попробуйте начать настройку .

Управляйте учетными данными самостоятельно [Python]

Во многих случаях у вас не будет команды gcloud для создания токена доступа из идентификатора клиента ( client_secret.json ). Google предоставляет библиотеки на многих языках, чтобы вы могли управлять этим процессом в своем приложении. В этом разделе демонстрируется процесс на Python. Эквивалентные примеры подобной процедуры для других языков доступны в документации API диска.

1. Установите необходимые библиотеки

Установите клиентскую библиотеку Google для Python и клиентскую библиотеку PaLM.

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

pip install google-generativeai

2. Напишите диспетчер учетных данных

В своем рабочем каталоге создайте файл с именем load_creds.py . Начните со следующего кода, чтобы преобразовать client_secret.json в токен, который можно использовать с 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

Чтобы свести к минимуму количество раз, когда вам придется щелкать экраны авторизации, если кешируется файл token.json , который можно повторно использовать позже, или обновлять, если срок его действия истек.

3. Напишите свою программу

Теперь создайте свой 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. Запустите вашу программу

В своем рабочем каталоге запустите образец:

python script.py

При первом запуске сценария он открывает окно браузера и предлагает авторизовать доступ.

  1. Если вы еще не вошли в свою учетную запись Google, вам будет предложено войти в нее. Если вы вошли в несколько учетных записей, обязательно выберите учетную запись, которую вы установили в качестве «Тестовой учетной записи» при настройке проекта.

  2. Информация об авторизации хранится в файловой системе, поэтому при следующем запуске примера кода вам не будет предложено авторизоваться.

Вы успешно настроили аутентификацию.

,

PaLM API позволяет настраивать модели на основе ваших собственных данных. Поскольку это ваши данные и настроенные модели, для этого требуется более строгий контроль доступа, чем для API-ключей.

В этом кратком руководстве используется упрощенный подход к аутентификации, подходящий для среды тестирования. В производственной среде узнайте об аутентификации и авторизации, прежде чем выбирать учетные данные доступа , подходящие для вашего приложения.

Цели

  • Настройте свой облачный проект для OAuth
  • Настройка учетных данных приложения по умолчанию
  • Управляйте учетными данными в своей программе вместо использования gcloud auth

Предварительные условия

Чтобы запустить это краткое руководство, вам необходимо:

Настройте свой облачный проект

Чтобы выполнить это краткое руководство, сначала необходимо настроить облачный проект.

1. Включите API

Прежде чем использовать API Google, вам необходимо включить их в проекте Google Cloud.

  • В консоли Google Cloud включите Google Generative Language API.

    Включить API

Затем настройте экран согласия OAuth проекта и добавьте себя в качестве тестового пользователя. Если вы уже выполнили этот шаг для своего облачного проекта, перейдите к следующему разделу.

  1. В консоли Google Cloud выберите Меню > API и службы > Экран согласия OAuth .

    Перейдите на экран согласия OAuth.

  2. Выберите тип пользователя «Внешний» для вашего приложения, затем нажмите «Создать» .

  3. Заполните форму регистрации приложения (большинство полей можно оставить пустыми), затем нажмите «Сохранить и продолжить» .

  4. На данный момент вы можете пропустить добавление областей и нажать «Сохранить и продолжить» . В будущем, когда вы создадите приложение для использования за пределами вашей организации Google Workspace, вам необходимо будет добавить и проверить области авторизации, необходимые вашему приложению.

  5. Добавьте тестовых пользователей:

    1. В разделе «Тестовые пользователи» нажмите «Добавить пользователей» .
    2. Введите свой адрес электронной почты и адрес других авторизованных тестовых пользователей, затем нажмите «Сохранить и продолжить» .
  6. Просмотрите сводку регистрации приложения. Чтобы внести изменения, нажмите «Изменить» . Если регистрация приложения выглядит нормально, нажмите «Вернуться на панель управления» .

3. Авторизация учетных данных для настольного приложения.

Чтобы пройти аутентификацию в качестве конечного пользователя и получить доступ к пользовательским данным в вашем приложении, вам необходимо создать один или несколько идентификаторов клиента OAuth 2.0. Идентификатор клиента используется для идентификации одного приложения на серверах Google OAuth. Если ваше приложение работает на нескольких платформах, вам необходимо создать отдельный идентификатор клиента для каждой платформы.

  1. В консоли Google Cloud выберите Меню > API и службы > Учетные данные .

    Перейти к учетным данным

  2. Нажмите «Создать учетные данные» > «Идентификатор клиента OAuth ».

  3. Нажмите Тип приложения > Приложение для ПК .

  4. В поле Имя введите имя учетных данных. Это имя отображается только в консоли Google Cloud.

  5. Нажмите Создать . Появится экран создания клиента OAuth, показывающий ваш новый идентификатор клиента и секрет клиента.

  6. Нажмите ОК . Вновь созданные учетные данные появятся в разделе «Идентификаторы клиентов OAuth 2.0».

  7. Нажмите кнопку загрузки, чтобы сохранить файл JSON. Он будет сохранен как client_secret_<identifier>.json , переименуйте его в client_secret.json и переместите в свой рабочий каталог.

Настройка учетных данных приложения по умолчанию

Чтобы преобразовать файл client_secret.json в пригодные для использования учетные данные, передайте его местоположение в аргументе --client-id-file команды 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'

Упрощенная настройка проекта в этом руководстве вызывает сообщение «Google не проверил это приложение». диалог. Это нормально, выберите «продолжить» .

При этом полученный токен помещается в хорошо известное место, чтобы к нему мог получить доступ gcloud или клиентские библиотеки.

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'

После установки учетных данных приложения по умолчанию (ACD) клиентским библиотекам на большинстве языков требуется минимальная помощь для их поиска.

Завиток

Самый быстрый способ проверить, работает ли это, — использовать его для доступа к остальному API с помощью Curl:

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 клиентские библиотеки должны найти их автоматически:

pip install google-generativeai

Минимальный сценарий для проверки может быть таким:

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()])

Ожидаемый результат:

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

Node.js

Чтобы использовать эти учетные данные с клиентской библиотекой Node.js, установите переменную среды GOOGLE_APPLICATION_CREDENTIALS .

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

Установите клиентскую библиотеку:

npm install @google-ai/generativelanguage

Создайте минимальный скрипт:

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

Его вывод должен быть:

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

Следующие шаги

Если это работает, вы готовы попробовать настроить модель самостоятельно. Попробуйте начать настройку .

Управляйте учетными данными самостоятельно [Python]

Во многих случаях у вас не будет команды gcloud для создания токена доступа из идентификатора клиента ( client_secret.json ). Google предоставляет библиотеки на многих языках, чтобы вы могли управлять этим процессом в своем приложении. В этом разделе демонстрируется процесс на Python. Эквивалентные примеры подобной процедуры для других языков доступны в документации API диска.

1. Установите необходимые библиотеки

Установите клиентскую библиотеку Google для Python и клиентскую библиотеку PaLM.

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

pip install google-generativeai

2. Напишите диспетчер учетных данных

В своем рабочем каталоге создайте файл с именем load_creds.py . Начните со следующего кода, чтобы преобразовать client_secret.json в токен, который можно использовать с 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

Чтобы свести к минимуму количество раз, когда вам придется щелкать экраны авторизации, если кешируется файл token.json , который можно повторно использовать позже, или обновлять, если срок его действия истек.

3. Напишите свою программу

Теперь создайте свой 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. Запустите вашу программу

В своем рабочем каталоге запустите образец:

python script.py

При первом запуске сценария он открывает окно браузера и предлагает авторизовать доступ.

  1. Если вы еще не вошли в свою учетную запись Google, вам будет предложено войти в нее. Если вы вошли в несколько учетных записей, обязательно выберите учетную запись, которую вы установили в качестве «Тестовой учетной записи» при настройке проекта.

  2. Информация об авторизации хранится в файловой системе, поэтому при следующем запуске примера кода вам не будет предложено авторизоваться.

Вы успешно настроили аутентификацию.