OAuth ile kimlik doğrulama hızlı başlangıç kılavuzu

PaLM API, modelleri kendi verilerinizde ayarlamanıza olanak tanır. Bu, verileriniz ve hassas hale getirilmiş modelleriniz olduğu için API Anahtarlarından daha sıkı erişim denetimleri gerektirir.

Bu hızlı başlangıç kılavuzu, test ortamı için uygun olan basitleştirilmiş bir kimlik doğrulama yaklaşımı kullanır. Üretim ortamında uygulamanız için uygun olan erişim kimlik bilgilerini seçmeden önce kimlik doğrulama ve yetkilendirme hakkında bilgi edinin.

Hedefler

  • OAuth için bulut projenizi ayarlama
  • application-default-credentials ayarlarını yapma
  • gcloud auth kullanmak yerine programınızdaki kimlik bilgilerini yönetin

Ön koşullar

Bu hızlı başlangıç kılavuzunu çalıştırmak için şunlara ihtiyacınız vardır:

Bulut projenizi oluşturun

Bu hızlı başlangıç kılavuzunu tamamlamak için önce bulut projenizi ayarlamanız gerekir.

1. API'yi etkinleştirme

Google API'lerini kullanmadan önce bir Google Cloud projesinde etkinleştirmeniz gerekir.

Ardından, projenin OAuth izin ekranını yapılandırın ve kendinizi test kullanıcısı olarak ekleyin. Cloud projeniz için bu adımı zaten tamamladıysanız sonraki bölüme geçin.

  1. Google Cloud konsolunda Menü > API'ler ve Hizmetler > OAuth izin ekranı'na gidin.

    OAuth izin ekranına git

  2. Uygulamanız için Harici kullanıcı türünü seçin, ardından Oluştur'u tıklayın.

  3. Uygulama kayıt formunu doldurun (çoğu alanı boş bırakabilirsiniz) ardından Kaydet ve Devam Et'i tıklayın.

  4. Şimdilik kapsam eklemeyi atlayıp Kaydet ve Devam Et'i tıklayabilirsiniz. İleride Google Workspace kuruluşunuzun dışında kullanmak üzere bir uygulama oluşturduğunuzda, uygulamanızın gerektirdiği yetkilendirme kapsamlarını eklemeniz ve doğrulamanız gerekir.

  5. Test kullanıcısı ekleyin:

    1. Test kullanıcıları'nın altında Kullanıcı ekle'yi tıklayın.
    2. E-posta adresinizi ve diğer yetkili test kullanıcılarınızı girip Kaydet ve Devam Et'i tıklayın.
  6. Uygulama kaydı özetinizi inceleyin. Değişiklik yapmak için Düzenle'yi tıklayın. Uygulama kaydı işlemi sorunsuz görünüyorsa Kontrol Paneline Dön'ü tıklayın.

3. Masaüstü uygulaması için kimlik bilgilerini yetkilendirme

Son kullanıcı olarak kimlik doğrulaması yapmak ve uygulamanızda kullanıcı verilerine erişmek için bir veya daha fazla OAuth 2.0 İstemci Kimliği oluşturmanız gerekir. İstemci kimliği, tek bir uygulamayı Google'ın OAuth sunucularına tanımlamak için kullanılır. Uygulamanız birden fazla platformda çalışıyorsa her platform için ayrı bir istemci kimliği oluşturmanız gerekir.

  1. Google Cloud konsolunda Menü > API'ler ve Hizmetler > Kimlik bilgileri'ne gidin.

    Kimlik Bilgileri'ne git

  2. Kimlik Bilgileri Oluştur > OAuth istemci kimliği'ni tıklayın.

  3. Uygulama türü > Masaüstü uygulaması'nı tıklayın.

  4. Ad alanına, kimlik bilgisi için bir ad yazın. Bu ad yalnızca Google Cloud konsolunda gösterilir.

  5. Oluştur'u tıklayın. Yeni İstemci Kimliğinizi ve İstemci gizli anahtarınızı gösteren OAuth istemcisi oluşturma ekranı görünür.

  6. Tamam'ı tıklayın. Yeni oluşturulan kimlik bilgisi, OAuth 2.0 İstemci Kimlikleri altında görünür.

  7. JSON dosyasını kaydetmek için indir düğmesini tıklayın. Dosya client_secret_<identifier>.json olarak kaydedilecek ve client_secret.json olarak yeniden adlandırılıp çalışma dizininize taşınacak.

