المصادقة باستخدام التشغيل السريع لبروتوكول OAuth

تتيح لك PaLM API ضبط النماذج على بياناتك الخاصة. بما أنها بياناتك ونماذجك التي تم ضبطها، تحتاج إلى عناصر تحكّم في الوصول أكثر صرامة من مفاتيح واجهة برمجة التطبيقات.

يستخدم البدء السريع هذا أسلوب مصادقة مبسطًا مناسبًا لبيئة الاختبار. بالنسبة إلى بيئة الإنتاج، تعرَّف على المصادقة والتفويض قبل اختيار بيانات اعتماد الوصول المناسبة لتطبيقك.

الأهداف

  • إعداد مشروعك على السحابة الإلكترونية لبروتوكول OAuth
  • إعداد بيانات الاعتماد التلقائية للتطبيق
  • إدارة بيانات الاعتماد في برنامجك بدلاً من استخدام gcloud auth

المتطلبات الأساسية

لتشغيل دليل البدء السريع هذا، تحتاج إلى:

إعداد مشروعك على السحابة الإلكترونية

لإكمال عملية البدء السريع هذه، عليك أولاً إعداد مشروعك على السحابة الإلكترونية.

1- تفعيل واجهة برمجة التطبيقات

قبل استخدام Google APIs، عليك تفعيلها في مشروع على Google Cloud.

بعد ذلك، عليك ضبط شاشة طلب الموافقة المتعلّقة ببروتوكول OAuth في المشروع وإضافة نفسك كمستخدم تجريبي. إذا سبق أن أكملت هذه الخطوة لمشروعك على Google Cloud، انتقِل إلى القسم التالي.

  1. في وحدة تحكُّم Google Cloud، انتقِل إلى القائمة > واجهات برمجة التطبيقات والخدمات > شاشة موافقة OAuth.

    الانتقال إلى شاشة طلب الموافقة المتعلّقة ببروتوكول OAuth

  2. اختَر نوع المستخدم خارجي لتطبيقك، ثم انقر على إنشاء.

  3. أكمل نموذج تسجيل التطبيق (يمكنك ترك معظم الحقول فارغة)، ثم انقر على حفظ ومتابعة.

  4. في الوقت الحالي، يمكنك تخطّي إضافة النطاقات والنقر على حفظ ومتابعة. في المستقبل، عند إنشاء تطبيق للاستخدام خارج مؤسستك على Google Workspace، عليك إضافة نطاقات التفويض التي يتطلبها تطبيقك والتحقّق منها.

  5. إضافة مستخدمين تجريبيين:

    1. ضمن اختبار المستخدمين، انقر على إضافة مستخدمين.
    2. أدخِل عنوان بريدك الإلكتروني وأي مستخدمين تجريبيين معتمدين آخرين، ثم انقر على حفظ ومتابعة.
  6. مراجعة ملخص تسجيل التطبيق. لإجراء تغييرات، انقر على تعديل. إذا كان تسجيل التطبيق يبدو على ما يرام، انقر على الرجوع إلى لوحة البيانات.

3. تفويض بيانات الاعتماد لتطبيق سطح المكتب

للمصادقة كمستخدم نهائي والوصول إلى بيانات المستخدم في تطبيقك، عليك إنشاء معرّف عميل OAuth 2.0 واحد أو أكثر. يُستخدم معرّف العميل لتحديد تطبيق واحد لخوادم OAuth من Google. إذا كان تطبيقك يعمل على أنظمة أساسية متعددة، يجب عليك إنشاء معرِّف عميل منفصل لكل نظام أساسي.

  1. في وحدة تحكُّم Google Cloud، انتقِل إلى القائمة > واجهات برمجة التطبيقات والخدمات > بيانات الاعتماد.

    الانتقال إلى "بيانات الاعتماد"

  2. انقر على إنشاء بيانات اعتماد > معرِّف عميل OAuth.

  3. انقر على نوع التطبيق > تطبيق سطح المكتب.

  4. في الحقل الاسم، اكتب اسمًا لبيانات الاعتماد. لا يظهر هذا الاسم إلا في وحدة التحكم في Google Cloud.

  5. انقر على إنشاء. ستظهر شاشة عميل OAuth تم إنشاؤها وتعرض معرّف العميل وسر العميل الجديد.

  6. انقر على OK (حسنًا). تظهر بيانات الاعتماد التي تم إنشاؤها حديثًا ضمن معرّفات عميل 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 من هذا التطبيق". هذا أمر طبيعي، واختر "continue" (متابعة).

يضع هذا الرمز المميّز الناتج في مكان معروف حتى يمكن الوصول إليه من خلال 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)، تحتاج مكتبات العملاء بمعظم اللغات إلى مساعدة بسيطة أو لا تحتاج إلى أي مساعدة للعثور عليها.

تمويج

أسرع طريقة لاختبار ما إذا كان هذا يعمل بشكل صحيح هي استخدامه للوصول إلى بقية واجهة برمجة التطبيقات باستخدام 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 مكتبات بعدة لغات لتتمكّن من إدارة هذه العملية داخل تطبيقك. يوضّح هذا القسم عملية ذلك في لغة بايثون. هناك أمثلة مماثلة لهذا النوع من الإجراءات، للغات الأخرى، المتوفرة في وثائق واجهة برمجة تطبيقات Drive

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. يتم تخزين معلومات التفويض في نظام الملفات، لذا في المرة التالية التي تقوم فيها بتشغيل نموذج التعليمات البرمجية، لا تتم مطالبتك بالتفويض.

لقد تم إعداد المصادقة بنجاح.