OAuth क्विकस्टार्ट की मदद से पुष्टि करना

PaLM API की मदद से, अपने डेटा के हिसाब से मॉडल बदले जा सकते हैं. यह आपका डेटा और आपके ट्यून किए गए मॉडल हैं. इसलिए, एपीआई-की के मुकाबले बेहतर ऐक्सेस कंट्रोल की ज़रूरत है.

यह क्विकस्टार्ट, पुष्टि करने के एक आसान तरीके का इस्तेमाल करता है. यह तरीका टेस्ट एनवायरमेंट के लिए सही है. प्रोडक्शन एनवायरमेंट के लिए, अपने ऐप्लिकेशन के लिए सही ऐक्सेस क्रेडेंशियल चुनने से पहले, पुष्टि करने और अनुमति देने के बारे में जानें.

मकसद

  • OAuth के लिए अपना क्लाउड प्रोजेक्ट सेट अप करना
  • ऐप्लिकेशन-डिफ़ॉल्ट-क्रेडेंशियल सेट अप करें
  • gcloud auth का इस्तेमाल करने के बजाय, अपने प्रोग्राम में क्रेडेंशियल मैनेज करें

ज़रूरी शर्तें

इस क्विकस्टार्ट को चलाने के लिए, आपको इनकी ज़रूरत होगी:

अपना क्लाउड प्रोजेक्ट सेट अप करें

इस क्विकस्टार्ट को पूरा करने के लिए, आपको सबसे पहले अपना क्लाउड प्रोजेक्ट सेट अप करना होगा.

1. एपीआई चालू करें

Google API का इस्तेमाल करने से पहले, आपको उन्हें Google Cloud प्रोजेक्ट में चालू करना होगा.

इसके बाद, प्रोजेक्ट की OAuth सहमति वाली स्क्रीन को कॉन्फ़िगर करें और खुद को टेस्ट उपयोगकर्ता के तौर पर जोड़ें. अगर आपने अपने Cloud प्रोजेक्ट के लिए यह चरण पहले ही पूरा कर लिया है, तो सीधे अगले सेक्शन पर जाएं.

  1. Google Cloud Console में, मेन्यू > एपीआई और सेवाएं > OAuth सहमति स्क्रीन पर जाएं.

    ऐसी स्क्रीन पर जाएं जहां OAuth के लिए सहमति दी जाती है

  2. अपने ऐप्लिकेशन के लिए, बाहरी उपयोगकर्ता टाइप चुनें. इसके बाद, बनाएं पर क्लिक करें.

  3. ऐप्लिकेशन रजिस्ट्रेशन फ़ॉर्म भरें (ज़्यादातर फ़ील्ड को खाली छोड़ा जा सकता है). इसके बाद, सेव करें और जारी रखें पर क्लिक करें.

  4. फ़िलहाल, स्कोप जोड़ने के बजाय, सेव करें और जारी रखें पर क्लिक करें. आने वाले समय में, जब Google Workspace के संगठन से बाहर इस्तेमाल करने के लिए ऐप्लिकेशन बनाया जाएगा, तो आपको अनुमति वाले ऐसे स्कोप जोड़ने और उनकी पुष्टि करने की ज़रूरत होगी जो आपके ऐप्लिकेशन को चाहिए.

  5. टेस्ट उपयोगकर्ताओं को जोड़ें:

    1. उपयोगकर्ताओं की जांच करें सेक्शन में, उपयोगकर्ता जोड़ें पर क्लिक करें.
    2. अपना ईमेल पता और कोई अन्य अनुमति पा चुके टेस्ट उपयोगकर्ता डालें. इसके बाद, सेव करें और जारी रखें पर क्लिक करें.
  6. अपने ऐप्लिकेशन रजिस्ट्रेशन की खास जानकारी की समीक्षा करें. बदलाव करने के लिए, बदलाव करें पर क्लिक करें. अगर ऐप्लिकेशन रजिस्ट्रेशन ठीक लगता है, तो डैशबोर्ड पर वापस जाएं पर क्लिक करें.

