Menginstrumentasi aplikasi ADK dengan OpenTelemetry

Dokumen ini menjelaskan cara menginstrumentasi agen AI yang dibangun dengan framework Agent Development Kit (ADK). Framework ADK mencakup instrumentasi OpenTelemetry yang mengumpulkan telemetri dari tindakan utama agen. Saat Anda mengaktifkan instrumentasi bawaan, instrumentasi tersebut akan mengirimkan informasi seperti perintah teks dan respons agen ke project Google Cloud Anda. Dokumen ini menguraikan perubahan yang diperlukan dan menyediakan link ke aplikasi contoh.

Aplikasi yang menggunakan ADK juga dapat mengumpulkan perintah dan respons multimodal. Dokumen ini menjelaskan cara mengumpulkan perintah dan respons teks. Jika Anda ingin mengumpulkan data multimodal, konfigurasi tambahan diperlukan. Untuk mengetahui informasi selengkapnya, lihat Mengumpulkan dan melihat perintah dan respons multimodal.

Observabilitas default yang disediakan oleh ADK mungkin tidak cukup untuk kasus penggunaan aplikasi Anda. Anda dapat menambahkan library instrumentasi tambahan menggunakan OpenTelemetry untuk merekam telemetri dari bagian lain aplikasi Anda, atau instrumentasi kustom Anda sendiri untuk merekam data khusus aplikasi guna mendapatkan kemampuan observasi yang lebih terperinci. Misalnya, di aplikasi, Anda dapat menulis kode instrumentasi untuk:

  • Melacak konsumsi resource alat yang dipanggil agen.
  • Lacak kegagalan validasi khusus aplikasi, pelanggaran aturan bisnis, atau mekanisme pemulihan error kustom.
  • Lacak skor kualitas untuk respons agen berdasarkan kriteria khusus domain Anda.

Melengkapi aplikasi AI generatif Anda untuk mengumpulkan telemetri

Untuk menginstrumentasi agen AI Anda guna mengumpulkan data log, metrik, dan rekaman aktivitas, lakukan hal berikut:

  1. Instal paket OpenTelemetry.
  2. Konfigurasi lingkungan ADK Anda.

Bagian selanjutnya dalam bagian ini menjelaskan langkah-langkah sebelumnya.

Menginstal paket OpenTelemetry

Tambahkan paket instrumentasi dan pengekspor OpenTelemetry berikut:

pip install 'google-adk>=1.17.0' \
  'opentelemetry-instrumentation-google-genai>=0.4b0' \
  'opentelemetry-instrumentation-sqlite3' \
  'opentelemetry-exporter-gcp-logging' \
  'opentelemetry-exporter-gcp-monitoring' \
  'opentelemetry-exporter-otlp-proto-grpc' \
  'opentelemetry-instrumentation-vertexai>=2.0b0'

Data log dan metrik dikirim ke project Google Cloud Anda menggunakan Cloud Logging API atau Cloud Monitoring API. Library opentelemetry-exporter-gcp-logging dan opentelemetry-exporter-gcp-monitoring memanggil endpoint di API tersebut.

Data trace dikirim ke Google Cloud menggunakan Telemetry (OTLP) API, yang mengimplementasikan OpenTelemetry OTLP Protocol. Library opentelemetry-exporter-otlp-proto-grpc memanggil endpoint Telemetry (OTLP) API.

Data rekaman aktivitas Anda disimpan dalam format yang umumnya konsisten dengan file proto yang ditentukan oleh Protokol OTLP OpenTelemetry. Namun, kolom dapat dikonversi dari jenis data khusus OpenTelemetry ke jenis data JSON sebelum penyimpanan. Untuk mempelajari format penyimpanan lebih lanjut, lihat Schema untuk data rekaman aktivitas.

Mengonfigurasi lingkungan ADK Anda

Framework ADK versi 1.17.0 dan yang lebih tinggi mencakup dukungan bawaan untuk OpenTelemetry dan mengirim data telemetri OpenTelemetry ke Google Cloud Observability. Untuk mengaktifkannya, Anda harus mengonfigurasi lingkungan ADK:

  • Saat Anda menjalankan aplikasi dengan perintah CLI adk web, sertakan flag --otel_to_cloud.

  • Di file opentelemetry.env, tetapkan variabel lingkungan berikut:

    OTEL_SERVICE_NAME=adk-sql-agent
    OTEL_PYTHON_LOGGING_AUTO_INSTRUMENTATION_ENABLED=true
    OTEL_INSTRUMENTATION_GENAI_CAPTURE_MESSAGE_CONTENT=true
    
  • Sebaiknya Anda juga menambahkan variabel lingkungan berikut ke file opentelemetry.env Anda:

    ADK_CAPTURE_MESSAGE_CONTENT_IN_SPANS=false
    

    Variabel lingkungan ini melakukan hal berikut:

    • Mencegah instrumentasi ADK melampirkan atribut rentang yang melebihi batas ukuran atribut.
    • Mencegah informasi identitas pribadi (PII) dilampirkan ke rentang sebagai atribut.

