All Products
Search
Document Center

Agent Run:Memory storage

Last Updated:Aug 24, 2026

Memory storage menyediakan persistensi untuk Agen dengan menyimpan dan mengambil data kontekstual—seperti riwayat interaksi dan preferensi pengguna—lintas sesi. Dengan memanfaatkan pengambilan vektor, Agen dapat memberikan respons yang dipersonalisasi berdasarkan memori historis guna menjaga kelangsungan sesi. Anda dapat mengintegrasikan memory storage ke dalam Agen quick-start menggunakan tool MCP atau framework open source seperti LangChain.

Memulai

Setelah membuat instans memory storage, Anda dapat membuat, mencari, dan mengelola memori melalui Konsol atau menggunakan SDK.

Buat instans memory storage

  1. Masuk ke Konsol AgentRun, lalu klik Others pada bilah menu atas.

  2. Pada panel navigasi sebelah kiri, klik Memory Storage untuk melihat daftar memory storage.

  3. Klik tombol Add Memory Storage untuk membuka formulir pembuatan.

  4. Masukkan informasi dasar:

    • Name: Sistem secara otomatis menghasilkan pengenal unik, seperti mem-OGzJ. Anda juga dapat menentukan nama kustom.

    • Description: (Opsional) Masukkan deskripsi untuk memory storage.

    • Execution Role: Pilih peran RAM yang telah diberi otorisasi dari daftar drop-down. Peran tersebut harus memiliki izin akses ke Tablestore dan AgentRun, seperti AliyunAgentRunDefaultRole.

    • Large Language Model: Dari daftar drop-down, pilih model bahasa besar, seperti qwen3-max.

      Atau, klik Add Model. Untuk informasi selengkapnya, lihat Large language models.
    • Vector Model: Pilih model vektor yang telah dibuat dari daftar drop-down, seperti text-embedding-v4.

      Atau, klik Add Model. Untuk informasi selengkapnya, lihat Vector models.
  5. Konfigurasi database vektor:

    • One-click configuration (Disarankan): Secara otomatis membuat dan mengonfigurasi instans Tablestore tanpa perlu pengaturan manual.

    • Custom configuration: Pilih instans Alibaba Cloud Tablestore yang sudah ada.

      • Dari daftar drop-down, pilih instans Tablestore (OTS) yang sudah ada di wilayah saat ini. Jika tidak ada instans dalam daftar, klik tombol image di sebelah kanan. Untuk informasi selengkapnya, lihat Create an OTS instance.

      • Masukkan nama tabel yang akan digunakan untuk menyimpan data vektor.

      • Tetapkan dimensi data vektor.

  6. Tetapkan kebijakan jaringan:

    • Public mode: Mengizinkan akses melalui jaringan publik.

    • Private mode: Memerlukan ID VPC, security group, dan ID subnet.

  7. Klik Start Deployment. Tunggu sekitar 10 detik hingga status berubah menjadi Running.

Setelah penerapan selesai, Anda dapat mengelola memori, mencari memori, melihat metrik observabilitas, atau mengonfigurasi integrasi MCP dan kode pada halaman detail instans.

Manajemen memori

Buat memori

Pada halaman produk instans memory storage, klik tab Memory Management untuk membuka daftar memori. Secara default, daftar menampilkan 200 memori. Untuk menemukan lebih banyak memori, gunakan fitur pencarian.

  1. Klik tombol Create Memory untuk membuka kotak dialog Add User Memory.

  2. Masukkan informasi memori:

    • User ID (Wajib): Pengguna pemilik memori, seperti test-user-001.

    • Memory Content (Wajib): Konten memori, seperti lives in Hangzhou.

    • Metadata (Opsional): Klik Add Metadata untuk mengonfigurasi bidang kustom.

  3. Klik tombol Save dan tunggu hingga proses pembuatan selesai. Panggilan pertama mungkin memicu cold start.

Setelah memori dibuat, memori tersebut muncul dalam daftar memori. Daftar tersebut menampilkan informasi seperti ID pengguna, waktu pembuatan, dan konten memori. Setiap kartu memori menyediakan tombol untuk operasi seperti View Details, Edit, View History, dan Delete.

Cari memori