Uygulama varsayılan kimlik bilgilerini ayarlayın

client_secret.json dosyasını kullanılabilir kimlik bilgilerine dönüştürmek için konumunu gcloud auth application-default login komutunun --client-id-file bağımsız değişkenine iletin.

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'

Bu eğitimdeki basitleştirilmiş proje kurulumu, "Google bu uygulamayı doğrulamadı" iletişim kutusunu tetikler. Bu normal bir durumdur. "Devam"ı seçin.

Bu işlem, oluşturulan jetonu iyi bilinen bir konuma yerleştirir, böylece gcloud veya istemci kitaplıkları tarafından erişilebilir.

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'

Uygulama varsayılan kimlik bilgilerini (ACD) ayarladıktan sonra, çoğu dildeki istemci kitaplıklarının bulunması için çok az yardım gerekir veya yardım gerekmez.

Kıvırcık

Bunun işe yarayıp yaramadığını test etmenin en hızlı yolu, curl kullanarak geri kalan API'ye erişmek için API'yi kullanmaktır:

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'da istemci kitaplıkları, bunları otomatik olarak bulur:

pip install google-generativeai

Test etmek için kullanabileceğiniz basit bir komut dosyası:

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

Beklenen çıkış:

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

Node.js

Bu kimlik bilgilerini Node.js istemci kitaplığıyla kullanmak için GOOGLE_APPLICATION_CREDENTIALS ortam değişkenini ayarlayın.

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

İstemci kitaplığını yükleyin:

npm install @google-ai/generativelanguage

Minimal bir komut dosyası oluşturun:

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

Çıktısı şöyle olmalıdır:

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

Sonraki adımlar

Bu işe yararsa modeli kendiniz üzerinde ayarlamalar yapmaya hazırsınız demektir. İnce ayarları yapmaya başlama'yı deneyin.

Kimlik bilgilerini kendiniz yönetme [Python]

Çoğu durumda, erişim jetonunu istemci kimliğinden (client_secret.json) oluşturmak için gcloud komutunu kullanamazsınız. Google, bu işlemi uygulamanızda yönetebilmeniz için birçok dilde kitaplık sağlar. Bu bölümde python'daki süreç gösterilmektedir. Bu tür prosedürün diğer diller için eşdeğer örneklerini drive api dokümanlarında bulabilirsiniz.

1. Gerekli kitaplıkları yükleyin

Python için Google istemci kitaplığını ve PaLM istemci kitaplığını yükleyin.

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

pip install google-generativeai

2. Kimlik bilgisi yöneticisini yazma

Çalışma dizininizde load_creds.py adlı bir dosya oluşturun. client_secret.json kodunu genai.configure ile kullanılabilen bir jetona dönüştürmek için aşağıdaki kodla başlayın:

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

Daha sonra yeniden kullanabileceği bir token.json dosyasını önbelleğe alırsa veya süresi dolduysa sayfayı yenileyerek yetkilendirme ekranlarını kaç kez tıklamanız gerektiğini en aza indirmek için.

3. Programınızı yazma

Şimdi script.py oluşturun:

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. Programınızı çalıştırma

Çalışma dizininizde örneği çalıştırın:

python script.py

Komut dosyası ilk kez çalıştırıldığında bir tarayıcı penceresi açılır ve erişimi yetkilendirmeniz istenir.

  1. Google Hesabınızda henüz oturum açmadıysanız oturum açmanız istenir. Birden fazla hesapta oturum açtıysanız projenizi yapılandırırken "Test Hesabı" olarak belirlediğiniz hesabı seçtiğinizden emin olun.

  2. Yetkilendirme bilgileri dosya sisteminde depolanır. Böylece, örnek kodu bir sonraki çalıştırmanızda yetkilendirme istenmez.

Kimlik doğrulamayı başarıyla kurdunuz.