AgentLoop mengumpulkan data observabilitas untuk aplikasi Java yang dibangun di atas framework AgentScope melalui probe Java. Berdasarkan standar OpenTelemetry, probe Java secara otomatis menangkap jejak pemanggilan aplikasi Anda dan melaporkan data eksekusi agen, pemanggilan model, serta pemanggilan tool ke AgentLoop. Topik ini menjelaskan cara mengintegrasikan aplikasi AgentScope Java ke dalam AgentLoop sehingga Anda dapat memantau status runtime aplikasi AI Anda secara real time.
Pengenalan framework
AgentScope adalah framework pengembangan aplikasi multi-agen open-source dari Alibaba. Framework ini menyediakan berbagai jenis agen seperti ReActAgent, mencakup adapter model bawaan seperti DashScope, serta mendukung tool calling, manajemen memori, dan kolaborasi multi-agen. AgentScope Java merupakan implementasi Java dari framework tersebut dan cocok untuk membangun aplikasi LLM dalam ekosistem JVM.
Setelah integrasi, data berikut dipantau secara otomatis:
Jejak eksekusi agen.
Pemanggilan LLM: penggunaan token serta konten input dan output dari pemanggilan model.
Jejak tool calling: detail pemanggilan setiap tool dalam
Toolkit.Langkah ReAct: aksi dan observasi pada setiap iterasi loop.
AgentLoop melaporkan data ini sebagai data Trace dan Metric.
Metode integrasi
Untuk mengintegrasikan aplikasi AgentScope Java ke AgentLoop, pertama-tama dapatkan parameter integrasi di Konsol AgentLoop, lalu instal probe Java sesuai dengan lingkungan deployment Anda.
Prasyarat dan batasan
Versi JDK — Jalankan aplikasi AgentScope Java pada JDK 17 atau versi yang lebih baru.
Memori JVM — Saat menginstal probe Java, pastikan memori heap maksimum JVM target lebih besar dari 300 MB.
Layanan AgentLoop — AgentLoop telah diaktifkan dan AgentSpace telah dibuat.
Dapatkan parameter integrasi
Login ke Konsol AgentLoop. Di panel navigasi sebelah kiri, klik Integration Center.
Klik kartu AgentScope.
Di halaman integrasi AgentScope, pilih bahasa Java.
Masukkan nama aplikasi. Halaman akan menghasilkan parameter dan instruksi instalasi yang diperlukan untuk mengintegrasikan probe Java.
Instal probe Java
Pilih salah satu metode instalasi berikut berdasarkan lingkungan deployment Anda:
Integrasikan dengan Container Service for Kubernetes (ACK) dan Container Compute Service (ACS) — Untuk aplikasi yang dideploy di kluster ACK atau ACS. Komponen ack-onepilot secara otomatis menginstal dan memelihara probe Java di lingkungan kontainer.
Integrasi manual — Untuk aplikasi yang berjalan di luar kluster ACK atau ACS, seperti aplikasi yang dijalankan dengan perintah
java -jar, Tomcat, atau Jetty. Anda mengunduh probe Java dan menambahkannya ke proses startup aplikasi secara manual.Setelah integrasi selesai dan aplikasi Anda direstart, Anda dapat memverifikasi bahwa data dilaporkan di bagian View monitoring details.
Integrasikan dengan ACK dan ACS
Assistant integrasi probe pemantauan aplikasi (ack-onepilot) adalah komponen utama untuk mengintegrasikan probe berbagai bahasa. Komponen ini secara otomatis menyiapkan paket probe pemantauan aplikasi di lingkungan kontainer dan mengatur lingkungan pelaporan untuk probe tersebut. Untuk informasi lebih lanjut tentang cara kerja ack-onepilot, lihat Overview of the ack-onepilot component.
Setelah probe diintegrasikan, versi probe baru akan diterapkan secara otomatis saat aplikasi Anda direstart, sehingga ack-onepilot meningkatkan probe ke versi terbaru dan menjaga konsistensi pengalaman Anda. Jika Anda tidak ingin probe yang dimount diperbarui secara otomatis saat rilis versi probe baru, Anda dapat mengontrol versi probe secara manual. Untuk informasi lebih lanjut, lihat Manually control the probe version.
Metode ini terdiri dari tiga langkah: instal ack-onepilot, berikan izin akses yang dibutuhkan ARMS, lalu aktifkan pemantauan aplikasi untuk aplikasi Anda.
Langkah 1: Instal assistant integrasi probe (ack-onepilot)
Login ke Konsol Container Service for Kubernetes. Di halaman Clusters, klik nama kluster target.
Di panel navigasi sebelah kiri, klik Add-ons, lalu cari ack-onepilot.
PentingVersi ack-onepilot harus 5.1.0 atau lebih baru.
Di kartu ack-onepilot, klik Install.
CatatanKomponen ack-onepilot mendukung hingga 1.000 Pod secara default. Untuk setiap tambahan 1.000 Pod di kluster, tingkatkan resource CPU ack-onepilot sebesar 0,5 core dan memori sebesar 512 MB.
Untuk menginstal ack-onepilot di kluster ACS, konfigurasikan accessKey dan accessKeySecret (ID AccessKey dan Rahasia AccessKey Akun Alibaba Cloud Anda) di bagian bawah kartu instalasi. Untuk informasi lebih lanjut, lihat Create an AccessKey pair. Pastikan akun Alibaba Cloud yang sesuai memiliki izin AliyunARMSFullAccess dan AliyunSTSAssumeRoleAccess.
Di halaman yang muncul, konfigurasikan parameter. Gunakan nilai default, lalu klik OK.
CatatanSetelah instalasi selesai, Anda dapat melakukan upgrade, mengonfigurasi, atau menguninstal komponen ack-onepilot di halaman Add-ons.
Langkah 2: Berikan izin akses ke resource ARMS
Prosedur otorisasi bergantung pada jenis kluster Anda:
Kluster ACK yang dikelola — Verifikasi apakah kluster berisi ARMS Addon Token. Jika token ada, tidak diperlukan otorisasi tambahan. Jika token tidak ada, tambahkan kebijakan akses secara manual.
Kluster khusus dan kluster terdaftar — Berikan pasangan AccessKey dari akun Alibaba Cloud yang memiliki izin ARMS kepada ack-onepilot.
Kluster ASK/ECI — Selesaikan otorisasi pada halaman Cloud Resource Access Authorization.
Kluster ACK yang dikelola
Jika ARMS Addon Token tidak ada di kluster ACK yang dikelola Anda, lakukan operasi berikut untuk memberikan izin akses ke resource ARMS secara manual. Jika ARMS Addon Token sudah ada, lanjutkan ke Langkah 3.
Periksa apakah ARMS Addon Token ada di kluster.
Login ke Konsol Container Service for Kubernetes. Di halaman Clusters, klik nama kluster target untuk membuka halaman detail kluster.
Di panel navigasi sebelah kiri, pilih Configurations > Secrets. Di bagian atas halaman, pilih kube-system untuk Namespace dan periksa apakah addon.arms.token ada.
Jika ARMS Addon Token ada di kluster, ARMS melakukan otorisasi tanpa kata sandi. Kluster Kubernetes yang dikelola secara default memiliki ARMS Addon Token, tetapi beberapa kluster yang dibuat pada versi sebelumnya mungkin tidak memilikinya. Oleh karena itu, untuk kluster Kubernetes yang dikelola, pertama-tama periksa apakah ARMS Addon Token ada. Jika tidak ada, lakukan otorisasi manual.
Tambahkan kebijakan akses secara manual.
Login ke Konsol Container Service for Kubernetes. Di halaman Clusters, klik nama kluster target.
Di tab Basic Information halaman Cluster Information, di bagian Cluster Resources, klik tautan di samping Worker RAM Role.
Di tab Permissions, klik Grant Permission.
Di panel Grant Permission, tambahkan dua kebijakan akses berikut lalu klik Confirm Grant Permission.
AliyunTracingAnalysisFullAccess: izin penuh untuk Managed Service for OpenTelemetry.
AliyunARMSFullAccess: izin penuh untuk ARMS.
Kluster khusus dan kluster terdaftar
Untuk memantau aplikasi di kluster khusus ACK dan kluster terdaftar ACK One, pastikan akun Alibaba Cloud yang sesuai memiliki izin AliyunARMSFullAccess dan AliyunSTSAssumeRoleAccess. Untuk informasi lebih lanjut tentang cara memberikan izin, lihat Grant permissions to a RAM user.
Setelah Anda menginstal komponen ack-onepilot, Anda juga harus memasukkan pasangan AccessKey dari akun Alibaba Cloud yang memiliki izin ARMS ke dalam ack-onepilot. Gunakan salah satu metode berikut.
Metode 1: Isi pasangan AccessKey di Helm
Login ke Konsol Container Service for Kubernetes. Di panel navigasi sebelah kiri, klik Clusters.
Di halaman Clusters, klik nama kluster target. Di panel navigasi sebelah kiri, pilih Applications > Helm, lalu klik Update di samping komponen ack-onepilot.
Ganti
accessKeydanaccessKeySecretdengan pasangan AccessKey akun saat ini, lalu klik OK.CatatanUntuk informasi lebih lanjut tentang cara mendapatkan pasangan AccessKey, lihat Create an AccessKey pair.
Di bagian
controllereditor YAML, temukanaccessKey: __ACCESSKEY__danaccessKeySecret: __ACCESSKEY_SECRET__, lalu ganti placeholder tersebut dengan pasangan AccessKey yang sebenarnya.Restart Deployment aplikasi.
Metode 2: Merujuk Kubernetes Secret
Login ke Konsol Container Service for Kubernetes. Di panel navigasi sebelah kiri, klik Clusters.
Di halaman Clusters, klik nama kluster target. Di panel navigasi sebelah kiri, pilih Configurations > Secrets.
Pilih namespace ack-onepilot, buat Secret, lalu tambahkan pasangan AccessKey.
CatatanUntuk informasi lebih lanjut tentang cara mendapatkan pasangan AccessKey, lihat Create an AccessKey pair.
Atur nama Secret menjadi
ack-onepilot-akskdan pilih Opaque sebagai tipe. Di bagian data, tambahkan dua entri: atur nama menjadiakdansk, lalu atur nilai menjadi ID AccessKey dan Rahasia AccessKey yang sesuai. Kemudian klik OK.Di panel navigasi sebelah kiri, pilih Workloads > Deployments, lalu klik komponen ack-onepilot. Komponen ini biasanya berada di namespace ack-onepilot dan bernama ack-onepilot-ack-onepilot.
Di pojok kanan atas halaman ack-onepilot-ack-onepilot, klik Edit. Di bagian Environment Variables, tambahkan
ONE_PILOT_ACCESSKEYdanONE_PILOT_ACCESSKEY_SECRETserta referensikan nilai yang disimpan di Secret, lalu klik OK.Untuk Secret, pilih ack-onepilot-aksk. Untuk ONE_PILOT_ACCESSKEY, pilih ak sebagai kunci. Untuk ONE_PILOT_ACCESSKEY_SECRET, pilih sk sebagai kunci.
Kluster ASK/ECI
Untuk memantau aplikasi di kluster ACK Serverless atau kluster yang terhubung ke ECI, selesaikan otorisasi di halaman Cloud Resource Access Authorization, lalu restart semua Pod di bawah komponen ack-onepilot.
Langkah 3: Aktifkan pemantauan aplikasi untuk aplikasi Java
Untuk mengaktifkan pemantauan aplikasi, tambahkan label pemantauan ke Deployment aplikasi Anda di editor YAML.
Login ke Konsol Container Service for Kubernetes. Di panel navigasi sebelah kiri, klik Clusters.
Di halaman Clusters, klik nama kluster target. Di panel navigasi sebelah kiri, pilih Workloads > Deployments.
Di halaman Deployments, temukan aplikasi target lalu pilih Edit YAML.
Untuk membuat aplikasi baru, klik Create Resources from YAML.
Di file YAML, tambahkan
labelsberikut di bawah level spec.template.metadata.labels: armsPilotAutoEnable: "on" armsPilotCreateAppName: "deployment-name" # Ganti deployment-name dengan nama aplikasi Anda. armsPilotAppWorkspace: "workspace" # Ganti dengan nama Workspace saat ini. aliyun.com/app-language: javaCuplikan berikut menunjukkan posisi label dalam sebuah Deployment:
apiVersion: apps/v1 kind: Deployment metadata: name: arms-springboot-demo spec: template: metadata: labels: armsPilotAutoEnable: "on" armsPilotCreateAppName: "arms-k8s-demo" armsPilotAppWorkspace: "workspace"Klik Update.
Integrasi manual
Gunakan integrasi manual untuk menginstal probe Java di lingkungan selain kluster ACK atau ACS, seperti aplikasi yang dijalankan dengan perintah java -jar, Tomcat, atau Jetty.
Setelah memilih bahasa Java di halaman integrasi AgentScope, temukan bagian integrasi manual dan unduh probe Java sesuai instruksi di layar. Halaman tersebut telah menghasilkan parameter integrasi untuk AgentSpace saat ini.
Ekstrak probe.
Buka direktori paket probe dan jalankan perintah berikut untuk mengekstrak paket ke direktori kerja pilihan Anda.
unzip AliyunJavaAgent.zip -d /{user.workspace}/Catatan{user.workspace} adalah direktori contoh. Ganti dengan direktori aktual Anda.
Konfigurasikan parameter AppName dan LicenseKey.
Gunakan LicenseKey yang Anda dapatkan sebelumnya dari Integration Center AgentLoop. AppName adalah nama yang ditampilkan untuk aplikasi di AgentLoop dan dapat dikustomisasi. Dalam arsitektur terdistribusi, satu aplikasi dapat berisi beberapa instans peer.
PentingAgentSpace yang berbeda menggunakan LicenseKey yang berbeda. Setelah Anda mengganti AgentSpace, dapatkan kembali LicenseKey.
Sediakan AppName dan LicenseKey dengan salah satu metode berikut:
Metode 1 (disarankan): Gunakan parameter startup -D. Ganti placeholder
{LicenseKey}dan{AppName}dalam perintah startup di Langkah 4 dengan LicenseKey yang Anda dapatkan dari konsol dan AppName aplikasi.Metode 2: Modifikasi file konfigurasi probe. Gunakan metode ini jika Anda ingin menggunakan kembali skrip startup di berbagai aplikasi. Lakukan langkah-langkah berikut:
Periksa versi probe Java di file versi yang diekstrak pada langkah sebelumnya.
Modifikasi file konfigurasi probe berdasarkan versi probe:
Untuk probe 4.0.0 atau lebih baru, buat file arms-agent.properties di direktori probe dan tambahkan konfigurasi berikut. Lalu tambahkan
-Dotel.javaagent.configuration-file=/path/to/arms-agent.propertieske perintah startup atau atur variabel lingkunganOTEL_JAVAAGENT_CONFIGURATION_FILE=/path/to/arms-agent.propertiesuntuk mengaktifkan file konfigurasi.arms.licenseKey={LicenseKey} arms.appName={AppName}Untuk probe sebelum 4.0.0, tambahkan konfigurasi berikut ke file arms-agent.config di paket probe.
arms.licenseKey={LicenseKey} arms.appName={AppName}
CatatanUntuk versi probe sebelum 4.4.0, metode ini secara default terhubung ke
default workspace.Untuk informasi selengkapnya mengenai item konfigurasi lainnya dalam file konfigurasi probe, lihat Ubah file konfigurasi probe Java dan wilayah pelaporan default.
Tambahkan perintah integrasi ke perintah startup.
Ganti
{user.workspace}dengan direktori ekstraksi aktual paket probe, dan ganti demoApp.jar dengan path aktual paket JAR.CatatanJika versi probe sebelum 2.7.3.5, ganti AliyunJavaAgent/aliyun-java-agent.jar dalam topik ini dengan ArmsAgent/arms-bootstrap-1.7.0-SNAPSHOT.jar. Kami menyarankan Anda segera meningkatkan probe ke versi terbaru.
Pada sistem operasi Windows, ganti
/dalam skrip dengan\, dan ganti file.shdengan file.bat.Versi probe 2.7.1.4 dan lebih baru mendukung pengaktifan Application Security saat Anda mengintegrasikan pemantauan aplikasi. Untuk mengaktifkan Application Security, tambahkan
-Darms.appsec.enable=trueke skrip. Untuk informasi lebih lanjut tentang aturan penagihan Application Security, lihat Billing rules.
Tambahkan parameter -javaagent sesuai dengan lingkungan runtime Anda:
Lingkungan runtime
Langkah
Aplikasi Spring Boot atau aplikasi Java lain yang dijalankan dengan perintah
java -jarTambahkan parameter -javaagent ke perintah startup. Pastikan parameter -javaagent ditempatkan sebelum parameter -jar.
java -javaagent:/{user.workspace}/AliyunJavaAgent/aliyun-java-agent.jar -Darms.licenseKey={LicenseKey} -Darms.appName={AppName} -Darms.workspace={workspace} -jar demoApp.jarTomcat
Tambahkan konfigurasi berikut ke file
{TOMCAT_HOME}/bin/setenv.sh.JAVA_OPTS="$JAVA_OPTS -javaagent:/{user.workspace}/AliyunJavaAgent/aliyun-java-agent.jar -Darms.licenseKey={LicenseKey} -Darms.appName={AppName} -Darms.workspace={workspace} "Jika versi Tomcat Anda tidak memiliki file konfigurasisetenv.sh, buka file{TOMCAT_HOME}/bin/catalina.shdan tambahkan konfigurasi di atas setelahJAVA_OPTS. Untuk contoh spesifik, lihat baris 256 di catalina.sh.Jetty
Tambahkan konfigurasi berikut ke file konfigurasi
{JETTY_HOME}/start.ini.aliyun-java-agent.jar --exec -javaagent:/{user.workspace}/AliyunJavaAgent/aliyun-java-agent.jar -Darms.licenseKey={LicenseKey} -Darms.appName={AppName} -Darms.workspace={workspace}Untuk menerapkan beberapa instans aplikasi yang sama pada satu server, gunakan parameter -Darms.agentId (nomor logis) untuk membedakan proses JVM yang akan diintegrasikan. Contohnya:
java -javaagent:/{user.workspace}/AliyunJavaAgent/aliyun-java-agent.jar -Darms.licenseKey={LicenseKey} -Darms.appName={AppName} -Darms.workspace={workspace} -Darms.agentId=001 -jar demoApp.jarRestart aplikasi Java.
Kode contoh
Contoh berikut menggunakan AgentScope Java 2.0.1 untuk membangun agen minimal yang dapat dijalankan yang berisi satu pemanggilan model dan satu pemanggilan tool. Sebelum menjalankan contoh ini, pastikan JDK 17 atau versi yang lebih baru telah terinstal dan DASHSCOPE_API_KEY telah diatur sebagai variabel lingkungan.
Tambahkan dependensi AgentScope Java 2.0.1 ke pom.xml proyek Maven Anda:
Tambahkan
agentscope-coreuntuk menggunakan fitur dasar sepertiReActAgent.Tambahkan
agentscope-extensions-model-dashscopeuntuk memanggil model melalui DashScope.Tambahkan
agentscope-harnessjika fitur Harness diperlukan.
<dependencies>
<dependency>
<groupId>io.agentscope</groupId>
<artifactId>agentscope-core</artifactId>
<version>2.0.1</version>
</dependency>
<dependency>
<groupId>io.agentscope</groupId>
<artifactId>agentscope-extensions-model-dashscope</artifactId>
<version>2.0.1</version>
</dependency>
<!-- Tambahkan dependensi ini jika fitur Harness diperlukan -->
<dependency>
<groupId>io.agentscope</groupId>
<artifactId>agentscope-harness</artifactId>
<version>2.0.1</version>
</dependency>
</dependencies>Buat agen minimal dengan tool calling: adapter model DashScopeChatModel diimpor dari io.agentscope.extensions.model.dashscope, pesan dibangun dengan Msg, MsgRole, dan TextBlock, serta tool didaftarkan dengan Toolkit.
import io.agentscope.core.agent.ReActAgent;
import io.agentscope.core.message.Msg;
import io.agentscope.core.message.MsgRole;
import io.agentscope.core.message.TextBlock;
import io.agentscope.core.tool.Tool;
import io.agentscope.core.tool.ToolParam;
import io.agentscope.core.tool.Toolkit;
import io.agentscope.extensions.model.dashscope.DashScopeChatModel;
public class QuickStart {
public static void main(String[] args) {
Toolkit toolkit = new Toolkit();
toolkit.registerTool(new SimpleTools());
DashScopeChatModel model = DashScopeChatModel.builder()
.apiKey(System.getenv("DASHSCOPE_API_KEY"))
.modelName("qwen-plus")
.build();
ReActAgent agent = ReActAgent.builder()
.name("TravelAgent")
.sysPrompt("You are a travel assistant. Use tools when needed.")
.model(model)
.toolkit(toolkit)
.build();
Msg msg = Msg.builder()
.role(MsgRole.USER)
.content(TextBlock.builder()
.text("What time is it in Hangzhou? Give me one travel tip.")
.build())
.build();
Msg response = agent.call(msg).block();
System.out.println(response.getTextContent());
}
}
class SimpleTools {
@Tool(name = "get_time", description = "Get current local time")
public String getTime(
@ToolParam(name = "city", description = "City name") String city) {
return city + ": " + java.time.LocalDateTime.now()
.format(java.time.format.DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
}
}Untuk menjalankan contoh ini dengan pemantauan diaktifkan, kemas contoh sebagai file JAR dan jalankan dengan perintah integrasi di Langkah 4 prosedur integrasi manual. Ganti demoApp.jar dengan path file JAR contoh. Jika Anda menerapkan contoh di kluster ACK atau ACS, tambahkan label pemantauan yang dijelaskan di Langkah 3 ke Deployment contoh.
Lihat detail pemantauan
Login ke Konsol AgentLoop dan pilih AgentSpace target. Di panel navigasi sebelah kiri, klik AI Agent Observability.
Di halaman AI Application List, temukan aplikasi AgentScope Java yang telah diintegrasikan lalu klik Application Name untuk membuka halaman detail.
Di halaman detail aplikasi, Anda dapat melihat jejak pemanggilan aplikasi:
Ikhtisar — Termasuk Trace ID, waktu mulai, durasi total, total token, dan sebagainya.
Timeline jejak — Menampilkan rantai pemanggilan agen lengkap berdasarkan level dan durasi setiap rentang. Rentang akar bertipe AGENT dan sesuai dengan satu eksekusi agen. Durasi rentang ini merupakan durasi total pemanggilan. Level di bawahnya bertipe STEP (setiap iterasi loop ReAct), LLM (pemanggilan model, termasuk jumlah token input dan output), dan TOOL (tool calling, seperti
get_timedalam contoh).Penyaringan tipe rentang — Menyaring rentang berdasarkan AGENT, STEP, LLM, atau TOOL untuk dengan cepat menemukan node target.
Detail rentang — Klik suatu rentang dan lihat detailnya di panel detail di sebelah kanan. Misalnya, rentang LLM menampilkan Input Messages (prompt sistem dan pertanyaan pengguna) serta Output Messages (respons model dan detail pemanggilan tool).
Referensi
Untuk API dan penggunaan lebih lanjut AgentScope Java 2.0.1, lihat dokumentasi resmi AgentScope.
Untuk menginstal probe Java di Container Service for Kubernetes (ACK) atau Container Compute Service (ACS), lihat Install the Java probe in ACK and ACS clusters by using the ack-onepilot component.
Untuk menginstal probe Java secara manual, lihat Manually install the probe.
Untuk metode troubleshooting ketika integrasi probe Java atau pelaporan data tidak normal, lihat dokumentasi troubleshooting probe Java.