So stellen Sie einen Agenten in der Vertex AI Agent Engine bereit:
- Konfigurieren Sie Ihren Agenten für die Bereitstellung.
- Erstellen Sie eine
AgentEngine
-Instanz. - Dem bereitgestellten Agenten Berechtigungen erteilen
- 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:
Kundenservicemitarbeiter für die Bereitstellung konfigurieren
Sie können die folgenden optionalen Konfigurationen vornehmen:
- Anforderungen an das Paket
- Zusätzliche Pakete
- Umgebungsvariablen
- Cloud Storage-Ordner
- Ressourcenmetadaten
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:
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
undpydantic
.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:
Lokal wird ein Paket mit den folgenden Artefakten generiert:
*.pkl
eine Pickle-Datei, die local_agent entspricht.requirements.txt
eine Textdatei mit den Paketanforderungen.dependencies.tar.gz
eine Tar-Datei mit allen zusätzlichen Paketen.
Das Bundle wird zum Staging der Artefakte in Cloud Storage (in den entsprechenden Ordner) hochgeladen.
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. 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 alsreasoningEngine
-Ressource.
Nächste Schritte
- Verwenden Sie den Kundenservicemitarbeiter.
- Bereitgestellte Kundenservicemitarbeiter verwalten
- Fehlerbehebung bei der Bereitstellung eines Agents
- Support anfordern