Secara default, probe merekam riwayat percakapan selama panggilan yang melibatkan Large Language Models (LLM), seperti panggilan LLM dan agen. Format data riwayat percakapan mengikuti spesifikasi OpenTelemetry. Topik ini menjelaskan cara mengonfigurasi perilaku pengumpulan riwayat percakapan untuk aplikasi LLM Anda.
Untuk mendukung berbagai skenario perekaman, probe ARMS menyediakan tiga mode pengumpulan dan perekaman riwayat percakapan berikut:
Rekam riwayat percakapan dalam Atribut Span (default).
Hentikan perekaman riwayat percakapan.
Rekam riwayat percakapan dalam log.
Anda dapat menyesuaikan konfigurasi untuk memodifikasi perilaku pengumpulan riwayat percakapan aplikasi LLM sesuai kebutuhan.
Prasyarat
Anda telah menginstal probe Python atau probe Java.
Versi framework dan probe harus memenuhi persyaratan berikut:
Aplikasi Python
Komponen/Framework
Versi komponen yang didukung
Skenario yang Didukung
Versi probe yang diperlukan
OpenAI Python SDK
1.X
ChatCompletion
Completion
Embedding
2.0.0 atau lebih baru
Aplikasi Java
Komponen/Framework
Versi komponen yang didukung
Skenario yang Didukung
Versi probe yang diperlukan
OpenAI Java SDK
1.1.0 atau lebih baru
ChatCompletion
Completion
Embedding
4.6.0 atau lebih baru
Spring AI
1.0.0 atau lebih baru
OpenAI ChatModel
ChatClient (Default)
ToolManager (Default)
4.6.0 atau lebih baru
Spring AI Alibaba
1.0.0.3 atau lebih baru
DashScope ChatModel
4.6.0 atau lebih baru
Contoh
Topik ini memberikan contoh panggilan React Agent yang mencakup fungsi. Aplikasi LLM memanggil model bahasa besar dengan definisi alat. Model kemudian mengembalikan permintaan tool_call. Setelah aplikasi menyelesaikan pemanggilan alat, aplikasi tersebut memanggil kembali model bahasa besar dengan hasil pemanggilan alat untuk menghasilkan keluaran akhir. Grafik deret waktu berikut menunjukkan prosedur pemanggilan tersebut.

