Agent bereitstellen
Mit Sammlungen den Überblick behalten
Sie können Inhalte basierend auf Ihren Einstellungen speichern und kategorisieren.
Für die Bereitstellung eines KI-Agenten in Vertex AI Agent Engine stehen zwei primäre Methoden zur Auswahl:
Über ein Agent-Objekt bereitstellen: Ideal für die interaktive Entwicklung in Umgebungen wie Colab, da die Bereitstellung von local_agent-Objekten im Arbeitsspeicher möglich ist. Diese Methode eignet sich am besten für Agents mit Strukturen, die keine komplexen, nicht serialisierbaren Komponenten enthalten.
Aus Quelldateien bereitstellen: Diese Methode eignet sich gut für automatisierte Workflows wie CI/CD-Pipelines und Infrastruktur-als-Code-Tools wie Terraform, die vollständig deklarative und automatisierte Bereitstellungen ermöglichen. Der Agent wird direkt aus lokalem Quellcode bereitgestellt und es ist kein Cloud Storage-Bucket erforderlich.
(Optional) Agent für die Bereitstellung konfigurieren
Sie können die folgenden optionalen Konfigurationen für Ihren Agent vornehmen:
Paketanforderungen definieren
Geben Sie die Gruppe von Paketen an, die für die Bereitstellung des Agents erforderlich sind. Die Gruppe von Paketen kann entweder eine Liste von Elementen sein, die von pip installiert werden sollen, oder der Pfad zu einer Datei, die dem Format der Anforderungsdatei entspricht.
Beachten Sie die folgenden Best Practices:
Pinnen Sie Ihre Paketversionen für reproduzierbare Builds. 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.
Minimieren Sie die Anzahl der Abhängigkeiten in Ihrem Agent. 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 setzen:
requirements=None
Wenn der Agent eine frameworkspezifische Vorlage verwendet, sollten Sie bei der Entwicklung des Agents die importierte SDK-Version angeben (z. B. 1.112.0).
Sie können lokale Dateien oder Verzeichnisse einfügen, die erforderliche lokale Python-Quelldateien enthalten. Im Vergleich zu Paketanforderungen können Sie so private Dienstprogramme verwenden, die Sie entwickelt haben und die sonst nicht auf PyPI oder GitHub verfügbar sind.
Wenn für den Agent keine zusätzlichen Pakete erforderlich sind, können Sie extra_packages auf None festlegen:
extra_packages=None
Mit extra_packages haben Sie auch folgende Möglichkeiten:
Einzelne Datei einfügen (z. B. agents/agent.py):
extra_packages=["agents/agent.py"]
Fügen Sie die Dateien eines gesamten Verzeichnisses ein (z. B. agents/):
extra_packages=["agents"]# directory that includes agents/agent.py
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 Ihr Agent von Umgebungsvariablen abhängt, können Sie diese im Argument env_vars= angeben. Wenn der Agent nicht von Umgebungsvariablen abhängt, können Sie ihn auf None setzen:
env_vars=None
Es gibt verschiedene Möglichkeiten, die Umgebungsvariablen anzugeben:
Außerdem müssen Sie die Anleitung unter Identität und Berechtigungen für Ihren Agent einrichten befolgen, um Ihrem Agent die Berechtigung „Secret Manager Secret Accessor“ (roles/secretmanager.secretAccessor) zu erteilen.
Sie können Laufzeitressourcen für den Agenten festlegen, z. B. die Mindest- und Höchstanzahl von Anwendungsinstanzen, Ressourcenlimits für jeden Container und die Nebenläufigkeit für jeden Container.
min_instances: Die Mindestanzahl der Anwendungsinstanzen, die jederzeit ausgeführt werden sollen, mit einem Bereich von [0, 10]. Der Standardwert ist 1.
max_instances: Die maximale Anzahl von Anwendungsinstanzen, die gestartet werden können, um mehr Traffic zu bewältigen. Der Bereich liegt zwischen [1, 1000].
Der Standardwert ist 100. Wenn VPC-SC oder PSC-I aktiviert ist, liegt der zulässige Bereich bei [1, 100].
resource_limits: Ressourcenlimits für jeden Container. Es werden nur cpu- und memory-Schlüssel unterstützt. Der Standardwert ist {"cpu": "4", "memory": "4Gi"}.
Die einzigen unterstützten Werte für cpu sind 1, 2, 4, 6 und 8. Weitere Informationen finden Sie unter CPU-Zuweisung konfigurieren.
Die einzigen unterstützten Werte für memory sind 1Gi, 2Gi, … 32Gi.
container_concurrency: Nebenläufigkeit für jeden Container und KI-Agentenserver. Der empfohlene Wert ist 2 × cpu + 1. Der Standardwert ist 9.
remote_agent=client.agent_engines.create(agent=local_agent,config={"min_instances":1,"max_instances":10,"resource_limits":{"cpu":"4","memory":"8Gi"},"container_concurrency":9,# ... other configs})
Sie können Build-Optionen für den Agent angeben, z. B. Installationsskripts, die beim Erstellen des Container-Images des Agents ausgeführt werden sollen. Das ist nützlich, um Systemabhängigkeiten (z. B. gcloud cli, npx) oder andere benutzerdefinierte Setups zu installieren. Die Skripts werden mit Root-Berechtigungen ausgeführt.
Wenn Sie Installationsskripts verwenden möchten, erstellen Sie ein Verzeichnis mit dem Namen installation_scripts und legen Sie Ihre Shell-Skripts in diesem Verzeichnis ab:
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 nichts dagegen haben, dass die Dateien im Standardordner möglicherweise überschrieben werden:
gcs_dir_name=None
Damit die Dateien nicht überschrieben werden (z. B. für verschiedene Umgebungen wie Entwicklung, Staging und Produktion), können Sie einen entsprechenden Ordner einrichten und den Ordner angeben, in dem 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:
importuuidgcs_dir_name=str(uuid.uuid4())
Anzeigenamen definieren
Sie können den Anzeigenamen für die Ressource ReasoningEngine festlegen:
Sie können die Beschreibung der ReasoningEngine-Ressource festlegen:
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."""
Labels definieren
Sie können die Labels der ReasoningEngine-Ressource als Dictionary von Schlüssel/Wert-Stringpaaren festlegen. Hier ein Beispiel:
labels={"author":"username","version":"latest"}
Standardidentität für Agent konfigurieren
Sie können Agents, die Sie in Vertex AI Agent Engine bereitstellen, beim Erstellen des Agents mit einer eindeutigen Identität bereitstellen. Die Identität ist an die Agent-Ressourcen-ID von Vertex AI Agent Engine gebunden und unabhängig vom Agent-Framework, das Sie zum Entwickeln des Agents verwendet haben:
Sie können ein benutzerdefiniertes Dienstkonto als Identität Ihres bereitgestellten Agents konfigurieren, anstatt die Agent-Identität oder Standardidentität zu verwenden.
Geben Sie dazu die E-Mail-Adresse Ihres benutzerdefinierten Dienstkontos als service_account an, wenn Sie die Agent Engine-Instanz erstellen oder aktualisieren, z. B.:
# Create a new instanceclient.agent_engines.create(agent=local_agent,config={"service_account":"my-custom-service-account@my-project.iam.gserviceaccount.com",# ...},)# Update an existing instanceresource_name="projects/{project_id}/locations/{location}/reasoningEngines/{reasoning_engine_id}"client.agent_engines.update(name=resource_name,agent=local_agent,config={"service_account":"my-new-custom-service-account@my-project.iam.gserviceaccount.com",# ...},)
Private Service Connect-Schnittstelle konfigurieren
NETWORK_ATTACHMENT ist der Name oder der vollständige Pfad Ihres Netzwerk-Anhangs. Wenn die Netzwerkverbindung in einem anderen Projekt als dem, in dem Sie Agent Engine verwenden, erstellt wird (z. B. im freigegebene VPC-Hostprojekt), müssen Sie den vollständigen Pfad der Netzwerkverbindung übergeben.
DOMAIN_SUFFIX ist der DNS-Name der privaten Cloud DNS-Zone, die Sie beim Einrichten des privaten DNS-Peerings erstellt haben.
TARGET_PROJECT ist das Projekt, in dem das VPC-Netzwerk gehostet wird. Es kann sich vom Projekt für die Netzwerkverbindung unterscheiden.
TARGET_NETWORK ist der Name des VPC-Netzwerk.
Sie können mehrere Agents so konfigurieren, dass sie entweder einen einzelnen, freigegebenen Netzwerkanhang oder eindeutige, dedizierte Netzwerkanhänge verwenden. Wenn Sie einen freigegebenen Netzwerkanhang verwenden möchten, geben Sie für jeden erstellten Agent denselben Netzwerkanhang in psc_interface_config an.
Vom Kunden verwaltete Verschlüsselungsschlüssel konfigurieren
Wenn Sie den benutzerdefinierten Schlüssel (CMEK) für Ihren Agent konfigurieren möchten, müssen Sie beim Erstellen der Agent Engine-Instanz den Schlüsselressourcennamen für den Parameter encryption_spec angeben.
# The fully qualified key namekms_key_name="projects/PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY_NAME"remote_agent=client.agent_engines.create(agent=local_agent,config={"encryption_spec":{"kms_key_name":kms_key_name},# ... other parameters},)
AgentEngine-Instanz erstellen
In diesem Abschnitt wird beschrieben, wie Sie eine AgentEngine-Instanz zum Bereitstellen eines Agents erstellen.
Wenn Sie einen Agent in Vertex AI Agent Engine bereitstellen möchten, können Sie zwischen den folgenden Methoden wählen:
Bereitstellung über ein Agent-Objekt für die interaktive Entwicklung
Bereitstellung aus Quelldateien für automatisierte, dateibasierte Workflows.
Aus einem Agent-Objekt
Um den Agent in Vertex AI bereitzustellen, verwenden Sie client.agent_engines.create, um das local_agent-Objekt zusammen mit allen optionalen Konfigurationen zu übergeben:
Das Bündel wird in Cloud Storage hochgeladen (in den entsprechenden Ordner), um die Artefakte bereitzustellen.
Die Cloud Storage-URIs für die jeweiligen Artefakte werden in der PackageSpec angegeben.
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.
Das remote_agent-Objekt entspricht einer AgentEngine-Klasse mit den folgenden Attributen:
remote_agent.api_resource mit Informationen zum bereitgestellten Agent.
Sie können auch agent.operation_schemas() aufrufen, um die Liste der Vorgänge zurückzugeben, die vom Agent unterstützt werden. Weitere Informationen finden Sie unter Unterstützte Vorgänge auflisten.
Wenn Sie aus Quelldateien in Vertex AI bereitstellen möchten, verwenden Sie client.agent_engines.create. Geben Sie dazu source_packages, entrypoint_module, entrypoint_object und class_methods im Konfigurations-Dictionary sowie andere optionale Konfigurationen an. Bei dieser Methode müssen Sie kein Agent-Objekt oder Cloud Storage-Bucket übergeben.
Die Parameter für die Bereitstellung von Inline-Quellen sind:
source_packages (erforderlich, list[str]): Eine Liste mit lokalen Datei- oder Verzeichnispfaden, die in die Bereitstellung aufgenommen werden sollen. Die Gesamtgröße der Dateien und Verzeichnisse in source_packages darf 8 MB nicht überschreiten.
entrypoint_module (erforderlich, str): Der voll qualifizierte Python-Modulname, der den Agent-Einstiegspunkt enthält (z. B. agent_dir.agent).
entrypoint_object (erforderlich, str): Der Name des aufrufbaren Objekts in der entrypoint_module, das die Agent-Anwendung darstellt (z. B. root_agent).
class_methods (erforderlich, list[dict]): Eine Liste von Dictionaries, die die verfügbaren Methoden des Agents definieren. Jedes Wörterbuch enthält die Felder name (erforderlich), api_mode (erforderlich) und parameters. Weitere Informationen zu den Methoden für einen benutzerdefinierten Agent finden Sie unter Unterstützte Vorgänge auflisten.
Beispiel:
"class_methods":[{"name":"method_name","api_mode":"",# Possible options are: "", "async", "async_stream", "stream", "bidi_stream""parameters":{"type":"object","properties":{"param1":{"type":"string","description":"Description of param1"},"param2":{"type":"integer"}},"required":["param1"]}}]```
requirements_file (Optional, str): Der Pfad zu einer pip-Anforderungsdatei in den in source_packages angegebenen Pfaden. Standardmäßig ist requirements.txt im Stammverzeichnis der verpackten Quelle festgelegt.
Die Bereitstellung dauert einige Minuten. Im Hintergrund werden dabei die folgenden Schritte ausgeführt:
Das Vertex AI SDK erstellt ein tar.gz-Archiv der in source_packages angegebenen Pfade.
Dieses Archiv wird codiert und direkt an die Vertex AI API gesendet.
Der Vertex AI Agent Engine-Dienst empfängt das Archiv, extrahiert es, installiert Abhängigkeiten aus requirements_file (falls angegeben) und startet die Agent-Anwendung mit den angegebenen entrypoint_module und entrypoint_object.
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 der Agent-Anwendung, die auf Vertex AI ausgeführt wird und abgefragt oder gelöscht werden kann.
Das remote_agent-Objekt entspricht einer AgentEngine-Klasse mit den folgenden Attributen:
remote_agent.api_resource mit Informationen zum bereitgestellten Agent.
Sie können auch agent.operation_schemas() aufrufen, um die Liste der Vorgänge zurückzugeben, die vom Agent unterstützt werden. Weitere Informationen finden Sie unter Unterstützte Vorgänge auflisten.
Im Folgenden finden Sie ein Beispiel für die Bereitstellung eines Agents aus Quellcode-Dateien:
fromgoogle.cloud.aiplatformimportvertexai# Example file structure:# /agent_directory# ├── agent.py# ├── requirements.txt# Example agent_directory/agent.py:# class MyAgent:# def ask(self, question: str) -> str:# return f"Answer to {question}"# root_agent = MyAgent()remote_agent=client.agent_engines.create(config={"display_name":"My Agent","description":"An agent deployed from a local source.","source_packages":["agent_directory"],"entrypoint_module":"agent_directory.agent","entrypoint_object":"root_agent","requirements_file":"requirements.txt","class_methods":[{"name":"ask","api_mode":"","parameters":{"type":"object","properties":{"question":{"type":"string"}},"required":["question"]}},],# Other optional configs:# "env_vars": {...},# "service_account": "...",})
Optional: Agent-Ressourcen-ID abrufen
Jeder bereitgestellte Agent hat eine eindeutige Kennung. Mit dem folgenden Befehl können Sie den Ressourcennamen für Ihren bereitgestellten Agent abrufen:
Jeder bereitgestellte Agent hat eine Liste der unterstützten Vorgänge. Mit dem folgenden Befehl können Sie die Liste der vom bereitgestellten Agent unterstützten Vorgänge abrufen:
remote_agent.operation_schemas()
Das Schema für jeden Vorgang ist ein Wörterbuch, in dem die Informationen einer Methode für den Agenten dokumentiert sind, die Sie aufrufen können. Die unterstützten Vorgänge hängen vom Framework ab, das Sie zum Entwickeln Ihres Agenten verwendet haben:
[[["Leicht verständlich","easyToUnderstand","thumb-up"],["Mein Problem wurde gelöst","solvedMyProblem","thumb-up"],["Sonstiges","otherUp","thumb-up"]],[["Schwer verständlich","hardToUnderstand","thumb-down"],["Informationen oder Beispielcode falsch","incorrectInformationOrSampleCode","thumb-down"],["Benötigte Informationen/Beispiele nicht gefunden","missingTheInformationSamplesINeed","thumb-down"],["Problem mit der Übersetzung","translationIssue","thumb-down"],["Sonstiges","otherDown","thumb-down"]],["Zuletzt aktualisiert: 2025-12-05 (UTC)."],[],[]]