Membuat kenangan

Memory Bank memungkinkan Anda membuat memori jangka panjang dari percakapan antara pengguna dan agen Anda. Kemudian, Bank Memori menggabungkan dan mengelola sendiri kenangan untuk pengguna tertentu dengan menambahkan, memperbarui, dan menghapus kenangan dari waktu ke waktu. Halaman ini menjelaskan cara memicu pembuatan kenangan dan mendapatkan kenangan.

Saat Anda memicu pembuatan kenangan, Bank Kenangan akan otomatis melakukan operasi berikut:

  • Ekstraksi: Mengekstrak informasi tentang pengguna dari percakapan mereka dengan agen.

  • Penggabungan: Mengidentifikasi apakah kenangan yang ada dengan cakupan yang sama harus dihapus atau diperbarui. Bank Memori memeriksa bahwa kenangan baru tidak duplikat atau bertentangan sebelum menggabungkannya dengan kenangan yang ada.

Tidak semua interaksi agen pengguna menghasilkan pembuatan atau pembaruan memori. Bank Memori hanya menyimpan informasi yang dianggap berharga untuk interaksi mendatang, yang dapat mencakup jenis informasi berikut:

  • Informasi tentang pengguna, seperti preferensi, nama, hubungan, hobi, dan tanggal penting. Misalnya, "Saya bekerja di Google", "Saya lebih suka duduk di kursi dekat lorong", atau "Ulang tahun pernikahan saya pada 31 Desember".
  • Peristiwa percakapan utama dan hasil tugas. Misalnya, "Saya memesan tiket pesawat untuk perjalanan pulang pergi antara JFK dan SFO. Saya berangkat pada 1 Juni 2025 dan kembali pada 7 Juni 2025."
  • Informasi yang secara eksplisit diminta pengguna kepada agen untuk diingat. Misalnya, jika pengguna mengatakan "Ingat bahwa saya terutama menggunakan Python", Bank Memori akan membuat memori seperti "Saya terutama menggunakan Python".

Kenangan hanya dapat diekstrak dari teks, file inline, dan data file dalam konten sumber. Semua konten lainnya, termasuk panggilan dan respons fungsi, akan diabaikan saat membuat kenangan.

Kenangan dapat diekstrak dari gambar, video, dan audio yang disediakan oleh pengguna. Jika konteks yang diberikan oleh input multimodal dinilai oleh Bank Memori bermakna untuk interaksi di masa mendatang, maka memori tekstual dapat dibuat termasuk informasi yang diekstrak dari input. Misalnya, jika pengguna memberikan gambar golden retriever dengan teks "Ini saya", maka Bank Memori akan membuat memori seperti " saya adalah golden retriever".

Menyiapkan lingkungan Anda

Sebelum mulai membuat kenangan, Anda perlu menyiapkan lingkungan dan instance Agent Engine. Bagian ini mengasumsikan bahwa Anda telah menyiapkan lingkungan pengembangan Python, atau menggunakan runtime dengan lingkungan pengembangan Python (seperti Colab).

Mengimpor library

Instal Vertex AI SDK:

  pip install google-cloud-aiplatform>=1.100.0

Menyiapkan klien Vertex AI SDK

  import vertexai

  client = vertexai.Client(
      project="PROJECT_ID",
      location="LOCATION",
  )

Ganti kode berikut:

  • PROJECT_ID: Project ID Anda.
  • LOCATION: Region Anda. Hanya us-central1 yang didukung untuk Bank Memori Vertex AI Agent Engine.

Mengonfigurasi instance Agent Engine

Untuk mengambil kenangan dari Bank Memori, Anda memerlukan instance Agent Engine terlebih dahulu. Anda dapat membuat instance baru atau mendapatkan instance yang ada. Instance baru kosong kecuali jika Anda membuat atau membuat kenangan terlebih dahulu.

Buat

agent_engine = client.agent_engines.create()

Gunakan yang ada

agent_engine = client.agent_engines.get(name="AGENT_ENGINE_NAME")

Ganti kode berikut:

  • AGENT_ENGINE_NAME: Nama Agent Engine. Harus dalam format projects/.../locations/.../reasoningEngines/.... Anda hanya dapat menggunakan instance Agent Engine di us-central1 untuk Bank Memori Vertex AI Agent Engine.

Membuat kenangan

Anda dapat memicu pembuatan memori menggunakan GenerateMemories di akhir sesi atau secara berkala dalam sesi. Pembuatan memori mengekstrak konteks utama dari percakapan sumber dan menggabungkannya dengan memori yang ada untuk cakupan yang sama. Misalnya, Anda dapat membuat kenangan tingkat sesi menggunakan cakupan seperti {"user_id": "123", "session_id": "456"}. Kenangan dengan cakupan yang sama dapat digabungkan dan diambil bersama.

