אמת

כדי להשתמש בספריות Python של OpenAI, צריך להתקין את OpenAI SDK:

pip install openai

כדי לבצע אימות באמצעות Chat Completions API, אפשר לשנות את הגדרת הלקוח או את הגדרת הסביבה כדי להשתמש באימות של Google ובנקודת קצה של Agent Platform. בוחרים את השיטה הנוחה ביותר ופועלים לפי השלבים להגדרה, בהתאם לכך שרוצים להפעיל מודלים של Gemini או מודלים של Model Garden שפרסתם בעצמכם.

כדי להשתמש במודלים מסוימים ב-Model Garden ובמודלים נתמכים של Hugging Face, צריך קודם לפרוס אותם לנקודת קצה של Gemini Enterprise Agent Platform כדי שיוכלו להכניס לשימוש בסביבת הייצור בקשות. כשקוראים למודלים האלה שנפרסו באופן עצמאי מ-Chat Completions API, צריך לציין את מזהה נקודת הקצה. כדי לראות את רשימת נקודות הקצה הקיימות של Agent Platform, משתמשים בפקודה gcloud ai endpoints list.

הגדרת לקוח

כדי לקבל פרטי כניסה לחשבון Google באופן פרוגרמטי ב-Python, אפשר להשתמש ב-google-auth Python SDK:

pip install google-auth requests

Python

לפני שמנסים את הדוגמה הזו, צריך לפעול לפי Pythonההוראות להגדרה במאמר מדריך למתחילים של Agent Platform באמצעות ספריות לקוח.

כדי לבצע אימות ב-Agent Platform, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לסביבת פיתוח מקומית.

import openai

from google.auth import default
import google.auth.transport.requests

# TODO(developer): Update and un-comment below lines
# project_id = "PROJECT_ID"
# location = "us-central1"

# Programmatically get an access token
credentials, _ = default(scopes=["https://www.googleapis.com/auth/cloud-platform"])
credentials.refresh(google.auth.transport.requests.Request())
# Note: the credential lives for 1 hour by default (https://cloud.google.com/docs/authentication/token-types#at-lifetime); after expiration, it must be refreshed.

##############################
# Choose one of the following:
##############################

# If you are calling a Gemini model, set the ENDPOINT_ID variable to use openapi.
ENDPOINT_ID = "openapi"

# If you are calling a self-deployed model from Model Garden, set the
# ENDPOINT_ID variable and set the client's base URL to use your endpoint.
# ENDPOINT_ID = "YOUR_ENDPOINT_ID"

# OpenAI Client
client = openai.OpenAI(
    base_url=f"https://{location}-aiplatform.googleapis.com/v1/projects/{project_id}/locations/{location}/endpoints/{ENDPOINT_ID}",
    api_key=credentials.token,
)

כברירת מחדל, אסימוני גישה לחשבונות שירות תקפים למשך שעה אחת. אתם יכולים להאריך את תוקף טוקני הגישה של חשבון השירות או לרענן את הטוקן מעת לעת ולעדכן את המשתנה openai.api_key.

משתני סביבה

התקינו את ה-CLI של Google Cloud. ספריית OpenAI יכולה לקרוא את משתני הסביבה OPENAI_API_KEY ו-OPENAI_BASE_URL כדי לשנות את האימות ואת נקודת הקצה בלקוח ברירת המחדל שלה. מגדירים את המשתנים הבאים:

$ export PROJECT_ID=PROJECT_ID
$ export LOCATION=LOCATION
$ export OPENAI_API_KEY="$(gcloud auth application-default print-access-token)"

כדי להפעיל מודל Gemini, מגדירים את המשתנה MODEL_ID ומשתמשים בנקודת הקצה openapi:

$ export MODEL_ID=MODEL_ID
$ export OPENAI_BASE_URL="https://${LOCATION}-aiplatform.googleapis.com/v1beta1/projects/${PROJECT_ID}/locations/${LOCATION}/endpoints/openapi"

כדי להתקשר למודל שפרסתם בעצמכם מ-Model Garden, צריך להגדיר את המשתנה ENDPOINT ולהשתמש בו בכתובת ה-URL:

$ export ENDPOINT=ENDPOINT_ID
$ export OPENAI_BASE_URL="https://${LOCATION}-aiplatform.googleapis.com/v1beta1/projects/${PROJECT_ID}/locations/${LOCATION}/endpoints/${ENDPOINT}"

לאחר מכן, מאתחלים את הלקוח:

client = openai.OpenAI()

‫Gemini Chat Completions API משתמש ב-OAuth כדי לבצע אימות באמצעות אסימון גישה לטווח קצר. כברירת מחדל, אסימוני גישה לחשבונות שירות תקפים למשך שעה אחת. אתם יכולים להאריך את תוקף טוקני הגישה של חשבון השירות או לרענן את הטוקן מעת לעת ולעדכן את המשתנה openai.api_key.

רענון פרטי הכניסה

בדוגמה הבאה אפשר לראות איך מרעננים את פרטי הכניסה באופן אוטומטי לפי הצורך:

Python

from typing import Any

import google.auth
import google.auth.transport.requests
import openai


class OpenAICredentialsRefresher:
    def __init__(self, **kwargs: Any) -> None:
        # Set a placeholder key here
        self.client = openai.OpenAI(**kwargs, api_key="PLACEHOLDER")
        self.creds, self.project = google.auth.default(
            scopes=["https://www.googleapis.com/auth/cloud-platform"]
        )

    def __getattr__(self, name: str) -> Any:
        if not self.creds.valid:
            self.creds.refresh(google.auth.transport.requests.Request())

            if not self.creds.valid:
                raise RuntimeError("Unable to refresh auth")

            self.client.api_key = self.creds.token
        return getattr(self.client, name)



    # TODO(developer): Update and un-comment below lines
    # project_id = "PROJECT_ID"
    # location = "us-central1"

    client = OpenAICredentialsRefresher(
        base_url=f"https://{location}-aiplatform.googleapis.com/v1/projects/{project_id}/locations/{location}/endpoints/openapi",
    )

    response = client.chat.completions.create(
        model="google/gemini-2.0-flash-001",
        messages=[{"role": "user", "content": "Why is the sky blue?"}],
    )

    print(response)

המאמרים הבאים