Mendownload dan menjalankan aplikasi contoh

Kode contoh ini mengimplementasikan agen AI generatif yang dibuat menggunakan ADK. Agen dilengkapi dengan OpenTelemetry, yang dikonfigurasi untuk mengirim metrik, trace, dan log ke project Anda. Google Cloud Telemetri yang dikirim ke project Anda mencakup perintah dan respons AI generatif.

Persona agen ADK

Agen AI generatif didefinisikan sebagai pakar SQL yang memiliki akses penuh ke database SQLite sementara. Agen ini dibangun dengan Agent Development Kit dan mengakses database menggunakan SQLDatabaseToolkit. Database awalnya kosong.

Sebelum memulai

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. Install the Google Cloud CLI.

  3. Jika Anda menggunakan penyedia identitas (IdP) eksternal, Anda harus login ke gcloud CLI dengan identitas gabungan Anda terlebih dahulu.

  4. Untuk melakukan inisialisasi gcloud CLI, jalankan perintah berikut:

    gcloud init
  5. Create or select a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.
    • Create a Google Cloud project:

      gcloud projects create PROJECT_ID

      Replace PROJECT_ID with a name for the Google Cloud project you are creating.

    • Select the Google Cloud project that you created:

      gcloud config set project PROJECT_ID

      Replace PROJECT_ID with your Google Cloud project name.

  6. Verify that billing is enabled for your Google Cloud project.

  7. Enable the Vertex AI, Telemetry, Cloud Logging, Cloud Monitoring, and Cloud Trace APIs:

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    gcloud services enable aiplatform.googleapis.com telemetry.googleapis.com logging.googleapis.com monitoring.googleapis.com cloudtrace.googleapis.com
  8. Install the Google Cloud CLI.

  9. Jika Anda menggunakan penyedia identitas (IdP) eksternal, Anda harus login ke gcloud CLI dengan identitas gabungan Anda terlebih dahulu.

  10. Untuk melakukan inisialisasi gcloud CLI, jalankan perintah berikut:

    gcloud init
  11. Create or select a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.
    • Create a Google Cloud project:

      gcloud projects create PROJECT_ID

      Replace PROJECT_ID with a name for the Google Cloud project you are creating.

    • Select the Google Cloud project that you created:

      gcloud config set project PROJECT_ID

      Replace PROJECT_ID with your Google Cloud project name.

  12. Verify that billing is enabled for your Google Cloud project.

  13. Enable the Vertex AI, Telemetry, Cloud Logging, Cloud Monitoring, and Cloud Trace APIs:

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    gcloud services enable aiplatform.googleapis.com telemetry.googleapis.com logging.googleapis.com monitoring.googleapis.com cloudtrace.googleapis.com
  14. Jika Anda menjalankan sampel di Cloud Shell, di Google Cloud resource, atau di lingkungan pengembangan lokal, izin yang tercantum di bagian ini sudah cukup. Untuk aplikasi produksi, biasanya akun layanan menyediakan kredensial untuk menulis data log, metrik, dan trace.

    Untuk mendapatkan izin yang Anda perlukan agar aplikasi contoh dapat menulis data log, metrik, dan rekaman aktivitas, minta administrator untuk memberi Anda peran IAM berikut di project Anda:

  15. Luncurkan aplikasi

    Untuk meluncurkan aplikasi contoh, lakukan langkah berikut:

    1. Di Cloud Shell, jalankan perintah berikut:

      git clone https://github.com/GoogleCloudPlatform/opentelemetry-operations-python.git
      
    2. Buka direktori contoh:

      cd opentelemetry-operations-python/samples/adk-sql-agent
      
    3. Buat lingkungan virtual dan jalankan contoh:

      python -m venv venv/
      source venv/bin/activate
      pip install -r requirements.txt
      env $(cat opentelemetry.env | xargs) adk web --otel_to_cloud
      

      Aplikasi akan menampilkan pesan yang mirip dengan berikut ini:

      Appplication startup complete
      Uvicorn running on http://0.0.0.0:8080
      
    4. Untuk berinteraksi dengan agen, pilih URL yang ditampilkan dalam output langkah sebelumnya.

    5. Luaskan Pilih agen, lalu pilih sql_agent dari daftar agen.

    Berinteraksi dengan agen

    Untuk berinteraksi dengan agen, ajukan pertanyaan atau berikan perintah. Misalnya, Anda dapat mengajukan pertanyaan:

    What can you do for me ?
    

    Demikian pula, karena sql_agent memiliki persona sebagai pakar SQL, Anda dapat memintanya untuk membuat tabel bagi aplikasi Anda dan menulis kueri untuk mengoperasikan tabel yang dibuat. Agen hanya dapat membuat database sementara yang didukung oleh file .db yang dibuat di mesin yang menjalankan aplikasi.

    Berikut ini menggambarkan contoh interaksi antara sql_agent dan pengguna:

    Tampilan interaksi dengan sql_agent.

    Tindakan yang dilakukan oleh agen AI generatif tidak deterministik, sehingga Anda mungkin melihat respons yang berbeda untuk perintah yang sama.

    Keluar dari aplikasi

    Untuk keluar dari aplikasi, masukkan Ctrl-C di shell yang digunakan untuk meluncurkan aplikasi.

    Melihat rekaman aktivitas, metrik, dan log

    Bagian ini menjelaskan cara melihat peristiwa AI generatif.

    Sebelum memulai

    Untuk mendapatkan izin yang diperlukan untuk melihat data log, metrik, dan rekaman aktivitas, minta administrator untuk memberi Anda peran IAM berikut di project Anda:

    Untuk mengetahui informasi selengkapnya tentang pemberian peran, lihat Mengelola akses ke project, folder, dan organisasi.

    Anda mungkin juga bisa mendapatkan izin yang diperlukan melalui peran khusus atau peran bawaan lainnya.

    Melihat telemetri

    Untuk melihat peristiwa AI generatif yang dibuat oleh aplikasi, gunakan halaman Trace Explorer:

    1. Di konsol Google Cloud , buka halaman Trace explorer:

      Buka Trace explorer

      Anda juga dapat menemukan halaman ini dengan menggunakan kotak penelusuran.

    2. Di toolbar, pilih Tambahkan filter, pilih Nama rentang, lalu pilih call_llm.

      Berikut ini menggambarkan halaman Trace Explorer setelah memfilter data:

      Tampilan rentang aktivitas.

      Jika Anda belum pernah menggunakan Cloud Trace, Google Cloud Observability perlu membuat database untuk menyimpan data rekaman aktivitas Anda. Pembuatan database dapat memakan waktu beberapa menit dan selama periode tersebut, tidak ada data rekaman aktivitas yang tersedia untuk dilihat.

    3. Untuk menjelajahi data rentang dan log, di tabel Rentang, pilih rentang.

      Halaman Detail akan terbuka. Halaman ini menampilkan rekaman aktivitas terkait dan rentang waktunya. Tabel di halaman menampilkan informasi mendetail untuk rentang yang Anda pilih. Informasi ini mencakup hal-hal berikut:

      • Tab Input/Output menampilkan peristiwa untuk agen AI generatif. Untuk mempelajari peristiwa ini lebih lanjut, lihat artikel Melihat peristiwa AI generatif.

        Screenshot berikut mengilustrasikan rekaman aktivitas, dengan satu rentang memiliki nama call_llm. Rentang tersebut memanggil LLM (Model Bahasa Besar) yang mendukung agen ini. Untuk contoh ini, modelnya adalah Gemini. Rentang Gemini mencakup peristiwa AI generatif:

        Menampilkan peristiwa AI generatif.

      • Tab Log & Peristiwa mencantumkan entri log dan peristiwa yang terkait dengan rentang. Jika Anda ingin melihat data log di Logs Explorer, pilih Lihat log di toolbar tab ini.

        Data log mencakup respons sql_agent. Misalnya, untuk contoh eksekusi, payload JSON mencakup konten berikut:

        {
          "logName": "projects/my-project/logs/otel_python_inprocess_log_name_temp",
          "jsonPayload": {
            "content": {
              "parts": [
                0: {
                  "text": "Now I can create the table."
                }
                1: {1}
                ],
              "role": "model"
            }
          },
          ...
        }
        

    Contoh diinstrumentasikan untuk mengirim data metrik ke project Google Cloud Anda, tetapi tidak menghasilkan metrik apa pun.