Agent bereitstellen

So stellen Sie einen Agenten in der Vertex AI Agent Engine bereit:

  1. Konfigurieren Sie Ihren Agenten für die Bereitstellung.
  2. Erstellen Sie eine AgentEngine-Instanz.
  3. Dem bereitgestellten Agenten Berechtigungen erteilen
  4. Holen Sie sich die Ressourcen-ID des Kundenservicemitarbeiters ab.

Sie können auch die Vorlagen des Agent Starter Pack für die Bereitstellung verwenden.

Hinweise

Bevor Sie einen Agenten bereitstellen, müssen Sie die folgenden Aufgaben erledigt haben:

  1. Richten Sie die Umgebung ein.
  2. Entwickeln Sie einen Agenten.

Kundenservicemitarbeiter für die Bereitstellung konfigurieren

Sie können die folgenden optionalen Konfigurationen vornehmen:

Paketanforderungen definieren

Geben Sie die Pakete an, die der Kundenservicemitarbeiter für die Bereitstellung benötigt. Die Pakete können entweder eine Liste der von pip zu installierenden Elemente oder der Pfad zu einer Datei sein, die dem Format für Anforderungsdateien entspricht. Beachten Sie die folgenden Best Practices:

  1. Paketversionen für reproduzierbare Builds anpinnen Zu den gängigen Paketen, die Sie im Blick behalten sollten, gehören: google-cloud-aiplatform, cloudpickle, langchain, langchain-core, langchain-google-vertexai und pydantic.

  2. Minimieren Sie die Anzahl der Abhängigkeiten in Ihrem Agenten. Dadurch wird die Anzahl der funktionsgefährdenden Änderungen beim Aktualisieren Ihrer Abhängigkeiten und Ihres Agents reduziert.

Wenn der Agent keine Abhängigkeiten hat, können Sie requirements auf None festlegen:

requirements = None

Wenn der Agent eine frameworkspezifische Vorlage verwendet, sollten Sie beim Entwickeln des Agents die importierte SDK-Version angeben, z. B. 1.77.0.

ADK

requirements = [
    "google-cloud-aiplatform[agent_engines,adk]",
    # any other dependencies
]

LangChain

requirements = [
    "google-cloud-aiplatform[agent_engines,langchain]",
    # any other dependencies
]

LangGraph

requirements = [
    "google-cloud-aiplatform[agent_engines,langgraph]",
    # any other dependencies
]

AG2

requirements = [
    "google-cloud-aiplatform[agent_engines,ag2]",
    # any other dependencies
]

LlamaIndex

Die folgende Anleitung gilt für die LlamaIndex-Abfragepipeline:

requirements = [
    "google-cloud-aiplatform[agent_engines,llama_index]",
    # any other dependencies
]

Mit dem Paket requirements haben Sie außerdem folgende Möglichkeiten:

  • Obergrenze für die Version eines bestimmten Pakets festlegen oder anpinnen (z. B. google-cloud-aiplatform):

    requirements = [
        # See https://pypi.org/project/google-cloud-aiplatform for the latest version.
        "google-cloud-aiplatform[agent_engines,adk]==1.88.0",
    ]
    
  • Fügen Sie zusätzliche Pakete und Einschränkungen hinzu:

    requirements = [
        "google-cloud-aiplatform[agent_engines,adk]==1.88.0",
        "cloudpickle==3.0", # new
    ]
    
  • Sie können auf die Version eines Pakets in einem GitHub-Zweig oder einer GitHub-Pull-Anfrage verweisen:

    requirements = [
        "google-cloud-aiplatform[agent_engines,adk] @ git+https://github.com/googleapis/python-aiplatform.git@BRANCH_NAME", # new
        "cloudpickle==3.0",
    ]
    
  • Bewahren Sie die Liste der Anforderungen in einer Datei auf (z. B. path/to/requirements.txt):

    requirements = "path/to/requirements.txt"
    

    Dabei ist path/to/requirements.txt eine Textdatei, die dem Format für Anforderungendateien entspricht. Beispiel:

    google-cloud-aiplatform[agent_engines,adk]
    cloudpickle==3.0
    

