Antarmuka layanan memory store telah diintegrasikan ke dalam SDK Node.js Tablestore dan dapat dipanggil melalui TableStore.Client. Nama metodenya menggunakan format camelCase, seperti createMemoryStore dan addMemories.
Install
Instal SDK Node.js menggunakan npm. Versi yang digunakan harus 5.6.5 atau lebih baru.
npm install tablestore@^5.6.5Initialize the client
Inisialisasi TableStore.Client dengan endpoint instans, AccessKey, dan nama instans.
const TableStore = require("tablestore");
const client = new TableStore.Client({
accessKeyId: "<AccessKey ID>",
secretAccessKey: "<AccessKey Secret>",
endpoint: "https://<instance>.cn-beijing.ots.aliyuncs.com",
instancename: "<instance-name>",
});Parameter:
endpoint: Alamat akses instans dengan formathttps://<instance>.<region>.ots.aliyuncs.com.accessKeyId: ID AccessKey dari Akun Alibaba Cloud atau Pengguna RAM.secretAccessKey: Rahasia AccessKey dari Akun Alibaba Cloud atau Pengguna RAM.instancename: Nama instans Tablestore.
Create a memory store
Panggil createMemoryStore untuk membuat memory store guna menyimpan memori jangka panjang Agen.
await client.createMemoryStore({
memoryStoreName: "agent_memory",
description: "Agent long-term memory store",
});Setelah memory store dibuat, Tablestore secara asinkron menginisialisasi indeks sekunder. Anda harus menunggu sekitar 1 menit hingga indeks siap sebelum dapat menulis data atau menjalankan pencarian.
Add memories
Penulisan ke memori mendukung dua format input: daftar pesan percakapan (messages) atau teks yang telah diproses sebelumnya (text). Kedua format memerlukan Scope lengkap yang mencakup appId, tenantId, agentId, dan runId.
From conversation messages
Kirimkan percakapan multi-putaran antara pengguna dan Agen dalam bidang messages, dan server akan mengekstraksi memori jangka panjang di latar belakang.
await client.addMemories({
memoryStoreName: "agent_memory",
scope: {
appId: "app-001",
tenantId: "user-001",
agentId: "assistant",
runId: "session-001",
},
messages: [
{ role: "user", content: "I like coffee" },
{ role: "assistant", content: "OK, I'll remember that" },
],
metadata: {
source: "chat",
},
sync: true,
});Parameter:
memoryStoreName: Nama memory store tujuan.scope: Menentukan cakupan memori. Keempat segmen wajib disertakan.messages: Daftar pesan dialog, di mana setiap pesan berisiroledancontent.metadata: Metadata kustom yang digunakan untuk penandaan bisnis.sync: Menentukan apakah ekstraksi memori jangka panjang dilakukan secara sinkron. Nilai default-nya adalahfalse. Jika nilainyafalse, API menyimpan pesan asli dan langsung mengembalikan respons. Ekstraksi memori jangka panjang diselesaikan di latar belakang.
From text
Lewati proses ekstraksi percakapan dan tulis langsung sepotong teks sebagai memori jangka panjang.
await client.addMemories({
memoryStoreName: "agent_memory",
scope: {
appId: "app-001",
tenantId: "user-001",
agentId: "assistant",
runId: "session-001",
},
text: "The user likes coffee and prefers concise answers.",
});Search memories
Gunakan searchMemories untuk melakukan Pencarian vektor dalam Scope tertentu. Anda dapat menggunakan karakter wildcard * pada bidang agentId dan runId untuk mengambil memori relevan lintas Agen dan sesi.
const result = await client.searchMemories({
memoryStoreName: "agent_memory",
scope: {
appId: "app-001",
tenantId: "user-001",
agentId: "*",
runId: "*",
},
query: "What drinks does the user like?",
topK: 5,
enableRerank: true,
});
for (const item of result.results || []) {
console.log(item.unit.id, item.unit.text, item.score);
}Parameter:
query: Teks pencarian.topK: Jumlah maksimum hasil yang dikembalikan. Nilai default-nya adalah10. Rentang nilainya adalah1 hingga 50.enableRerank: Menentukan apakah Penyusunan ulang diaktifkan. Nilai default-nya adalahtrue.
Setiap elemen dalam daftar results pada tanggapan berisi unit memori yang cocok unit dan skor score. Nama bidang dalam unit menggunakan format snake_case. Untuk informasi selengkapnya, lihat API Reference.
Manage memories
Anda dapat menampilkan daftar, mengambil, memperbarui, dan menghapus memori jangka panjang. Saat mengambil, memperbarui, atau menghapus satu memori, keempat segmen parameter scope wajib disertakan, dan karakter wildcard * tidak diperbolehkan.
List memories
Menampilkan daftar memori jangka panjang yang sesuai berdasarkan Scope. agentId dan runId mendukung karakter wildcard *.
const result = await client.listMemories({
memoryStoreName: "agent_memory",
scope: {
appId: "app-001",
tenantId: "*",
agentId: "*",
runId: "*",
},
limit: 20,
});Get a memory
Untuk mengambil satu memori jangka panjang berdasarkan memoryId, Anda harus memberikan Scope lengkap (keempat segmen wajib disertakan).
const memory = await client.getMemory({
memoryStoreName: "agent_memory",
memoryId: "mem-001",
scope: {
appId: "app-001",
tenantId: "user-001",
agentId: "assistant",
runId: "session-001",
},
});Update a memory
Perbarui teks atau metadata dari satu memori jangka panjang. Anda harus memberikan scope lengkap dengan keempat bidang ditentukan.
await client.updateMemory({
memoryStoreName: "agent_memory",
memoryId: "mem-001",
scope: {
appId: "app-001",
tenantId: "user-001",
agentId: "assistant",
runId: "session-001",
},
text: "The user prefers coffee and likes concise answers.",
metadata: {
source: "manual",
},
});Delete a memory
Hapus satu memori jangka panjang. Anda harus memberikan scope lengkap dengan keempat bidang ditentukan.
await client.deleteMemory({
memoryStoreName: "agent_memory",
memoryId: "mem-001",
scope: {
appId: "app-001",
tenantId: "user-001",
agentId: "assistant",
runId: "session-001",
},
});Query short-term memory
Memori jangka pendek adalah pesan sesi asli. Untuk mengkueri memori jangka pendek, Anda harus memberikan keempat parameter appId, tenantId, agentId, dan runId. Semua parameter wajib disertakan, dan karakter wildcard tidak diperbolehkan *.
const messages = await client.listMemoryStoreMessages({
memoryStoreName: "agent_memory",
scope: {
appId: "app-001",
tenantId: "user-001",
agentId: "assistant",
runId: "session-001",
},
limit: 100,
});Query request audits
Anda dapat menggunakan API listMemoryStoreRequests untuk mengkueri log audit pemanggilan API pada memory store dan memfilternya berdasarkan dimensi, seperti Scope dan jenis operasi (operation), guna memecahkan masalah dan memantau volume pemanggilan.
const requests = await client.listMemoryStoreRequests({
memoryStoreName: "agent_memory",
scope: {
appId: "app-001",
tenantId: "*",
agentId: "*",
runId: "*",
},
operation: "AddMemories",
limit: 50,
});Parameter:
operation: Jenis operasi, sepertiAddMemoriesatauSearchMemories.limit: Jumlah maksimum item yang dikembalikan.