Rekam riwayat percakapan dalam Atribut Span
Perilaku pengumpulan dan format data
Ini adalah perilaku default. Probe merekam pesan input, pesan output, instruksi sistem, dan definisi alat dalam format JSON di dalam Atribut Span.
Nama atribut | Deskripsi | Skema | Integritas konten |
| Pesan input | Terekam sepenuhnya | |
| Pesan output | Terekam sepenuhnya | |
| Instruksi sistem | Terekam sepenuhnya | |
| Definisi alat | - |
|
Konfigurasi
Anda dapat mengonfigurasi perilaku ini menggunakan variabel lingkungan berikut:
Variabel lingkungan
Nilai
OTEL_INSTRUMENTATION_GENAI_CAPTURE_MESSAGE_CONTENT
TrueOTEL_INSTRUMENTATION_GENAI_MESSAGE_CONTENT_CAPTURE_STRATEGY
"span-attributes"Untuk aplikasi Java, Anda juga dapat menambahkan System Properties ke perintah startup. Misalnya:
-Dotel.instrumentation.genai.capture-message-content=true \ -Dotel.instrumentation.genai.message-content.capture-strategy=span-attributes
Contoh
GenAI Client Span 1
Properti | Nilai |
Span name |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
| |
| |
GenAI Client Span 2
Properti | Nilai |
Span name |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
| |
Hentikan pengumpulan riwayat percakapan
Perilaku pengumpulan dan format data
Dalam mode ini, probe tidak merekam detail seperti pesan input, pesan output, atau instruksi sistem. Untuk definisi alat, hanya informasi dasar yang direkam dalam format JSON.
Nama atribut | Deskripsi | Skema | Integritas konten |
| Pesan input | Tidak direkam | |
| Pesan output | Tidak direkam | |
| Instruksi sistem | Tidak direkam | |
| Definisi alat | - |
|
Konfigurasi
Anda dapat mengonfigurasi perilaku ini menggunakan variabel lingkungan berikut:
Variabel lingkungan
Nilai
OTEL_INSTRUMENTATION_GENAI_CAPTURE_MESSAGE_CONTENT
FalseUntuk aplikasi Java, Anda juga dapat menambahkan System Property ke perintah startup. Misalnya:
-Dotel.instrumentation.genai.capture-message-content=false
Contoh
GenAI Client Span 1
Properti | Nilai |
Span name |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
GenAI Client Span 2
Properti | Nilai |
Span name |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Rekam riwayat percakapan dalam log lokal
Perilaku pengumpulan dan format data
Dalam mode ini, hanya informasi dasar yang disimpan dalam Atribut Span. Probe merekam pesan input, pesan output, instruksi sistem, dan definisi alat sebagai log satu baris dalam format JSON. Log disimpan ke file log lokal.
Nama atribut | Deskripsi | Skema | Integritas konten |
| Pesan input | Terekam sepenuhnya | |
| Pesan output | Terekam sepenuhnya | |
| Instruksi sistem | Terekam sepenuhnya | |
| Definisi alat | - |
|
Secara default, saat probe dimulai, probe mencari folder pertama yang tersedia dalam urutan prioritas berikut untuk digunakan sebagai jalur log.
Jika folder ditentukan menggunakan variabel lingkungan APSARA_APM_AGENT_WORKSPACE_DIR, log direkam dalam subfolder
.apsara-apm/{language}/logsdari folder yang ditentukan.Folder log probe:
/home/admin/.opt/.apsara-apm/{language}/logsFolder home:
~/.apsara-apm/{language}/{agent_version}_{agent_commit_id}/logs
Saat aplikasi dimulai, probe mencetak pesan log ke stdout yang menunjukkan folder penyimpanan log. Untuk menyederhanakan manajemen folder, Anda dapat menentukan folder menggunakan variabel lingkungan APSARA_APM_AGENT_WORKSPACE_DIR.
![]()
File log riwayat percakapan diberi nama dalam format genai_messages_{ip}_{pid}.log. Ukuran maksimum file log adalah 256 MB. Saat ukuran ini terlampaui, file akan diputar. Hanya dua file log terbaru yang disimpan dalam sistem file. File lama akan dihapus.
Konfigurasi
Anda dapat mengonfigurasi perilaku ini menggunakan variabel lingkungan berikut:
Variabel lingkungan
Nilai
OTEL_INSTRUMENTATION_GENAI_CAPTURE_MESSAGE_CONTENT
TrueOTEL_INSTRUMENTATION_GENAI_MESSAGE_CONTENT_CAPTURE_STRATEGY
"event"Untuk aplikasi Java, Anda juga dapat menambahkan System Properties ke perintah startup. Misalnya:
-Dotel.instrumentation.genai.capture-message-content=true \ -Dotel.instrumentation.genai.message-content.capture-strategy=event
Contoh
GenAI Client Span 1
Properti | Nilai |
Span name |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
GenAI Client Event 1
spanId sesuai dengan GenAI Client Span 1.
{
"scope": {
"name": "aliyun.instrumentation.openai",
"version": "1.0.1"
},
"timeUnixNano": 1760080084146812928,
"severity": "UNSPECIFIED",
"attributes": {
"event.name": "gen_ai.client.inference.operation.details",
"gen_ai.provider.name": "openai",
"gen_ai.operation.name": "chat",
"gen_ai.request.model": "gpt-4",
"gen_ai.request.max_tokens": 200,
"gen_ai.request.top_p": 1.0,
"gen_ai.response.id": "chatcmpl-9J3uIL87gldCFtiIbyaOvTeYBRA3l",
"gen_ai.response.model": "gpt-4-0613",
"gen_ai.usage.output_tokens": 17,
"gen_ai.usage.input_tokens": 47,
"gen_ai.response.finish_reasons": ["tool_calls"],
"gen_ai.input.messages": "[{\"role\":\"user\",\"parts\":[{\"type\":\"text\",\"content\":\"Weather in Paris?\"}]}]",
"gen_ai.output.messages": "[{\"role\":\"assistant\",\"parts\":[{\"type\":\"tool_call\",\"id\":\"call_VSPygqKTWdrhaFErNvMV18Yl\",\"name\":\"get_weather\",\"arguments\":{\"location\":\"Paris\"}}],\"finish_reason\":\"tool_call\"}]",
"gen_ai.tool.definitions": "[{\"type\":\"function\",\"name\":\"get_weather\",\"description\":\"Get the current temperature for a specific location.\"}]"
},
"traceId": "0b46a347592ac487ed092ebe802c6818",
"spanId": "b3c40af8cd1a522c"
}GenAI Client Span 2
Properti | Nilai |
Span name |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
GenAI Client Event 2
spanId sesuai dengan GenAI Client Span 2.
{
"scope": {
"name": "aliyun.instrumentation.openai",
"version": "1.0.1"
},
"timeUnixNano": 1760080084176812928,
"severity": "UNSPECIFIED",
"attributes": {
"event.name": "gen_ai.client.inference.operation.details",
"gen_ai.provider.name": "openai",
"gen_ai.operation.name": "chat",
"gen_ai.request.model": "gpt-4",
"gen_ai.request.max_tokens": 200,
"gen_ai.request.top_p": 1.0,
"gen_ai.response.id": "chatcmpl-VSPygqKTWdrhaFErNvMV18Yl",
"gen_ai.response.model": "gpt-4-0613",
"gen_ai.usage.output_tokens": 52,
"gen_ai.usage.input_tokens": 97,
"gen_ai.response.finish_reasons": ["stop"],
"gen_ai.input.messages": "[{\"role\":\"user\",\"parts\":[{\"type\":\"text\",\"content\":\"Weather in Paris?\"}]},{\"role\":\"assistant\",\"parts\":[{\"type\":\"tool_call\",\"id\":\"call_VSPygqKTWdrhaFErNvMV18Yl\",\"name\":\"get_weather\",\"arguments\":{\"location\": \"Paris\"}}]},{\"role\":\"tool\",\"parts\":[{\"type\":\"tool_call_response\",\"id\":\"call_VSPygqKTWdrhaFErNvMV18Yl\",\"response\":\"rainy, 57°F\"}]}]",
"gen_ai.output.messages": "[{\"role\":\"assistant\",\"parts\":[{\"type\":\"text\",\"content\":\"The weather in Paris is currently rainy with a temperature of 57°F.\"}],\"finish_reason\":\"sto\"}]"
},
"traceId": "0b46a347592ac487ed092ebe802c6818",
"spanId": "0a706a178bd746c5"
}Rekam riwayat percakapan di SLS
Dalam mode Rekam riwayat percakapan dalam log lokal, Anda dapat menggunakan LoongCollector untuk mengirim log lokal ke Simple Log Service (SLS) guna pemrosesan dan konsumsi lebih lanjut.
Langkah 1: Instal LoongCollector
Jika LoongCollector sudah terinstal di lingkungan Anda, lewati langkah ini.
Jenis lingkungan | Referensi |
Linux | |
Windows | |
Kubernetes |
Langkah 2: Buat konfigurasi pengumpulan
Login ke Konsol Simple Log Service, klik proyek, dan perluas Logstore yang diinginkan. Kemudian, klik ikon
di samping Data Import dan klik Import Now di area JSON - Text Log.Pilih kelompok mesin yang sudah ada atau buat kelompok mesin untuk host tempat log berada.

