All Products
Search
Document Center

Tablestore:Menggunakan SDK Node.js

Last Updated:May 22, 2026

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

Initialize 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 format https://<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 berisi role dan content.

  • metadata: Metadata kustom yang digunakan untuk penandaan bisnis.

  • sync: Menentukan apakah ekstraksi memori jangka panjang dilakukan secara sinkron. Nilai default-nya adalah false. Jika nilainya false, 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 adalah 10. Rentang nilainya adalah 1 hingga 50.

  • enableRerank: Menentukan apakah Penyusunan ulang diaktifkan. Nilai default-nya adalah true.

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, seperti AddMemories atau SearchMemories.

  • limit: Jumlah maksimum item yang dikembalikan.