Saat memanggil GenerateMemories, Anda harus memberikan percakapan sumber melalui Sesi Agent Engine atau langsung melalui format JSON:

Sesi Agent Engine

Dengan Sesi Agent Engine, Bank Memori menggunakan peristiwa sesi sebagai percakapan sumber untuk pembuatan memori.

Untuk menentukan cakupan kenangan yang dihasilkan, Bank Memori mengekstrak dan menggunakan ID pengguna dari sesi secara default. Misalnya, cakupan memori disimpan sebagai {"user_id": "123"} jika user_id sesi adalah "123". Anda juga dapat memberikan scope secara langsung, yang menggantikan penggunaan user_id sesi sebagai cakupan.

client.agent_engines.generate_memories(
  name=agent_engine.api_resource.name,
  vertex_session_source={
    "session": "SESSION_NAME"
  },
  # Optional when using Agent Engine Sessions. Defaults to {"user_id": session.user_id}.
  scope=SCOPE,
  config={
      "wait_for_completion": True
  }
)

Ganti kode berikut:

  • SESSION_NAME: Nama sesi.

  • (Opsional) SCOPE: Kamus, yang merepresentasikan cakupan kenangan yang dibuat. Contoh, {"session_id": "MY_SESSION"}. Hanya kenangan dengan cakupan yang sama yang dipertimbangkan untuk penggabungan. Jika tidak diberikan, {"user_id": session.user_id} akan digunakan.

Format JSON

Berikan percakapan sumber secara langsung dalam format JSON jika Anda menggunakan penyimpanan sesi yang berbeda dari Sesi Agent Engine:

client.agent_engines.generate_memories(
    name=agent_engine.api_resource.name,
    direct_contents_source={
      "events": EVENTS
    },
    scope=SCOPE,
    config={
        "wait_for_completion": True
    }
)

Ganti kode berikut:

  • EVENTS: Daftar kamus Konten. Contoh:
[
  {
    "content": {
      "role": "user",
      "parts": [
        {"text": "I'm work with LLM agents!"}
      ]
    }
  }
]
  • SCOPE: Kamus, yang mewakili cakupan kenangan yang dihasilkan. Contoh, {"session_id": "MY_SESSION"}. Hanya kenangan dengan cakupan yang sama yang dipertimbangkan untuk penggabungan.

GenerateMemories menampilkan AgentEngineGenerateMemoriesOperation yang berisi daftar kenangan yang dibuat:

AgentEngineGenerateMemoriesOperation(
  name="projects/.../locations/.../reasoningEngines/.../operations/...",
  done=True,
  response=GenerateMemoriesResponse(
    generatedMemories=[
      GenerateMemoriesResponseGeneratedMemory(
        memory=Memory(
          "name": "projects/.../locations/.../reasoningEngines/.../memories/..."
        ),
        action=<GenerateMemoriesResponseGeneratedMemoryAction.CREATED: "CREATED">,
      ),
      GenerateMemoriesResponseGeneratedMemory(
        memory=Memory(
          "name": "projects/.../locations/.../reasoningEngines/.../memories/..."
        ),
        action=<GenerateMemoriesResponseGeneratedMemoryAction.UPDATED: "UPDATED">,
      ),
      GenerateMemoriesResponseGeneratedMemory(
        memory=Memory(
          "name": "projects/.../locations/.../reasoningEngines/.../memories/..."
        ),
        action=<GenerateMemoriesResponseGeneratedMemoryAction.DELETED: "DELETED">,
      ),
    ]
  )
)

Setiap memori yang dihasilkan mencakup action yang dilakukan pada memori tersebut:

  • CREATED: Menunjukkan bahwa kenangan baru telah ditambahkan, yang merepresentasikan konsep baru yang tidak tercakup oleh kenangan yang ada.
  • UPDATED: Menunjukkan bahwa memori yang ada telah diperbarui, yang terjadi jika memori mencakup konsep yang serupa dengan informasi yang baru diekstrak. Fakta memori dapat diperbarui dengan informasi baru atau tetap sama.
  • DELETED: Menunjukkan bahwa memori yang ada telah dihapus, karena informasinya bertentangan dengan informasi baru yang diekstrak dari percakapan.

Untuk kenangan CREATED atau UPDATED, Anda dapat menggunakan GetMemories untuk mengambil konten lengkap kenangan. Pengambilan memori DELETED akan menghasilkan error 404.

Langkah berikutnya