Zusätzliche Pakete definieren

Sie können lokale Dateien oder Verzeichnisse angeben, die lokale erforderliche Python-Quelldateien enthalten. Im Vergleich zu Paketanforderungen können Sie so von Ihnen entwickelte private Dienstprogramme verwenden, die sonst nicht auf PyPI oder GitHub verfügbar sind.

Wenn der Agent keine zusätzlichen Pakete benötigt, können Sie extra_packages auf None festlegen:

extra_packages = None

Mit extra_packages können Sie außerdem Folgendes tun:

  • Fügen Sie eine einzelne Datei (z. B. agents/agent.py) ein:

    extra_packages = ["agents/agent.py"]
    
  • Fügen Sie die Dateien eines gesamten Verzeichnisses (z. B. agents/) ein:

    extra_packages = ["agents"] # directory that includes agents/agent.py
    
  • Geben Sie Python-Wheel-Binärdateien an (z. B. path/to/python_package.whl):

    requirements = [
        "google-cloud-aiplatform[agent_engines,adk]",
        "cloudpickle==3.0",
        "python_package.whl",  # install from the whl file that was uploaded
    ]
    extra_packages = ["path/to/python_package.whl"]  # bundle the whl file for uploading
    

Umgebungsvariablen definieren

Wenn es Umgebungsvariablen gibt, von denen Ihr Agent abhängt, können Sie sie im Argument env_vars= angeben. Wenn der Agent nicht von Umgebungsvariablen abhängt, können Sie ihn auf None festlegen:

env_vars = None

Es gibt verschiedene Möglichkeiten, die Umgebungsvariablen anzugeben:

Wörterbuch

env_vars = {
  "VARIABLE_1": "VALUE_1",
  "VARIABLE_2": "VALUE_2",
}
# These environment variables will become available in Vertex AI Agent Engine
# through `os.environ`, e.g.
#
#   import os
#   os.environ["VARIABLE_1"] # will have the value "VALUE_1"
#
# and
#
#   os.environ["VARIABLE_2"] # will have the value "VALUE_2"
#

Wenn Sie auf ein Secret in Secret Manager verweisen und es als Umgebungsvariable (z. B. CLOUD_SQL_CREDENTIALS_SECRET) verfügbar machen möchten, folgen Sie zuerst der Anleitung zum Erstellen eines Secrets für CLOUD_SQL_CREDENTIALS_SECRET in Ihrem Projekt, bevor Sie die Umgebungsvariablen so angeben:

env_vars = {
  # ... (other environment variables and their values)
  "CLOUD_SQL_CREDENTIALS_SECRET": {"secret": "SECRET_ID", "version": "SECRET_VERSION_ID"},
}

Dabei gilt:

  • SECRET_VERSION_ID ist die ID der Secret-Version.
  • SECRET_ID ist die ID des Secrets.

In deinem Kundenservicemitarbeiter-Code kannst du dann so auf das Secret verweisen:

secret = os.environ.get("CLOUD_SQL_CREDENTIALS_SECRET")
if secret:
  # Secrets are stored as strings, so use json.loads to parse JSON payloads.
  return json.loads(secret)

Liste

env_vars = ["VARIABLE_1", "VARIABLE_2"]
# This corresponds to the following code snippet:
#
#   import os
#
#   env_vars = {
#     "VARIABLE_1": os.environ["VARIABLE_1"],
#     "VARIABLE_2": os.environ["VARIABLE_2"],
#   }

Cloud Storage-Ordner definieren

Staging-Artefakte werden überschrieben, wenn sie einem vorhandenen Ordner in einem Cloud Storage-Bucket entsprechen. Bei Bedarf können Sie den Cloud Storage-Ordner für die Staging-Artefakte angeben. Sie können gcs_dir_name auf None festlegen, wenn Sie damit einverstanden sind, dass die Dateien im Standardordner möglicherweise überschrieben werden:

