Ketika agen AI menjadi lebih canggih dan otonom, memahami perilaku, kinerja, dan proses pengambilan keputusan mereka sangat penting untuk memastikan keandalan dan tata kelola. AgentOps, praktik pemantauan, pengamatan, dan pengelolaan agen AI dalam produksi, memberikan visibilitas yang diperlukan untuk membangun sistem AI agen yang dapat dipercaya.
Tutorial ini memberikan panduan langkah demi langkah untuk menyiapkan dan menggunakan IBM Telemetry dengan watsonx Orchestrate Developer Edition untuk memantau dan mengatur agen AI. Anda akan belajar cara mengaktifkan observabilitas untuk agen AI dan menganalisis perilaku mereka secara mendalam, dari panggilan LLM individu hingga menyelesaikan alur kerja multi-langkah.
Pada akhir tutorial ini, Anda akan dapat:
IBM Telemetry adalah kerangka kerja asli dari watsonx Orchestrate yang menangkap informasi terperinci tentang bagaimana agen AI Anda mengeksekusi permintaan. Ini mencatat setiap langkah siklus hidup agen, mulai dari keputusan routing dan konstruksi prompt hingga pemanggilan LLM dan panggilan alat, memberikan visibilitas lengkap untuk perilaku agen.
Dengan IBM Telemetry, Anda dapat melacak metrik kinerja, memantau biaya LLM, mengidentifikasi kesalahan, dan memastikan bahwa agen Anda beroperasi sebagaimana mestinya. IBM Telemetry menyediakan observabilitas kelas enterprise yang dirancang untuk lingkungan produksi dan sistem AI dalam skala besar.
Sebelum Anda mulai, pastikan bahwa prasyarat berikut diinstal dan dikonfigurasi pada sistem Anda:
Panduan ini mencakup langkah-langkah instalasi untuk ADK.
Langkah-langkah otorisasi disediakan nanti dalam panduan ini.
Untuk memulai, kloning repositori GitHub dengan menggunakan https://github.com/IBM/ibmdotcom-tutorials.git sebagai URL HTTPS. Untuk langkah-langkah terperinci tentang cara membuat kloning repositori, lihat dokumentasi GitHub.
Buka repositori di lingkungan pengembangan terintegrasi (IDE) pilihan Anda (misalnya, Visual Studio Code) dan temukan folder proyek tutorial ini:
IBM watsonx orchestrate Agent Development Kit (ADK) adalah alat CLI yang menyederhanakan instalasi, konfigurasi, dan pengelolaan Watsonx Orchestrate Developer Edition.
Untuk menggunakan ADK, Anda harus menghubungkannya ke lingkungan watsonx Orchestrate yang ada. Jika Anda belum memiliki akun watsonx Orchestrate, Anda dapat mendaftar untuk uji coba gratis selama 30 hari. Jika Anda sudah memiliki akun, Anda dapat menggunakannya untuk memberikan kredensial lingkungan yang dibutuhkan oleh ADK.
Langkah-langkah ini akan memandu Anda melalui instalasi dengan menggunakan lingkungan virtual Python, yang merupakan pendekatan yang disarankan untuk menjaga ketergantungan terisolasi. Untuk metode instalasi alternatif dan petunjuk terperinci, lihat Memulai dengan dokumentasi ADK.
Buat lingkungan virtual Python baru di direktori proyek Anda:
Langkah ini membuat folder
Perintah aktivasi berbeda tergantung pada sistem operasi Anda.
macOS dan Linux
Windows
Setelah diaktifkan, prompt terminal Anda akan berubah untuk menunjukkan Anda bekerja di dalam lingkungan virtual (biasanya menampilkan (
Setelah lingkungan virtual Anda diaktifkan, instal ADK menggunakan pip:
Perintah ini mengunduh dan menginstal ADK bersama dengan semua dependensinya. Instalasi dapat memakan waktu beberapa menit untuk menyelesaikannya.
Catatan: Jika Anda memiliki versi sebelumnya dari ADK yang diinstal (>
ADK menggunakan file
Untuk metode autentikasi alternatif dan petunjuk konfigurasi terperinci, lihat mengonfigurasi dokumentasi file lingkungan Anda.
Di dalam direktori wxo-agentops, buat file
Buka file
URL tersebut mengikuti format berikut:
Salin dan tempel URL instance layanan Anda untuk mengganti nilai templat di file
Jaga agar kunci API Anda tetap aman dan jangan pernah memasukkannya ke kontrol versi. File
Sekarang, Anda siap untuk menginstal Watsonx Orchestrate Developer Edition, yang akan menjalankan instance lokal server watsonx Orchestrate di mesin Anda. Langkah ini juga memungkinkan IBM Telemetry, memberi Anda akses langsung ke fitur observabilitas.
ADK menyediakan satu perintah yang menangani seluruh proses instalasi:
Mari kita uraikan apa yang dilakukan perintah ini:
Jalankan perintah dari direktori wxo-agentops Anda:
Perintah berikut memulai server watsonx Orchestrate Developer Edition dengan menginisialisasi lingkungan server:
Jalankan perintah ini untuk menginstal server Watsonx Orchestrate dengan IBM Telemetry:
Perintah ini membuat kontainer internal yang dikelola oleh ADK untuk:
ADK secara otomatis mengonfigurasi jaringan virtual yang memungkinkan kontainer ini berkomunikasi satu sama lain di
Proses instalasi dapat memakan waktu beberapa menit, terutama pada proses pertama karena gambar yang diperlukan diunduh. Instalasi yang berhasil menghasilkan output yang mirip dengan contoh ini:
Jika Anda melihat pesan ini, selamat! Lingkungan WatsonX Orchestrate lokal Anda dengan IBM Telemetry sekarang sedang berjalan.
Jika instalasi gagal atau macet, coba langkah-langkah berikut:
1. Reset server:
Perintah ini menghentikan dan menghapus semua kontainer yang dibuat untuk watsonx Orchestrate, memberi Anda daftar yang bersih.
2. Mulai ulang instalasi:
Setelah mengatur ulang, jalankan perintah mulai lagi:
3. Periksa status kontainer log server:
Anda dapat melihat log layanan untuk server Orchestrate untuk memeriksa peringatan atau kesalahan:
Jika langkah sebelumnya tidak berhasil, setel ulang server dan hapus sepenuhnya lingkungan server:
Setelah server watsonx Orchestrate berhasil diinstal, Anda perlu mengaktifkan lingkungan lokal Anda dan meluncurkan antarmuka obrolan tempat Anda akan berinteraksi dengan agen AI Anda.
Watsonx Orchestrate ADK mendukung beberapa lingkungan (lokal, pengembangan, produksi, dan sebagainya.). Anda perlu secara eksplisit mengaktifkan lingkungan lokal yang Anda buat:
Anda akan menerima konfirmasi bahwa lingkungan aktif:
Ini menetapkan lingkungan lokal sebagai konteks default Anda untuk semua perintah ADK berikutnya. Setiap agen, alat, atau konfigurasi yang Anda gunakan sekarang akan menargetkan instance lokal ini.
Mulai layanan UI obrolan watsonx Orchestrate dengan perintah berikut:
Perintah ini menginisialisasi antarmuka obrolan berbasis web dan secara otomatis membukanya di browser default Anda. Anda akan melihat output yang mirip dengan:
Antarmuka obrolan menyediakan cara mudah untuk berinteraksi dengan agen AI Anda. Jika browser tidak terbuka secara otomatis, Anda dapat melakukan navigasi secara manual ke
Setelah antarmuka obrolan dimuat, Anda akan melihat jendela obrolan bersih siap untuk interaksi. Pada tahap ini, Anda belum mengimpor agen apa pun, jadi antarmuka sebagian besar akan kosong. Hasil tersebut sudah sesuai harapan. Anda akan menambahkan agen pertama pada langkah selanjutnya.
Sekarang setelah lingkungan Anda diatur, saatnya untuk mengimpor agen AI yang telah dikonfigurasi sebelumnya yang menunjukkan kemampuan pemantauan IBM Telemetry. Agen cuaca ini menggunakan alat API eksternal untuk mengambil data cuaca real-time, memberi Anda contoh praktis untuk mengamati dan menganalisis.
Agen cuaca adalah titik awal yang ideal karena:
Dari root proyek Anda (
Direktori ini berisi dua file konfigurasi YAML:
Alat adalah kemampuan yang dapat digunakan kembali yang dapat dipanggil agen untuk melakukan tindakan tertentu. Impor alat
Bendera
Sekarang impor agen yang akan menggunakan alat ini:
Perintah ini mendaftarkan Weather Agent ke lingkungan watsonx Orchestrate lokal Anda. Agen tersebut telah dikonfigurasi sebelumnya dengan:
Kembali ke browser Anda tempat antarmuka obrolan berjalan. Anda mungkin perlu menyegarkan halaman untuk melihat agen yang baru diimpor.
Klik menu tarik-turun agen (biasanya terletak di bagian atas antarmuka obrolan) dan pilih Weather_Agent dari daftar
Dengan Weather Agent dipilih, coba ajukan beberapa pertanyaan untuk menghasilkan data telemetri:
Contoh kueri:
Agen akan memproses setiap permintaan dengan:
Setiap interaksi yang Anda lakukan dengan Weather Agent ditangkap oleh IBM Telemetry. Sistem sedang merekam:
Pada langkah selanjutnya, Anda akan menelusuri data telemetri ini secara terperinci untuk memahami dengan tepat bagaimana agen Anda berperilaku.
Sekarang adalah bagian terpenting dari tutorial ini: menggunakan IBM Telemetry untuk mendapatkan visibilitas mendalam tentang perilaku agen Anda. IBM Telemetry menyediakan berbagai tampilan dan alat analitik yang memungkinkan Anda memahami setiap aspek tentang bagaimana agen Anda memproses permintaan.
Buka browser Anda dan buka https://localhost:8765/?serviceName=wxo-server. Antarmuka menyediakan pemutaran ulang sesi yang memungkinkan Anda meninjau kembali interaksi agen sebelumnya untuk dianalisis.
Catatan: URL menggunakan
Ketika layar login muncul, masukkan nama apa saja (untuk mengidentifikasi sesi lokal Anda) dan klik Masuk.
Anda akan dibawa ke dasbor utama IBM Telemetry.
Dasbor menampilkan daftar pelacakan terbaru, masing-masing mewakili interaksi pengguna tunggal dengan agen. Klik jejak pertama di panel Pemilihan Jejak dan Grup untuk melihat analitik terperinci tentang obrolan terbaru Anda dengan Weather Agent.
Langkah ini membawa Anda ke layar Agent Analytics, yang berfungsi sebagai pusat utama untuk memahami perilaku agen.
Layar Agent Analytics memberikan gambaran umum tentang jejak yang dipilih, termasuk:
Tampilan tingkat tinggi ini memberi Anda insight langsung tentang apakah agen bekerja seperti yang diharapkan dan seberapa efisien pengoperasiannya.
Bagian Tugas adalah tempat Anda akan menghabiskan sebagian besar waktu Anda menganalisis perilaku agen. Bagian ini menyediakan garis waktu visual, langkah demi langkah dari semua yang dilakukan agen selama permintaan (setiap panggilan LLM, pemanggilan alat, keputusan routing, dan pembuatan output).
Tugas diatur secara hierarkis untuk mencerminkan bagaimana agen benar-benar mengeksekusi alur kerja, sehingga mudah untuk memahami urutan operasi dan hubungannya.
Mari kita periksa jalur eksekusi standar untuk permintaan agen Watsonx Orchestrate. Jejak Weather Agent Anda harus menunjukkan struktur yang mirip dengan contoh ini:
Alur kerja ini menunjukkan seluruh siklus hidup kueri pengguna tunggal. Berikut penjelasan tentang masing-masing tugas:
Pendekatan ini penting karena durasi tugas root memberi tahu Anda total latensi yang dialami pengguna. Jika jumlahnya terlalu tinggi, Anda dapat menganalisis tugas turunan untuk mengidentifikasi kemacetan.
Router memastikan bahwa logika hilir yang benar dipanggil. Jika permintaan salah rute, di sinilah Anda akan mengidentifikasi masalahnya.
Di sinilah “kecerdasan” orkestrasi terjadi. Tugas agen memastikan bahwa LLM menerima semua konteks yang dibutuhkan untuk membuat keputusan berdasarkan informasi.
Langkah ini adalah langkah “berpikir” di mana model memproses informasi dan membuat keputusan. Penggunaan token, latensi, dan masalah kualitas semuanya berasal dari tugas ini. Jika agen Anda lambat atau mahal, langkah ini biasanya menjadi kontributor utamanya.
Tugas ini memastikan bahwa pengguna menerima respons yang diformat dengan benar. Jika jawaban dipotong atau diformat dengan tidak benar, Anda akan menyelidikinya di bagian ini.
Ringkasan alur kerja tugas
Untuk meringkas alur kerja lengkap:
Seluruh alur kerja ini berada dalam
Setiap tugas dalam hierarki berisi tiga kategori atribut yang menyediakan metadata terperinci tentang apa yang dikonsumsi dan dihasilkan tugas:
1. Atribut input: Menampilkan semua tugas yang diterima sebelum eksekusi: pesan, respons alat, instruksi sistem, keadaan internal.
Contoh: Untuk
2. Atribut output: Menunjukkan apa yang dihasilkan tugas, termasuk: penyelesaian LLM, panggilan alat, dan keputusan.
Contoh:
3. Atribut umum: Menyediakan metadata telemetri: penggunaan token, informasi waktu, pengidentifikasi seperti ID unik dan informasi model.
Contoh: Anda mungkin melihat bahwa tugas menggunakan 450 token input dan 120 token output, membutuhkan waktu 1,2 detik untuk dieksekusi dan menggunakan
Cara menggunakan atribut tugas
Atribut-atribut ini secara bersama-sama memungkinkan Anda untuk sepenuhnya memahami hal yang dilihat model, hal yang diputuskannya, dan bagaimana responsnya.
Tingkat detail ini sangat berharga untuk debugging, pengoptimalan, dan validasi.
Setiap tugas mencakup metrik terkait kinerja dan biaya yang merangkum bagaimana tugas dijalankan. Metrik ini memberikan data kuantitatif tentang kinerja agen.
Metrik utama meliputi:
Metrik ini membantu Anda mengoptimalkan kinerja dan men-debug perilaku agen. Mereka juga dapat membantu mengidentifikasi tugas lambat yang dapat diparalelkan atau di-cache. Tampilan ini sangat penting untuk perencanaan kapasitas karena memungkinkan Anda untuk memahami kebutuhan sumber daya untuk penskalaan dan melacak penggunaan token untuk mengendalikan pengeluaran.
Misalnya, jika Anda melihat bahwa pelacakan memakan waktu 8 detik tetapi hanya 0,5 detik yang dihabiskan untuk panggilan LLM, Anda tahu bahwa hambatan ada di tempat lain (kemungkinan dalam eksekusi alat atau latensi jaringan).
Sementara tugas menampilkan alur kerja logis agen Anda, span/rentang merepresentasikan operasi tingkat sistem yang berlangsung selama proses eksekusi. Mengklik tab Spans/Rentang akan menampilkan apa yang dilakukan platform secara internal untuk memproses setiap permintaan.
Rentang memberikan visibilitas ke dalam langkah-langkah eksekusi tingkat rendah yang direkam oleh kerangka orkestrasi (dalam hal ini, LangGraph, kerangka kerja sumber terbuka yang berjalan di dalam wxo-server). Setiap rentang mewakili operasi terpisah seperti:
Sementara tugas menunjukkan langkah-langkah logis eksekusi agen (apa yang coba dicapai agen), rentang menunjukkan langkah-langkah teknis (bagaimana sistem menyelesaikannya). Tampilan ganda ini memberi Anda pemahaman tingkat tinggi dan kemampuan debugging tingkat rendah.
Contoh: Satu tugas seperti
Setiap rentang mencakup tag yang menyediakan metadata dan konteks tambahan. Tag ini penting untuk memfilter, debugging, dan menganalisis kinerja agen.
Tag span yang umum meliputi:
Rentang berguna untuk melacak latensi, memahami kegagalan dengan melihat komponen internal mana yang gagal, menganalisis pola dengan memfilter rentang berdasarkan tag untuk mengidentifikasi tren, dan melakukan referensi silang dengan menghubungkan rentang di beberapa jejak menggunakan ID sesi.
Misalnya, jika agen Anda sesekali macet, Anda dapat memfilter rentang berdasarkan durasi untuk mengidentifikasi operasi internal mana yang memakan waktu lama secara tak terduga, mungkin kueri database atau panggilan jaringan ke layanan eksternal.
Tab Alur Kerja menyediakan visualisasi hierarkis yang disebut Pohon Runnable, yang menunjukkan struktur eksekusi lengkap alur kerja agen Anda. Tampilan ini sangat berguna untuk memahami sistem multi-agen yang kompleks dan pola eksekusi bersarang.
Dalam kerangka kerja watsonx Orchestrate, runnable adalah unit kerja atau tugas yang dapat dieksekusi. Objek yang dapat dijalankan (runnable) dapat berupa:
Pohon Runnable menampilkan hubungan induk-turunan, sehingga mudah dilihat:
Untuk agen sederhana seperti Weather Agent, tampilan alur kerja mencerminkan tampilan tugas dengan cermat. Namun, alur kerja menjadi sangat berharga ketika Anda bekerja dengan:
Misalnya, bayangkan agen yang terlebih dahulu memeriksa apakah kueri memerlukan pencarian web, kemudian memutuskan antara menggunakan alat kalkulator atau alat kueri basis data, dan akhirnya memvalidasi hasil sebelum merespons. Pohon Runnable akan menunjukkan seluruh struktur percabangan ini dengan jelas.
Anda dapat berinteraksi dengan pohon dengan:
Visualisasi membuat alur kerja debugging secara signifikan lebih mudah daripada mencoba mengikuti log teks atau melacak data saja.
Tab Eval (evaluasi) menyediakan jaminan kualitas dan tampilan pemantauan yang mengukur kebenaran dan keandalan eksekusi agen Anda. Pada tahap ini, Anda beralih dari mengamati apa yang terjadi menjadi mengevaluasi seberapa baik hal tersebut terjadi.
Tab Eval menunjukkan hasil evaluasi yang menilai kualitas melalui pembatas:
Evaluasi membantu Anda memantau keandalan dengan melacak seberapa konsisten agen Anda menghasilkan hasil yang benar, mengidentifikasi kapan perubahan menurunkan kinerja agen, memprioritaskan peningkatan, dan membangun kepercayaan dengan memvalidasi bahwa agen bekerja dengan benar sebelum penerapan produksi.
Anda dapat memanfaatkan pengukuran evaluasi untuk menyiapkan peringatan, melacak peningkatan, mengidentifikasi pola, dan menggunakan masukan untuk memandu pengembangan guna meningkatkan prompt atau alat.
Jika Anda melihat bahwa 15% kueri cuaca gagal dievaluasi, Anda dapat menyelidiki jejak spesifik tersebut untuk memahami apakah masalahnya adalah penanganan input yang buruk, kegagalan API, atau pemformatan respons yang salah.
Tab Masalah menyediakan tampilan terpusat dari segala sesuatu yang salah selama eksekusi alur kerja. Tab ini adalah perhentian pertama Anda saat men-debug kegagalan agen atau perilaku tak terduga.
Tab Masalah mencantumkan masalah seperti:
Pada tangkapan layar di atas, Anda dapat melihat Kesalahan Alat yang terjadi ketika API cuaca mengembalikan kesalahan 424 (Ketergantungan Gagal) atau 404 (Tidak Ditemukan). Tab masalah menunjukkan:
Pendekatan ini memudahkan untuk memahami apa yang salah tanpa menggali log atau melacak data.
Tab Masalah sangat berarti karena menggabungkan kegagalan alih-alih memaksa Anda untuk mencari tugas individu. Ini memberikan konteks lengkap dengan memasukkan detail kesalahan lengkap dan data terkait, sementara tingkat keparahan memungkinkan triase cepat sehingga Anda dapat memprioritaskan masalah mana yang harus ditangani terlebih dahulu dengan alamat yang tepat. Direct Link ke tugas sumber berarti bahwa satu klik membawa Anda ke titik eksekusi yang tepat di mana ada kesalahan.
Tab Trajectory/Lintasan menyediakan tampilan kronologis, bergaya percakapan, dari interaksi agen antara pengguna dan alat apa pun yang dipanggil oleh agen. Pandangan ini sangat bermanfaat untuk memahami konteks penuh dan alur perilaku agen.
Tampilan Lintasan berguna karena memungkinkan Anda melihat dengan tepat bagaimana agen memproses permintaan dari awal hingga akhir, memberi Anda visibilitas lengkap ke dalam perilaku agen. Anda dapat memvalidasi integrasi alat dengan memastikan alat dipanggil dengan parameter yang benar dan menerima tanggapan yang sesuai. Saat men-debug respons yang tidak terduga, lintasan membantu Anda melacak di mana logika menyimpang dari harapan Anda. Anda juga dapat menganalisis bagaimana konteks terbentuk selama beberapa putaran percakapan, menyaksikan alur kerja berkembang secara alami. Selain melakukan debug, lintasan berfungsi sebagai dokumentasi, memungkinkan Anda menangkap contoh perilaku yang benar yang dapat dibagikan dengan anggota tim atau digunakan sebagai kasus referensi untuk pengembangan di masa depan. Pandangan ini sangat berharga untuk membangun tim dengan AI generatif yang perlu memvalidasi kemampuan beradaptasi agen di berbagai skenario.
Mari kita berjalan melalui lintasan Weather Agent yang ditunjukkan pada tangkapan layar:
1. Permintaan pengguna
Percakapan dimulai dengan permintaan yang jelas dan spesifik tentang cuaca di New York City.
2. Agen melakukan panggilan alat
Agen mengenali bahwa ia membutuhkan data eksternal dan memanggil alat cuaca:
Contoh ini menunjukkan bahwa agen mengidentifikasi perkiraan koordinat NYC dengan benar, menyusun permintaan API dengan benar, dan menetapkan flag yang sesuai untuk cuaca saat ini.
IBM Telemetry menampilkan hasil ini baik sebagai JSON mentah dan tampilan pohon yang diurai dengan baik dan dapat diperluas.
3. Alat tersebut mengembalikan data
API cuaca merespons dengan data cuaca terstruktur:
Contoh ini menunjukkan bahwa tool berhasil mengambil data serta respons yang dihasilkan telah mengikuti skema yang diharapkan dan memuat semua bidang yang diperlukan. Mampu memeriksa respons alat mentah sangat penting untuk masalah debugging di mana agen salah menafsirkan output alat.
4. Agen merangkum hasil
Terakhir, agen memproses data terstruktur dan merespons secara alami:
Agen mengekstraksi suhu dan kode cuaca dengan benar dan mengubah data terstruktur menjadi bahasa alami. Respons ringkas dan menjawab pertanyaan pengguna.
Tab Lintasan juga mendukung pemfilteran berdasarkan peran untuk hanya melihat pesan pengguna, pesan agen, atau interaksi alat. Anda juga dapat memperluas dan menciutkan bagian percakapan panjang untuk fokus pada detail yang penting bagi Anda. Untuk analisis atau debugging lebih lanjut, Anda dapat mengekspor data sebagai JSON untuk melompat ke tugas terkait dari langkah-langkah lintasan untuk detail yang sesuai.
Selamat! Anda telah berhasil menyiapkan IBM Telemetry dengan watsonx Orchestrate dan mempelajari cara memantau dan menganalisis perilaku agen AI secara mendalam. IBM Telemetry menyediakan beberapa lapisan visibilitas untuk memberi Anda observabilitas lengkap tentang cara agen AI Anda berpikir, mengambil keputusan, dan bertindak. Kemampuan yang telah Anda jelajahi ini sangat penting untuk manajemen siklus hidup yang efektif dari operasi agen dalam produksi atau integrasi dengan kerangka kerja agen lain di lingkungan Anda.
Jika Anda mengalami masalah atau memiliki pertanyaan, periksa dokumentasi. Masalah yang paling umum tercakup dalam panduan pemecahan masalah. Anda juga dapat melakukan ulasan masalah GitHub untuk melihat apakah orang lain mengalami masalah serupa.
Pemantauan agen melalui platform seperti IBM Telemetry telah menciptakan ekosistem yang kuat untuk AgentOps, menjadi penting karena agen otonom mengambil tugas yang lebih kompleks yang melibatkan integrasi SDK, alat, dan API eksternal. Visibilitas yang Anda peroleh dalam perilaku agen memungkinkan Anda menciptakan sistem AI yang lebih andal, efisien, dan tepercaya.
Bangun, terapkan, dan kelola asisten dan agen AI yang kuat yang mengotomatiskan alur kerja dan proses dengan AI generatif.
Bangun masa depan bisnis Anda dengan solusi AI yang dapat Anda percaya.
Layanan IBM Consulting AI membantu merancang ulang cara kerja bisnis dengan AI untuk transformasi.