Pada halaman detail instans memory storage, klik tab Search Memories untuk membuka halaman pencarian memori.

  1. Masukkan kriteria pencarian:

    • Search Query (Wajib): Masukkan kueri pencarian, seperti Hangzhou.

    • User ID, Agent ID, atau Run ID (Tentukan minimal satu): Menyaring memori untuk pengguna atau sesi tertentu. Misalnya, masukkan ID pengguna test-user-001 untuk mencari memori yang cocok dengan kata kunci untuk pengguna tersebut.

  2. Klik tombol Search. Hasil pencarian akan dimuat dalam waktu sekitar 5 detik.

  3. Lihat hasil pencarian: Daftar hasil menampilkan konten memori yang cocok, ID pengguna, skor kemiripan, ID, hash, waktu pembuatan, dan informasi lainnya.

Hasil pencarian diurutkan berdasarkan kemiripan dari tinggi ke rendah. Skor kemiripan yang lebih tinggi menunjukkan relevansi yang lebih besar terhadap kueri.

Hapus memori

Pada halaman daftar memori, temukan memori yang ingin dihapus, klik Delete, lalu konfirmasi operasi tersebut.

Ubah memori

Pada halaman daftar memori, temukan memori yang ingin diubah, klik Edit, ubah konten memorinya, lalu simpan perubahan Anda.

Observabilitas

Pada halaman produk instans memory storage Anda, klik tab Observability untuk melihat metrik utama operasi memori secara real-time.

Metrik operasi pembuatan memori

  • Jumlah operasi pembuatan memori: Total jumlah operasi pembuatan memori.

  • Average latency of create memory operations: Waktu respons rata-rata untuk operasi pembuatan memori.

  • Failure rate of create memory operations: Persentase operasi pembuatan memori yang gagal.

Metrik operasi pencarian memori

  • Number of search memory operations: Total jumlah operasi pencarian memori.

  • Average latency of memory retrieval: Waktu respons rata-rata untuk operasi pengambilan memori.

  • Failure rate of memory retrieval: Persentase operasi pengambilan memori yang gagal.

Grafik pemantauan

Halaman observabilitas menyediakan grafik pemantauan berikut:

  • Queries per second (QPS): Menampilkan total QPS, QPS 2xx, QPS 4xx, QPS 5xx, dan QPS 429.

  • Average access latency: Menampilkan tren latensi permintaan.

  • Row statistics: Menampilkan jumlah total baris dan jumlah baris yang gagal.

  • Traffic statistics: Menampilkan lalu lintas inbound jaringan publik, outbound jaringan publik, inbound jaringan pribadi, outbound jaringan pribadi, dan outbound jaringan publik gratis.

  • Capacity unit statistics: Menampilkan CU baca, CU tulis, CU baca internal, dan CU tulis internal.

  • Request status statistics: Menampilkan klasifikasi status eksekusi (seperti Request successful, Parameter error, Request throttled, dan Server error) beserta nilai statistik dan persentasenya.

Anda dapat memfilter tampilan dengan mengganti rentang waktu (misalnya, 1 hari atau 7 hari) dan jenis operasi (Create memory operation atau Search memory operation).

Integrasi ekosistem

Integrasi MCP

Anda dapat mengintegrasikan memory storage ke dalam Agen quick-start menggunakan tool MCP.

  1. Pada halaman produk instans memory storage, pada tab Integration and Cases, pilih sub-tab MCP Integration.

  2. Lihat status MCP Server:

    • Jika statusnya "Not started", klik tombol Start Service Configuration untuk menjalankan MCP Server.

    • Setelah layanan dijalankan, status berubah menjadi Processing.

  3. Pada halaman Quick Start for Agent (No-Code), untuk item konfigurasi Memory, pilih instans memory storage Anda dan aktifkan opsi MCP.

Setelah diaktifkan, Agen dapat mengakses memory storage melalui tool MCP saat runtime. Hal ini memungkinkan Agen untuk membuat, mencari, dan mengelola memori, sehingga menyediakan persistensi.

Integrasi kode

Anda dapat mengintegrasikan fitur memory storage menggunakan SDK AgentRun.

from agentrun.memory_collection import MemoryCollection

# Dapatkan metadata memory storage
memory_collection = MemoryCollection.get_by_name("mem-OGzJ")
print(f"Berhasil mengambil: {memory_collection}")

