Chat API adalah antarmuka asinkron untuk DAS Agent yang mendukung tanya jawab berbasis pengetahuan, diagnostik kinerja, dan Percakapan multi-putaran. API ini mengembalikan proses penalaran agen dan jawaban akhir sebagai aliran Server-Sent Events (SSE). Topik ini menjelaskan cara mengintegrasikan Chat API menggunakan SDK Java, Python, dan Go, lengkap dengan contoh parsing event SSE dan Percakapan multi-putaran.
Prasyarat
DAS Agent telah diaktifkan, wilayah instans terkelola sesuai dengan negara atau wilayah DAS Agent, dan instans tersebut telah ditautkan ke DAS Agent.
Alibaba Cloud DAS SDK versi terbaru telah diinstal.
Wilayah diatur ke
cn-shanghaidan titik akhir diatur kedas.cn-shanghai.aliyuncs.com.Variabel lingkungan
ALIBABA_CLOUD_ACCESS_KEY_IDdanALIBABA_CLOUD_ACCESS_KEY_SECRETtelah dikonfigurasi, atau rantai kredensial default Alibaba Cloud digunakan.
Chat API adalah antarmuka berbayar yang dikenai biaya berdasarkan jumlah karakter input dan output. Untuk informasi selengkapnya, lihat penagihan DAS Agent.
Event inti
Aliran SSE mengikuti protokol ag-ui. Tabel berikut menjelaskan jenis event utama.
Jenis Peristiwa | Bidang kunci | Deskripsi |
|
| Menunjukkan bahwa tugas telah dimulai. Menandai awal sesi chat. |
|
| Menunjukkan bahwa tugas telah selesai. Tidak ada event tambahan yang dihasilkan setelah event ini. |
|
| Menandai awal pesan teks. |
|
| Berisi fragmen teks incremental. Gabungkan nilai |
|
| Menandai akhir pesan teks. |
|
| Event heartbeat atau status dari agen, seperti |
|
| Menunjukkan bahwa agen telah memulai pemanggilan tool, seperti |
|
| Mengalirkan parameter tool sebagai fragmen teks JSON. Gabungkan nilai |
|
| Menunjukkan bahwa semua parameter tool telah dikirim dan tool akan segera dieksekusi. |
|
| Mengembalikan hasil eksekusi tool. Bidang |
Urutan event khas
Contoh berikut menggunakan prompt "Apply SQL throttling to instance rm-uf63bopu77b*******" untuk menggambarkan urutan lengkap event SSE.
1. Mulai tugas
Setelah server menerima permintaan, server mengirim event RUN_STARTED yang menandai awal sesi. Klien dapat menggunakan event ini untuk memulai pengatur waktu atau menginisialisasi UI.
{"Type":"RUN_STARTED","RunId":"58abc22e-5742-4e9b-802e-5f060a0ca2e3"}2. Penggemakan input pengguna (dapat diabaikan)
Server menggemakan pesan pengguna sebagai pesan teks dengan Role=user. Klien biasanya tidak perlu menampilkan pesan ini. Filter berdasarkan Role untuk melewatinya.
{"Type":"TEXT_MESSAGE_START","Role":"user","MessageId":"20d2bc27-1644-47e5-8816-b0e764e84a6e"}
{"Type":"TEXT_MESSAGE_CONTENT","MessageId":"20d2bc27-1644-47e5-8816-b0e764e84a6e","Delta":"Apply SQL throttling to instance rm-uf63bopu77b*******"}
{"Type":"TEXT_MESSAGE_END","MessageId":"20d2bc27-1644-47e5-8816-b0e764e84a6e"}3. Heartbeat agen (dapat diabaikan)
Selama fase penalaran model, event ACTIVITY_DELTA berfungsi sebagai sinyal heartbeat. Lewati event ini di klien.
{"Type":"ACTIVITY_DELTA","ActivityType":"waiting_for_agent_thinking","Patch":[],"MessageId":""}4. Output analisis agen (Role=assistant)
Model mengalirkan penalarannya melalui event TEXT_MESSAGE_CONTENT.Delta. Gabungkan nilai Delta untuk MessageId yang sama guna menyusun respons lengkap.
{"Type":"TEXT_MESSAGE_START","Role":"assistant","MessageId":"36aaafdb-ea7f-4475-bad7-136e12117959"}
{"Type":"TEXT_MESSAGE_CONTENT","MessageId":"36aaafdb-ea7f-4475-bad7-136e12117959","Delta":"I need to check the SQL execution status of this instance first to determine which SQL statements require throttling. Let me query the recent SQL audit logs.\n\n"}
{"Type":"TEXT_MESSAGE_END","MessageId":"36aaafdb-ea7f-4475-bad7-136e12117959"}5. Pemanggilan tool oleh agen
Ketika agen memanggil tool eksternal seperti das_api, event mengikuti urutan berikut: TOOL_CALL_START → beberapa TOOL_CALL_ARGS → TOOL_CALL_END → TOOL_CALL_RESULT.
Awal Pemanggilan
{"Type":"TOOL_CALL_START","ToolCallId":"call_0fd4d07290b54dd7b7064cc2","ToolCallName":"das_api","ParentMessageId":"36aaafdb-ea7f-4475-bad7-136e12117959"}Parameter streaming
Beberapa event TOOL_CALL_ARGS.Delta harus digabungkan berdasarkan ToolCallId. Setelah digabungkan, uraikan hasilnya sebagai objek JSON lengkap:
{
"command": "execute",
"api_name": "getdassqlloghotdata",
"parameters": {
"instance_id": "rm-uf63bopu77b*******",
"start": "2026-03-05T15:54:16+08:00",
"end": "2026-03-05T16:54:16+08:00",
"max_records_per_page": 10,
"include_fields": ["sql_text", "execution_count", "avg_consume"],
"security_risk": "LOW"
}
}Akhir parameter dan hasil eksekusi
{"Type":"TOOL_CALL_END","ToolCallId":"call_0fd4d07290b54dd7b7064cc2"}
{"Type":"TOOL_CALL_RESULT","ToolCallId":"call_0fd4d07290b54dd7b7064cc2","MessageId":"36aaafdb-ea7f-4475-bad7-136e12117959","Content":"API call succeeded. Response: ..."}6. Akhir tugas
Event RUN_FINISHED menunjukkan akhir aliran SSE. Klien dapat menghentikan pengatur waktu dan menutup koneksi.
{"Type":"RUN_FINISHED","RunId":"58abc22e-5742-4e9b-802e-5f060a0ca2e3"}Contoh SDK
Catatan penggunaan
Untuk Percakapan multi-putaran, selalu berikan
SessionIdyang sama. Jika tidak, model tidak dapat mempertahankan konteks dari putaran sebelumnya.Aliran SSE berisi event heartbeat (
ACTIVITY_DELTA). Lewati event ini di klien.Chat API dikenai biaya berdasarkan jumlah karakter input dan output. Selama pengembangan, mulailah dengan kueri uji sederhana untuk menghindari biaya tak terduga.