Men-deploy agen

Untuk men-deploy agen di Vertex AI Agent Engine, pilih antara dua metode utama:

  • Men-deploy dari objek agen: Ideal untuk pengembangan interaktif di lingkungan seperti Colab, yang memungkinkan deployment objek local_agent dalam memori. Metode ini paling cocok untuk agen dengan struktur yang tidak berisi komponen kompleks yang tidak dapat diserialisasi.
  • Men-deploy dari file sumber: Metode ini cocok untuk alur kerja otomatis seperti pipeline CI/CD dan alat Infrastructure as Code seperti Terraform, sehingga memungkinkan deployment yang sepenuhnya deklaratif dan otomatis. Agen ini men-deploy agen Anda langsung dari kode sumber lokal dan tidak memerlukan bucket Cloud Storage.

Untuk memulai, ikuti langkah-langkah berikut:

  1. Selesaikan prasyarat.
  2. (Opsional) Konfigurasi agen Anda untuk deployment.
  3. Buat instance AgentEngine.
  4. (Opsional) Dapatkan ID resource agen.
  5. (Opsional) Mencantumkan operasi yang didukung.
  6. (Opsional) Beri izin agen yang di-deploy.

Anda juga dapat menggunakan template Agent Starter Pack untuk deployment.

Prasyarat

Sebelum men-deploy agen, pastikan Anda telah menyelesaikan tugas berikut:

  1. Menyiapkan lingkungan Anda
  2. Mengembangkan agen.

(Opsional) Mengonfigurasi agen untuk deployment

Anda dapat membuat konfigurasi opsional berikut untuk agen:

Buat instance AgentEngine

Bagian ini menjelaskan cara membuat instance AgentEngine untuk men-deploy agen.

Untuk men-deploy agen di Vertex AI Agent Engine, Anda dapat memilih salah satu metode berikut:

  • Men-deploy dari objek agen untuk pengembangan interaktif.
  • Men-deploy dari file sumber untuk alur kerja otomatis berbasis file.

Dari objek agen

Untuk men-deploy agen di Vertex AI, gunakan client.agent_engines.create untuk meneruskan objek local_agent beserta konfigurasi opsional:

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.
    },
)

Deployment memerlukan waktu beberapa menit, dan selama proses tersebut, langkah-langkah berikut akan terjadi di latar belakang:

  1. Paket artefak berikut dibuat secara lokal:

    • *.pkl file pickle yang sesuai dengan local_agent.
    • requirements.txt file teks yang berisi persyaratan paket.
    • dependencies.tar.gz file tar yang berisi paket tambahan.
  2. Paket diupload ke Cloud Storage (di folder yang sesuai) untuk melakukan staging artefak.

  3. Cloud Storage URI untuk setiap artefak ditentukan dalam PackageSpec.

  4. Layanan Vertex AI Agent Engine menerima permintaan dan membangun container serta memulai server HTTP di backend.

Latensi deployment bergantung pada total waktu yang diperlukan untuk menginstal paket yang diperlukan. Setelah di-deploy, remote_agent sesuai dengan instance local_agent yang berjalan di Vertex AI dan dapat dikueri atau dihapus.

Objek remote_agent sesuai dengan class AgentEngine yang berisi atribut berikut:

Dari file sumber

Untuk men-deploy dari file sumber di Vertex AI, gunakan client.agent_engines.create dengan memberikan source_packages, entrypoint_module, entrypoint_object, dan class_methods dalam kamus konfigurasi, beserta konfigurasi opsional lainnya. Dengan metode ini, Anda tidak perlu meneruskan objek agen atau bucket Cloud Storage.

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.
    },
)

Parameter untuk deployment sumber inline adalah:

  • source_packages (Wajib, list[str]): Daftar jalur file atau direktori lokal yang akan disertakan dalam deployment. Ukuran total file dan direktori di source_packages tidak boleh melebihi 8 MB.
  • entrypoint_module (Wajib, str): Nama modul Python yang sepenuhnya memenuhi syarat yang berisi titik entri agen (misalnya, agent_dir.agent).
  • entrypoint_object (Wajib, str): Nama objek yang dapat dipanggil dalam entrypoint_module yang merepresentasikan aplikasi agen (misalnya, root_agent).
  • class_methods (Wajib, list[dict]): Daftar kamus yang menentukan metode yang diekspos oleh agen. Setiap kamus mencakup kolom name (Wajib), api_mode (Wajib), dan parameters. Lihat Mencantumkan operasi yang didukung untuk mengetahui informasi selengkapnya tentang metode untuk agen kustom.

    Contoh:

      "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 (Opsional, str): Jalur ke file persyaratan pip dalam jalur yang ditentukan di source_packages. Defaultnya adalah requirements.txt di direktori root sumber yang dipaketkan.

Deployment memerlukan waktu beberapa menit, dan selama proses tersebut, langkah-langkah berikut akan terjadi di latar belakang:

  1. Vertex AI SDK membuat arsip tar.gz dari jalur yang ditentukan dalam source_packages.
  2. Arsip ini dienkode dan dikirim langsung ke Vertex AI API.
  3. Layanan Vertex AI Agent Engine menerima arsip, mengekstraknya, menginstal dependensi dari requirements_file (jika disediakan), dan memulai aplikasi agen menggunakan entrypoint_module dan entrypoint_object yang ditentukan.

Latensi deployment bergantung pada total waktu yang diperlukan untuk menginstal paket yang diperlukan. Setelah di-deploy, remote_agent sesuai dengan instance aplikasi agen yang berjalan di Vertex AI dan dapat dikueri atau dihapus.

Objek remote_agent sesuai dengan class AgentEngine yang berisi atribut berikut:

Berikut adalah contoh men-deploy agen dari file sumber:

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": "...",
  }
)

(Opsional) Dapatkan ID resource agen

Setiap agen yang di-deploy memiliki ID unik. Anda dapat menjalankan perintah berikut untuk mendapatkan nama resource agen yang di-deploy:

remote_agent.api_resource.name

Responsnya akan terlihat seperti string berikut:

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

dengan

  • PROJECT_ID adalah Google Cloud project ID tempat agen yang di-deploy berjalan.

  • LOCATION adalah region tempat agen yang di-deploy berjalan.

  • RESOURCE_ID adalah ID agen yang di-deploy sebagai reasoningEngine resource.

(Opsional) Mencantumkan operasi yang didukung

Setiap agen yang di-deploy memiliki daftar operasi yang didukung. Anda dapat menjalankan perintah berikut untuk mendapatkan daftar operasi yang didukung oleh agen yang di-deploy:

remote_agent.operation_schemas()

Skema untuk setiap operasi adalah kamus yang mendokumentasikan informasi metode untuk agen yang dapat Anda panggil. Kumpulan operasi yang didukung bergantung pada framework yang Anda gunakan untuk mengembangkan agen:

(Opsional) Berikan izin agen yang di-deploy

Jika agen yang di-deploy perlu diberi izin tambahan, ikuti petunjuk di Menyiapkan identitas dan izin untuk agen Anda.

Langkah berikutnya