gcs_dir_name = None

Um das Überschreiben der Dateien zu vermeiden (z. B. für verschiedene Umgebungen wie Entwicklung, Staging und Produktion), können Sie einen entsprechenden Ordner einrichten und angeben, in welchem Ordner das Artefakt bereitgestellt werden soll:

gcs_dir_name = "dev" # or "staging" or "prod"

Wenn Sie Kollisionen vermeiden möchten oder müssen, können Sie eine zufällige uuid generieren:

import uuid
gcs_dir_name = str(uuid.uuid4())

Ressourcenmetadaten konfigurieren

Sie können Metadaten für die ReasoningEngine-Ressource festlegen:

display_name = "Currency Exchange Rate Agent (Staging)"

description = """
An agent that has access to tools for looking up the exchange rate.

If you run into any issues, please contact the dev team.
"""

Eine vollständige Liste der Parameter finden Sie in der API-Referenz.

AgentEngine-Instanz erstellen

Wenn Sie den Agenten in Vertex AI bereitstellen möchten, übergeben Sie mit agent_engines.create das local_agent-Objekt zusammen mit allen optionalen Konfigurationen:

remote_agent = agent_engines.create(
    local_agent,                    # Optional.
    requirements=requirements,      # Optional.
    extra_packages=extra_packages,  # Optional.
    gcs_dir_name=gcs_dir_name,      # Optional.
    display_name=display_name,      # Optional.
    description=description,        # Optional.
    env_vars=env_vars,              # Optional.
)

Die Bereitstellung dauert einige Minuten. Währenddessen werden im Hintergrund die folgenden Schritte ausgeführt:

  1. Lokal wird ein Paket mit den folgenden Artefakten generiert:

  2. Das Bundle wird zum Staging der Artefakte in Cloud Storage (in den entsprechenden Ordner) hochgeladen.

  3. Die Cloud Storage-URIs für die jeweiligen Artefakte werden in der PackageSpec angegeben.

  4. Der Vertex AI Agent Engine-Dienst empfängt die Anfrage, erstellt Container und startet HTTP-Server im Backend.

Die Bereitstellungslatenz hängt von der Gesamtzeit ab, die für die Installation der erforderlichen Pakete benötigt wird. Nach der Bereitstellung entspricht remote_agent einer Instanz von local_agent, die auf Vertex AI ausgeführt wird und abgefragt oder gelöscht werden kann. Sie ist unabhängig von lokalen Instanzen des Agents.

Dem bereitgestellten Agent Berechtigungen gewähren

Wenn dem bereitgestellten Agenten zusätzliche Berechtigungen gewährt werden müssen, folge der Anleitung unter Berechtigungen für Dienst-Agent einrichten.

Wenn Sie Secrets als Umgebungsvariablen definiert haben, müssen Sie die folgende Berechtigung gewähren:

  • Zugriffsperson für Secret Manager-Secret (roles/secretmanager.secretAccessor)

Ressourcen-ID des Kundenservicemitarbeiters abrufen

Jeder bereitgestellte Agent hat eine eindeutige Kennung. Führen Sie den folgenden Befehl aus, um die resource_name-ID für Ihren bereitgestellten Agenten abzurufen:

remote_agent.resource_name

Die Antwort sollte in etwa so aussehen:

"projects/PROJECT_NUMBER/locations/LOCATION/reasoningEngines/RESOURCE_ID"

Dabei gilt:

  • PROJECT_ID ist die Google Cloud Projekt-ID, unter der der bereitgestellte Agent ausgeführt wird.

  • LOCATION ist die Region, in der der bereitgestellte Agent ausgeführt wird.

  • RESOURCE_ID ist die ID des bereitgestellten Kundenservicemitarbeiters als reasoningEngine-Ressource.

Nächste Schritte