# Konversi ke klien mem0_memory
memory = MemoryCollection.to_mem0_memory("mem-OGzJ")

# Gunakan klien Memory mem0ai untuk operasi
user_id = "user123"

# Tambahkan memori
result = memory.add(
    "I like to eat apples and bananas",
    user_id=user_id,
    metadata={"category": "food"},
)
for idx, res in enumerate(result.get("results", []), 1):
    print(f" {idx}. ID: {res.get('id')}, Event: {res.get('event')}")

# Cari memori
search_results = memory.search("What fruit does the user like to eat?", user_id=user_id)
for idx, result in enumerate(search_results.get("results", []), 1):
    print(
        f" {idx}. Content: {result.get('memory')}, Similarity: {result.get('score', 0):.4f}"
    )

Integrasi LangChain

Anda dapat mengintegrasikan memory storage dengan framework developer Agen open source, seperti LangChain, untuk membuat sistem percakapan berbasis memori. Contoh berikut menunjukkan cara mengintegrasikan memory storage ke dalam rantai percakapan LangChain guna mencapai respons yang dipersonalisasi berdasarkan memori historis.

from typing import List, Dict
from langchain_core.messages import SystemMessage, HumanMessage
from langchain_core.prompts import ChatPromptTemplate, MessagesPlaceholder
from agentrun.integration.langchain import model
from agentrun.memory_collection import MemoryCollection

# Buat dari nama model
llm = model("qwen3-max")
# Buat dari nama memory storage
mem0 = MemoryCollection.to_mem0_memory("mem-OGzJ")


prompt = ChatPromptTemplate.from_messages([
    SystemMessage(content="""You are a helpful travel agent AI. Use the provided context to personalize your responses and remember user preferences and past interactions. 
    Provide travel recommendations, itinerary suggestions, and answer questions about destinations. 
    If you don't have specific information, you can make general suggestions based on common travel knowledge."""),
    MessagesPlaceholder(variable_name="context"),
    HumanMessage(content="{input}")
])

def retrieve_context(query: str, user_id: str) -> List[Dict]:
    """Ambil konteks relevan dari Mem0"""
    try:
        memories = mem0.search(query, user_id=user_id)
        memory_list = memories['results']
        print(f"Pencarian memori berhasil: {memory_list}")
        serialized_memories = ' '.join([mem["memory"] for mem in memory_list])
        context = [
            {
                "role": "system", 
                "content": f"Relevant information: {serialized_memories}"
            },
            {
                "role": "user",
                "content": query
            }
        ]
        return context
    except Exception as e:
        print(f"Error saat mengambil memori: {e}")
        # Kembalikan konteks kosong jika terjadi error
        return [{"role": "user", "content": query}]

def generate_response(input: str, context: List[Dict]) -> str:
    """Hasilkan respons menggunakan model bahasa"""
    chain = prompt | llm
    response = chain.invoke({
        "context": context,
        "input": input
    })
    return response.content

def save_interaction(user_id: str, user_input: str, assistant_response: str):
    """Simpan interaksi ke Mem0"""
    try:
        interaction = [
            {
              "role": "user",
              "content": user_input
            },
            {
                "role": "assistant",
                "content": assistant_response
            }
        ]
        result = mem0.add(interaction, user_id=user_id)
        print(f"Memori berhasil disimpan: {len(result.get('results', []))} memori ditambahkan")
    except Exception as e:
        print(f"Error saat menyimpan interaksi: {e}")

def chat_turn(user_input: str, user_id: str) -> str:
    # Ambil konteks
    context = retrieve_context(user_input, user_id)
    
    # Hasilkan respons
    response = generate_response(user_input, context)
    
    # Simpan interaksi
    save_interaction(user_id, user_input, response)
    
    return response

if __name__ == "__main__":
    print("Selamat datang di Travel Agent Planner pribadi Anda! Bagaimana saya dapat membantu rencana perjalanan Anda hari ini?")
    user_id = "alice"
    
    while True:
        user_input = input("Anda: ")
        if user_input.lower() in ['quit', 'exit', 'bye']:
            print("Travel Agent: Terima kasih telah menggunakan layanan perencanaan perjalanan kami. Selamat berlibur!")
            break
        
        response = chat_turn(user_input, user_id)
        print(f"Travel Agent: {response}")