Agent bereitstellen

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.

So legen Sie los:

  1. Voraussetzungen erfüllen
  2. Optional: Agent für die Bereitstellung konfigurieren.
  3. AgentEngine-Instanz erstellen
  4. Optional: Agent-Ressourcen-ID abrufen.
  5. Optional: Unterstützte Vorgänge auflisten.
  6. Optional: Berechtigungen für den bereitgestellten Agent erteilen.

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

Vorbereitung

Bevor Sie einen Agenten bereitstellen, müssen Sie die folgenden Aufgaben ausführen:

  1. Richten Sie die Umgebung ein.
  2. Agent entwickeln.

(Optional) Agent für die Bereitstellung konfigurieren

Sie können die folgenden optionalen Konfigurationen für Ihren Agent vornehmen:

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:

remote_agent = client.agent_engines.create(
    agent=local_agent,                                  # Optional.
    config={
        "requirements": requirements,                   # Optional.
        "extra_packages": extra_packages,               # Optional.
        "gcs_dir_name": gcs_dir_name,                   # Optional.
        "display_name": display_name,                   # Optional.
        "description": description,                     # Optional.
        "labels": labels,                               # Optional.
        "env_vars": env_vars,                           # Optional.
        "build_options": build_options,                 # Optional.
        "identity_type": identity_type,                 # Optional.
        "service_account": service_account,             # Optional.
        "min_instances": min_instances,                 # Optional.
        "max_instances": max_instances,                 # Optional.
        "resource_limits": resource_limits,             # Optional.
        "container_concurrency": container_concurrency, # Optional
        "encryption_spec": encryption_spec,             # Optional.
        "agent_framework": agent_framework,             # Optional.
    },
)

Die Bereitstellung dauert einige Minuten. Im Hintergrund werden dabei die folgenden Schritte ausgeführt:

  1. Lokal wird ein Bündel der folgenden Artefakte generiert:

  2. Das Bündel wird in Cloud Storage hochgeladen (in den entsprechenden Ordner), um die Artefakte bereitzustellen.

  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.

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.
  • remote_agent.api_client, die synchrone Dienstinteraktionen ermöglicht.
  • ein remote_agent.async_api_client, das asynchrone Dienstinteraktionen ermöglicht.

Aus Quelldateien

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.

remote_agent = client.agent_engines.create(
    config={
        "source_packages": source_packages,             # Required.
        "entrypoint_module": entrypoint_module,         # Required.
        "entrypoint_object": entrypoint_object,         # Required.
        "class_methods": class_methods,                 # Required.
        "requirements_file": requirements_file,         # Optional.
        "display_name": display_name,                   # Optional.
        "description": description,                     # Optional.
        "labels": labels,                               # Optional.
        "env_vars": env_vars,                           # Optional.
        "build_options": build_options,                 # Optional.
        "identity_type": identity_type,                 # Optional.
        "service_account": service_account,             # Optional.
        "min_instances": min_instances,                 # Optional.
        "max_instances": max_instances,                 # Optional.
        "resource_limits": resource_limits,             # Optional.
        "container_concurrency": container_concurrency, # Optional
        "encryption_spec": encryption_spec,             # Optional.
        "agent_framework": agent_framework,             # Optional.
    },
)

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:

  1. Das Vertex AI SDK erstellt ein tar.gz-Archiv der in source_packages angegebenen Pfade.
  2. Dieses Archiv wird codiert und direkt an die Vertex AI API gesendet.
  3. 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.
  • remote_agent.api_client, die synchrone Dienstinteraktionen ermöglicht.
  • ein remote_agent.async_api_client, das asynchrone Dienstinteraktionen ermöglicht.

Im Folgenden finden Sie ein Beispiel für die Bereitstellung eines Agents aus Quellcode-Dateien:

from google.cloud.aiplatform import vertexai

# 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:

remote_agent.api_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 Agents als reasoningEngine-Ressource.

Optional: Unterstützte Vorgänge auflisten

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:

Optional: Berechtigungen für den bereitgestellten Agent erteilen

Wenn dem bereitgestellten Agent zusätzliche Berechtigungen erteilt werden müssen, folgen Sie der Anleitung unter Identität und Berechtigungen für Ihren Agent einrichten.

Nächste Schritte