3. डेस्कटॉप ऐप्लिकेशन के लिए क्रेडेंशियल की अनुमति देना

असली उपयोगकर्ता के तौर पर पुष्टि करने और अपने ऐप्लिकेशन में उपयोगकर्ता का डेटा ऐक्सेस करने के लिए, आपको एक या उससे ज़्यादा OAuth 2.0 क्लाइंट आईडी बनाने होंगे. Client-ID का इस्तेमाल Google के OAuth सर्वर पर किसी एक ऐप्लिकेशन की पहचान करने के लिए किया जाता है. अगर आपका ऐप्लिकेशन एक से ज़्यादा प्लैटफ़ॉर्म पर काम करता है, तो आपको हर प्लैटफ़ॉर्म के लिए एक अलग क्लाइंट आईडी बनाना होगा.

  1. Google Cloud Console में, मेन्यू > एपीआई और सेवाएं > क्रेडेंशियल पर जाएं.

    क्रेडेंशियल पर जाएं

  2. क्रेडेंशियल बनाएं > OAuth क्लाइंट आईडी पर क्लिक करें.

  3. ऐप्लिकेशन टाइप > डेस्कटॉप ऐप्लिकेशन पर क्लिक करें.

  4. नाम फ़ील्ड में, क्रेडेंशियल के लिए कोई नाम लिखें. यह नाम सिर्फ़ Google Cloud कंसोल में दिखता है.

  5. बनाएं पर क्लिक करें. अब OAuth क्लाइंट की बनाई हुई स्क्रीन दिखेगी, जो आपका नया क्लाइंट आईडी और क्लाइंट सीक्रेट दिखाती है.

  6. ठीक है पर क्लिक करें. नया क्रेडेंशियल, OAuth 2.0 क्लाइंट आईडी में दिखता है.

  7. JSON फ़ाइल सेव करने के लिए, 'डाउनलोड करें' बटन पर क्लिक करें. इसे client_secret_<identifier>.json के तौर पर सेव किया जाएगा और इसका नाम बदलकर client_secret.json कर दिया जाएगा. इसके बाद, इसे आपकी वर्किंग डायरेक्ट्री में ट्रांसफ़र कर दिया जाएगा.

ऐप्लिकेशन के डिफ़ॉल्ट क्रेडेंशियल सेट अप करें

client_secret.json फ़ाइल को इस्तेमाल किए जा सकने वाले क्रेडेंशियल में बदलने के लिए, उसकी जगह की जानकारी को gcloud auth application-default login कमांड के --client-id-file तर्क में पास करें.

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'

ऐप्लिकेशन के डिफ़ॉल्ट क्रेडेंशियल (एसीडी) को सेट करने के बाद, ज़्यादातर भाषाओं में मौजूद क्लाइंट लाइब्रेरी को ढूंढने में कोई मदद नहीं मिलती.

कर्ल

यह काम कर रहा है या नहीं, यह जांचने का सबसे तेज़ तरीका यह है कि 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

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]

कई मामलों में, आपके पास Client-ID (client_secret.json) से ऐक्सेस टोकन बनाने के लिए gcloud कमांड उपलब्ध नहीं होगा. Google कई भाषाओं में लाइब्रेरी उपलब्ध कराता है, ताकि आप अपने ऐप्लिकेशन में उस प्रोसेस को मैनेज कर सकें. यह सेक्शन, Python में प्रोसेस को दिखाता है. दूसरी भाषाओं के लिए, इस तरह की प्रोसेस के मिलते-जुलते उदाहरण, drive api दस्तावेज़ में उपलब्ध हैं

1. ज़रूरी लाइब्रेरी इंस्टॉल करें

Python के लिए Google क्लाइंट लाइब्रेरी और 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. अनुमति देने की जानकारी फ़ाइल सिस्टम में सेव की जाती है, इसलिए अगली बार सैंपल कोड चलाने पर, आपको अनुमति देने के लिए नहीं कहा जाएगा.

आपने पुष्टि करने का तरीका सेट अप कर लिया है.