Buat konfigurasi pengumpulan. Di bawah Konfigurasi Input, atur File Path ke jalur folder log. Periksa output standar dari startup aplikasi untuk mengonfirmasi jalur folder tersebut. Untuk Konfigurasi Pemrosesan, pilih penguraian JSON.


Tambahkan setidaknya indeks berikut ke log untuk memfasilitasi pengambilan data dan analisis.

Untuk informasi lebih lanjut tentang pengumpulan log, lihat Kumpulkan log teks dari host.
Langkah 3: Lihat log yang dikumpulkan di SLS
Setelah Anda menyelesaikan konfigurasi awal, log akan dikumpulkan di SLS dalam beberapa menit:

Sesuaikan batas panjang pesan
Untuk mencegah penggunaan sumber daya berlebihan akibat pesan yang terlalu panjang, probe secara default memotong konten pesan panjang. Panjang default adalah 8.192 karakter per pesan. Pesan yang dipotong diakhiri dengan identifikasi ...[truncated]. Contohnya:
[
{
"role": "assistant",
"parts": [
{
"type": "text",
"content": "The weather in Paris...[truncated]"
}
],
"finish_reason": "stop"
}
]Konfigurasi
Anda dapat mengonfigurasi perilaku ini menggunakan variabel lingkungan berikut:
Variabel lingkungan
Nilai
OTEL_INSTRUMENTATION_GENAI_MESSAGE_CONTENT_MAX_LENGTH
8192
Untuk aplikasi Java, Anda juga dapat menambahkan System Property ke perintah startup. Misalnya:
-Dotel.instrumentation.genai.message-content.max-length=8192
Isi pesan yang dapat dipotong
Jenis riwayat percakapan | Pesan |
| TextPart.content |
| TextPart.content |
| TextPart.content |