全部产品
Search
文档中心

Application Real-Time Monitoring Service:Mengontrol pengumpulan riwayat percakapan untuk aplikasi LLM

更新时间:Nov 10, 2025

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.

image

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

gen_ai.input.messages

Pesan input

gen_ai.input.messages

Terekam sepenuhnya

gen_ai.output.messages

Pesan output

gen_ai.output.messages

Terekam sepenuhnya

gen_ai.system_instructions

Instruksi sistem

gen_ai.system_instructions

Terekam sepenuhnya

gen_ai.tool.definitions

Definisi alat

-

  • type

  • name

  • description

Konfigurasi

  • Anda dapat mengonfigurasi perilaku ini menggunakan variabel lingkungan berikut:

    Variabel lingkungan

    Nilai

    OTEL_INSTRUMENTATION_GENAI_CAPTURE_MESSAGE_CONTENT

    True

    OTEL_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

"chat gpt-4"

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."
  }
]

GenAI Client Span 2

Properti

Nilai

Span name

"chat gpt-4"

gen_ai.provider.name

"openai"

gen_ai.request.model

"gpt-4"

gen_ai.request.max_tokens

200

gen_ai.request.top_p

1.0

gen_ai.response.id

"chatcmpl-call_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": "stop"
  }
]

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

gen_ai.input.messages

Pesan input

gen_ai.input.messages

Tidak direkam

gen_ai.output.messages

Pesan output

gen_ai.output.messages

Tidak direkam

gen_ai.system_instructions

Instruksi sistem

gen_ai.system_instructions

Tidak direkam

gen_ai.tool.definitions

Definisi alat

-

  • type

  • name

Konfigurasi

  • Anda dapat mengonfigurasi perilaku ini menggunakan variabel lingkungan berikut:

    Variabel lingkungan

    Nilai

    OTEL_INSTRUMENTATION_GENAI_CAPTURE_MESSAGE_CONTENT

    False

  • Untuk 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

"chat gpt-4"

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.tool.definitions

[
  {
    "type": "function",
    "name": "get_weather"
  }
]

GenAI Client Span 2

Properti

Nilai

Span name

"chat gpt-4"

gen_ai.provider.name

"openai"

gen_ai.request.model

"gpt-4"

gen_ai.request.max_tokens

200

gen_ai.request.top_p

1.0

gen_ai.response.id

"chatcmpl-call_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"]

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

gen_ai.input.messages

Pesan input

gen_ai.input.messages

Terekam sepenuhnya

gen_ai.output.messages

Pesan output

gen_ai.output.messages

Terekam sepenuhnya

gen_ai.system_instructions

Instruksi sistem

gen_ai.system_instructions

Terekam sepenuhnya

gen_ai.tool.definitions

Definisi alat

-

  • type

  • name

  • description

Secara default, saat probe dimulai, probe mencari folder pertama yang tersedia dalam urutan prioritas berikut untuk digunakan sebagai jalur log.

  1. Jika folder ditentukan menggunakan variabel lingkungan APSARA_APM_AGENT_WORKSPACE_DIR, log direkam dalam subfolder .apsara-apm/{language}/logs dari folder yang ditentukan.

  2. Folder log probe: /home/admin/.opt/.apsara-apm/{language}/logs

  3. Folder 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.

image.png

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

    True

    OTEL_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

"chat gpt-4"

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"]

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

"chat gpt-4"

gen_ai.provider.name

"openai"

gen_ai.request.model

"gpt-4"

gen_ai.request.max_tokens

200

gen_ai.request.top_p

1.0

gen_ai.response.id

"chatcmpl-call_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"]

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

Instal LoongCollector (Linux)

Windows

Instal LoongCollector (Linux)

Kubernetes

Instal LoongCollector (Kubernetes)

Langkah 2: Buat konfigurasi pengumpulan

  1. Login ke Konsol Simple Log Service, klik proyek, dan perluas Logstore yang diinginkan. Kemudian, klik ikon image di samping Data Import dan klik Import Now di area JSON - Text Log.

  2. Pilih kelompok mesin yang sudah ada atau buat kelompok mesin untuk host tempat log berada.

    image

  3. 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.

    image

    image

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

Catatan

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:

image.png

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

gen_ai.input.messages

TextPart.content

gen_ai.output.messages

TextPart.content

gen_ai.system_instructions

TextPart.content