Menyiapkan Bank Memori

Memulai

Sebelum menggunakan Vertex AI Agent Engine Memory Bank, Anda harus menyiapkan lingkungan.

Menyiapkan project Google Cloud

Setiap project dapat diidentifikasi dengan dua cara: nomor project atau project ID. PROJECT_NUMBER dibuat secara otomatis saat Anda membuat project, sedangkan PROJECT_ID dibuat oleh Anda, atau siapa pun yang membuat project. Untuk menyiapkan project:

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. Verify that billing is enabled for your Google Cloud project.

  4. Enable the Vertex AI API.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the API

  5. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  6. Verify that billing is enabled for your Google Cloud project.

  7. Enable the Vertex AI API.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the API

  8. Mendapatkan peran yang diperlukan

    Untuk mendapatkan izin yang Anda perlukan untuk menggunakan Vertex AI Agent Engine, minta administrator Anda untuk memberi Anda peran IAM Vertex AI User (roles/aiplatform.user) di project Anda. Untuk mengetahui informasi selengkapnya tentang cara memberikan peran, lihat Mengelola akses ke project, folder, dan organisasi.

    Anda mungkin juga bisa mendapatkan izin yang diperlukan melalui peran kustom atau peran yang telah ditentukan lainnya.

    Jika Anda membuat permintaan ke Memory Bank dari agen yang di-deploy di Google Kubernetes Engine atau Cloud Run, pastikan akun layanan Anda memiliki izin yang diperlukan. Agen Layanan Reasoning Engine sudah memiliki izin yang diperlukan untuk membaca dan menulis memori, sehingga permintaan keluar dari Runtime Agent Engine seharusnya sudah memiliki izin untuk mengakses Bank Memori.

    Menginstal library

    Bagian ini mengasumsikan bahwa Anda telah menyiapkan lingkungan pengembangan Python, atau menggunakan runtime dengan lingkungan pengembangan Python (seperti Colab).

    Instal Vertex AI SDK:

      pip install google-cloud-aiplatform>=1.111.0

    Autentikasi

    Petunjuk autentikasi bergantung pada apakah Anda menggunakan Vertex AI dalam mode ekspres:

    • Jika Anda tidak menggunakan Vertex AI dalam mode ekspres, ikuti petunjuk di Mengautentikasi ke Vertex AI.

    • Jika Anda menggunakan Vertex AI dalam mode ekspres, siapkan autentikasi dengan menyetel kunci API di lingkungan:

        os.environ["API_KEY"] = "API_KEY"
      

    Menyiapkan klien Vertex AI SDK

    Jalankan kode berikut untuk menyiapkan klien Vertex AI SDK:

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

    di mana

    Membuat atau mengupdate instance Agent Engine

    Jika sudah memiliki instance Agent Engine, Anda dapat langsung membuka Mengonfigurasi instance Agent Engine untuk Bank Memori.

    Untuk mulai menggunakan Memory Bank, Anda memerlukan instance Agent Engine terlebih dahulu. Instance Agent Engine Anda mendukung Sesi dan Bank Memori Vertex AI Agent Engine secara langsung. Tidak ada agen yang di-deploy saat Anda membuat instance. Untuk menggunakan Vertex AI Agent Engine Runtime, Anda harus memberikan agen yang harus di-deploy saat membuat atau memperbarui instance Agent Engine.

    Setelah memiliki instance Agent Engine, Anda dapat menggunakan nama instance untuk membaca atau menulis memori. Contoh:

    agent_engine = client.agent_engines.create()
    
    client.agent_engines.memories.generate(
      name=agent_engine.api_resource.name,
      ...
    )
    

    Digunakan dengan Runtime Agent Engine Vertex AI

    Meskipun Bank Memori dapat digunakan di runtime apa pun, Anda juga dapat menggunakan Bank Memori dengan Agent Engine Runtime untuk membaca dan menulis memori dari agen yang di-deploy.

    Untuk men-deploy agen dengan Memory Bank di Vertex AI Agent Engine Runtime, pertama-tama siapkan lingkungan Anda untuk runtime Agent Engine. Kemudian, siapkan agen Anda untuk di-deploy di Agent Engine Runtime dengan integrasi memori. Agen yang di-deploy harus melakukan panggilan untuk membaca dan menulis memori sesuai kebutuhan.

    AdkApp

    Jika Anda menggunakan template Agent Development Kit Agent Engine, agen akan menggunakan VertexAiMemoryBankService secara default saat di-deploy ke Agent Engine Runtime. Artinya, alat Memori ADK membaca memori dari Bank Memori.

    from google.adk.agents import Agent
    from vertexai.preview.reasoning_engines import AdkApp
    
    # Develop an agent using the ADK template.
    agent = Agent(...)
    
    adk_app = AdkApp(
          agent=adk_agent,
          ...
    )
    
    # Deploy the agent to Agent Engine Runtime.
    agent_engine = client.agent_engines.create(
          agent_engine=adk_app,
          config={
                "staging_bucket": "STAGING_BUCKET",
                "requirements": ["google-cloud-aiplatform[agent_engines,adk]"],
                # Optional.
                **context_spec
          }
    )
    
    # Update an existing Agent Engine to add or modify the Runtime.
    agent_engine = client.agent_engines.update(
          name=agent_engine.api_resource.name,
          agent=adk_app,
          config={
                "staging_bucket": "STAGING_BUCKET",
                "requirements": ["google-cloud-aiplatform[agent_engines,adk]"],
                # Optional.
                **context_spec
          }
    )
    

    Ganti kode berikut:

    • STAGING_BUCKET: Bucket Cloud Storage Anda yang akan digunakan untuk menyiapkan Runtime Agent Engine.

    Untuk mengetahui informasi selengkapnya tentang penggunaan Bank Memori dengan ADK, lihat Panduan memulai dengan Agent Development Kit.

    Agen kustom

    Anda dapat menggunakan Memory Bank dengan agen kustom yang di-deploy di Agent Engine Runtime. Dalam hal ini, agen Anda harus mengatur panggilan ke Bank Memori untuk memicu panggilan pembuatan memori dan pengambilan memori.

    Aplikasi Anda yang di-deploy ke Vertex AI Agent Engine Runtime dapat membaca variabel lingkungan GOOGLE_CLOUD_PROJECT, GOOGLE_CLOUD_LOCATION,GOOGLE_CLOUD_AGENT_ENGINE_ID untuk menyimpulkan nama Agent Engine dari lingkungan:

    project = os.environ.get("GOOGLE_CLOUD_PROJECT")
    location = os.environ.get("GOOGLE_CLOUD_LOCATION")
    agent_engine_id = os.environ.get("GOOGLE_CLOUD_AGENT_ENGINE_ID")
    
    agent_engine_name = f"projects/{project}/locations/{location}/reasoningEngines/{agent_engine_id}"
    

    Jika Anda menggunakan agen layanan default untuk agen di Vertex AI Agent Engine Runtime, agen Anda sudah memiliki izin untuk membaca dan menulis memori. Jika Anda menggunakan akun layanan pelanggan, Anda perlu memberikan izin ke akun layanan Anda untuk membaca dan menulis kenangan. Izin yang diperlukan bergantung pada operasi yang harus dapat dilakukan oleh agen Anda. Jika Anda hanya ingin agen Anda mengambil dan membuat kenangan, aiplatform.memories.generate dan aiplatform.memories.retrieve sudah cukup.

    Penggunaan di semua runtime lainnya

    Jika Anda ingin menggunakan Memory Bank di lingkungan yang berbeda, seperti Cloud Run atau Colab, buat Agent Engine tanpa memberikan agen. Membuat Agent Engine baru tanpa Runtime hanya memerlukan waktu beberapa detik. Jika Anda tidak memberikan konfigurasi, Memory Bank akan dibuat dengan setelan default untuk mengelola pembuatan dan pengambilan memori:

    agent_engine = client.agent_engines.create()
    

    Jika Anda ingin mengonfigurasi perilaku, berikan konfigurasi Bank Memori:

    Buat

    agent_engine = client.agent_engines.create(
      config={
        "context_spec": {
          "memory_bank_config": ...
        }
      }
    )
    

    Perbarui

    Jika ingin mengubah konfigurasi Bank Memori, Anda dapat memperbarui instance Vertex AI Agent Engine.

    agent_engine = client.agent_engines.update(
      # You can access the name using `agent_engine.api_resource.name` for an AgentEngine object.
      name="AGENT_ENGINE_NAME",
      config={
        "context_spec": {
          "memory_bank_config": ...
        }
      }
    )
    

    Ganti kode berikut:

    • AGENT_ENGINE_NAME: Nama Agent Engine. Harus dalam format projects/.../locations/.../reasoningEngines/.... Lihat region yang didukung untuk Bank Memori.

    Anda dapat menggunakan Bank Memori di lingkungan mana pun yang memiliki izin untuk membaca dan menulis kenangan. Misalnya, untuk menggunakan Memory Bank dengan Cloud Run, berikan izin ke identitas layanan Cloud Run untuk membaca dan menulis memori. Izin yang diperlukan bergantung pada operasi yang harus dapat dilakukan oleh agen Anda. Jika Anda hanya ingin agen Anda mengambil dan membuat kenangan, aiplatform.memories.generate dan aiplatform.memories.retrieve sudah cukup.

    Mengonfigurasi instance Agent Engine untuk Bank Memori

    Anda dapat mengonfigurasi Bank Memori untuk menyesuaikan cara kenangan dibuat dan dikelola. Jika konfigurasi tidak disediakan, Bank Memori akan menggunakan setelan default untuk setiap jenis konfigurasi.

    Konfigurasi Bank Memori ditetapkan saat membuat atau mengupdate instance Agent Engine Anda:

    client.agent_engines.create(
          ...,
          config={
                "context_spec": {
                      "memory_bank_config": memory_bank_config
                }
          }
    )
    
    # Alternatively, update an existing Agent Engine's Memory Bank config.
    agent_engine = client.agent_engines.update(
          name=agent_engine.api_resource.name,
          config={
              "context_spec": {
                    "memory_bank_config": memory_bank_config
              }
          }
    )
    

    Anda dapat mengonfigurasi setelan berikut untuk instance Anda:

    • Konfigurasi penyesuaian: Mengonfigurasi cara kenangan harus diekstrak dari data sumber.
    • Konfigurasi penelusuran kesamaan: Mengonfigurasi model embedding yang digunakan untuk penelusuran kesamaan. Nilai defaultnya adalah text-embedding-005.
    • Konfigurasi pembuatan: Mengonfigurasi LLM yang digunakan untuk pembuatan memori. Nilai defaultnya adalah gemini-2.5-flash.
    • Konfigurasi TTL: Mengonfigurasi cara TTL ditetapkan secara otomatis untuk kenangan yang dibuat atau diperbarui. Defaultnya adalah tanpa TTL.

    Konfigurasi penyesuaian

    Jika ingin menyesuaikan cara kenangan diekstrak dari data sumber, Anda dapat mengonfigurasi perilaku ekstraksi kenangan saat menyiapkan instance Agent Engine. Ada dua tuas yang dapat Anda gunakan untuk penyesuaian:

    • Mengonfigurasi topik memori: Tentukan jenis informasi yang harus dipertahankan oleh Bank Memori karena dianggap penting. Hanya informasi yang sesuai dengan salah satu topik kenangan ini yang akan dipertahankan oleh Bank Memori.
    • Memberikan contoh few-shot: Menunjukkan perilaku yang diharapkan untuk ekstraksi memori ke Bank Memori.

    Anda dapat mengonfigurasi perilaku yang berbeda untuk tingkat cakupan yang berbeda secara opsional. Misalnya, topik yang bermakna untuk memori tingkat sesi mungkin tidak bermakna untuk memori tingkat pengguna (di beberapa sesi). Untuk mengonfigurasi perilaku untuk subset kenangan tertentu, tetapkan kunci cakupan konfigurasi penyesuaian. Hanya permintaan GenerateMemories yang menyertakan kunci cakupan tersebut yang akan menggunakan konfigurasi tersebut. Anda juga dapat mengonfigurasi perilaku default (berlaku untuk semua set kunci cakupan) dengan menghilangkan kolom scope_key. Konfigurasi ini akan berlaku untuk semua permintaan yang tidak memiliki konfigurasi yang sama persis dengan kunci cakupan untuk konfigurasi penyesuaian lainnya.

    Misalnya, user_level_config hanya akan berlaku untuk permintaan GenerateMemories yang menggunakan kunci cakupan user_id secara persis (yaitu scope={"user_id": "123"} tanpa kunci tambahan). default_config akan berlaku untuk permintaan lainnya:

    Kamus

    
    user_level_config = {
      "scope_keys": ["user_id"],
      "memory_topics": [...],
      "generate_memories_examples": [...]
    }
    
    default_config = {
      "memory_topics": [...],
      "generate_memories_examples": [...]
    }
    
    config = {
      "customization_configs": [
        user_level_config,
        default_config
      ]
    }
    

    Berbasis kelas

    from vertexai.types import MemoryBankCustomizationConfig as CustomizationConfig
    
    user_level_config = CustomizationConfig(
      scope_keys=["user_id"],
      memory_topics=[...],
      generate_memories_examples=[...]
    )
    

    Mengonfigurasi topik memori

    "Topik memori" mengidentifikasi informasi yang dianggap penting oleh Bank Memori dan oleh karena itu harus dipertahankan sebagai kenangan yang dihasilkan. Bank Memori mendukung dua jenis topik memori:

    • Topik terkelola: Label dan petunjuk ditentukan oleh Memory Bank. Anda hanya perlu memberikan nama topik terkelola. Misalnya,

      Kamus

      memory_topic = {
        "managed_memory_topic": {
          "managed_topic_enum": "USER_PERSONAL_INFO"
        }
      }
      

      Berbasis kelas

      from vertexai.types import ManagedTopicEnum
      from vertexai.types import MemoryBankCustomizationConfigMemoryTopic as MemoryTopic
      from vertexai.types import MemoryBankCustomizationConfigMemoryTopicManagedMemoryTopic as ManagedMemoryTopic
      
      memory_topic = MemoryTopic(
          managed_memory_topic=ManagedMemoryTopic(
              managed_topic_enum=ManagedTopicEnum.USER_PERSONAL_INFO
          )
      )
      

      Topik terkelola berikut didukung oleh Memory Bank:

      • Informasi pribadi (USER_PERSONAL_INFO): Informasi pribadi yang signifikan tentang pengguna, seperti nama, hubungan, hobi, dan tanggal penting. Misalnya, "Saya bekerja di Google" atau "Ulang tahun pernikahan saya pada 31 Desember".
      • Preferensi pengguna (USER_PREFERENCES): Suka, tidak suka, gaya, atau pola yang dinyatakan atau tersirat. Misalnya, "Saya lebih suka tempat duduk di tengah".
      • Peristiwa percakapan utama dan hasil tugas (KEY_CONVERSATION_DETAILS): Tonggak penting atau kesimpulan dalam dialog. 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."
      • Petunjuk ingat / lupa eksplisit (EXPLICIT_INSTRUCTIONS): Informasi yang secara eksplisit diminta pengguna kepada agen untuk diingat atau dilupakan. Misalnya, jika pengguna mengatakan "Ingat bahwa saya terutama menggunakan Python", Bank Memori akan membuat memori seperti "Saya terutama menggunakan Python".
    • Topik kustom: Label dan petunjuk ditentukan oleh Anda saat menyiapkan instance Bank Memori. Informasi ini akan digunakan dalam perintah untuk langkah ekstraksi Bank Memori. Misalnya,

      Kamus

      memory_topic = {
        "custom_memory_topic": {
          "label": "business_feedback",
          "description": """Specific user feedback about their experience at
      the coffee shop. This includes opinions on drinks, food, pastries, ambiance,
      staff friendliness, service speed, cleanliness, and any suggestions for
      improvement."""
        }
      }
      

      Berbasis kelas

      from vertexai.types import MemoryBankCustomizationConfigMemoryTopic as MemoryTopic
      from vertexai.types import MemoryBankCustomizationConfigMemoryTopicCustomMemoryTopic as CustomMemoryTopic
      
      memory_topic = MemoryTopic(
        custom_memory_topic=CustomMemoryTopic(
          label="business_feedback",
          description="""Specific user feedback about their experience at
      the coffee shop. This includes opinions on drinks, food, pastries, ambiance,
      staff friendliness, service speed, cleanliness, and any suggestions for
      improvement."""
        )
      )
      

      Saat menggunakan topik kustom, sebaiknya berikan juga contoh sedikit tembakan yang menunjukkan cara mengekstrak kenangan dari percakapan Anda.

    Dengan penyesuaian, Anda dapat menggunakan kombinasi topik memori apa pun. Misalnya, Anda dapat menggunakan subset topik memori terkelola yang tersedia:

    Kamus

    {
      "memory_topics": [
        "managed_memory_topic": { "managed_topic_enum": "USER_PERSONAL_INFO" },
        "managed_memory_topic": { "managed_topic_enum": "USER_PREFERENCES" }
      ]
    }
    

    Berbasis kelas

    from vertexai.types import MemoryBankCustomizationConfig as CustomizationConfig
    from vertexai.types import MemoryBankCustomizationConfigMemoryTopic as MemoryTopic
    from vertexai.types import MemoryBankCustomizationConfigMemoryTopicManagedMemoryTopic as ManagedMemoryTopic
    from vertexai.types import ManagedTopicEnum
    
    CustomizationConfig(
      memory_topics=[
          MemoryTopic(
              managed_memory_topic=ManagedMemoryTopic(
                  managed_topic_enum=ManagedTopicEnum.USER_PERSONAL_INFO)
          ),
          MemoryTopic(
              managed_memory_topic=ManagedMemoryTopic(
                  managed_topic_enum=ManagedTopicEnum.USER_PREFERENCES)
          ),
      ]
    )
    

    Anda juga dapat menggunakan kombinasi topik terkelola dan kustom (atau hanya menggunakan topik kustom):

    Kamus

    {
      "memory_topics": [
        "managed_memory_topic": { "managed_topic_enum": "USER_PERSONAL_INFO" },
        "custom_memory_topic": {
          "label": "business_feedback",
          "description": """Specific user feedback about their experience at
    the coffee shop. This includes opinions on drinks, food, pastries, ambiance,
    staff friendliness, service speed, cleanliness, and any suggestions for
    improvement."""
            }
      ]
    }
    

    Berbasis kelas

    from vertexai.types import MemoryBankCustomizationConfig as CustomizationConfig
    from vertexai.types import MemoryBankCustomizationConfigMemoryTopic as MemoryTopic
    from vertexai.types import MemoryBankCustomizationConfigMemoryTopicCustomMemoryTopic as CustomMemoryTopic
    from vertexai.types import MemoryBankCustomizationConfigMemoryTopicManagedMemoryTopic as ManagedMemoryTopic
    from vertexai.types import ManagedTopicEnum
    
    CustomizationConfig(
      memory_topics=[
          MemoryTopic(
              managed_memory_topic=ManagedMemoryTopic(
                  managed_topic_enum=ManagedTopicEnum.USER_PERSONAL_INFO)
          ),
          MemoryTopic(
              custom_memory_topic=CustomMemoryTopic(
                  label="business_feedback",
                  description="""Specific user feedback about their experience at
    the coffee shop. This includes opinions on drinks, food, pastries, ambiance,
    staff friendliness, service speed, cleanliness, and any suggestions for
    improvement."""
              )
        )
      ]
    )
    

    Contoh few-shot

    Contoh few-shot memungkinkan Anda mendemonstrasikan perilaku ekstraksi memori yang diharapkan ke Bank Memori. Misalnya, Anda dapat memberikan contoh percakapan input dan memori yang diharapkan diekstrak dari percakapan tersebut.

    Sebaiknya selalu gunakan beberapa contoh dengan topik kustom agar Bank Memori dapat mempelajari perilaku yang diinginkan. Few-shot bersifat opsional saat menggunakan topik terkelola karena Bank Memori menentukan contoh untuk setiap topik. Tunjukkan percakapan yang tidak diharapkan menghasilkan kenangan dengan memberikan daftar generated_memories kosong.

    Misalnya, Anda dapat memberikan contoh sedikit tembakan yang menunjukkan cara mengekstrak masukan tentang bisnis Anda dari pesan pelanggan:

    Kamus

    example = {
        "conversationSource": {
          "events": [
            {
              "content": {
                "role": "model",
                "parts": [{ "text": "Welcome back to The Daily Grind! We'd love to hear your feedback on your visit." }] }
            },
            {
              "content": {
                "role": "user",
                "parts": [{ "text": "Hey. The drip coffee was a bit lukewarm today, which was a bummer. Also, the music was way too loud, I could barely hear my friend." }] }
            }
          ]
        },
        "generatedMemories": [
          {
            "fact": "The user reported that the drip coffee was lukewarm."
          },
          {
            "fact": "The user felt the music in the shop was too loud."
          }
        ]
    }
    

    Berbasis kelas

    from google.genai.types import Content, Part
    from vertexai.types import MemoryBankCustomizationConfigGenerateMemoriesExample as GenerateMemoriesExample
    from vertexai.types import MemoryBankCustomizationConfigGenerateMemoriesExampleConversationSource as ConversationSource
    from vertexai.types import MemoryBankCustomizationConfigGenerateMemoriesExampleConversationSourceEvent as ConversationSourceEvent
    from vertexai.types import MemoryBankCustomizationConfigGenerateMemoriesExampleGeneratedMemory as ExampleGeneratedMemory
    
    example = GenerateMemoriesExample(
        conversation_source=ConversationSource(
            events=[
                ConversationSourceEvent(
                    content=Content(
                        role="model",
                        parts=[Part(text="Welcome back to The Daily Grind! We'd love to hear your feedback on your visit.")]
                    )
                ),
                ConversationSourceEvent(
                    content=Content(
                        role="user",
                        parts=[Part(text= "Hey. The drip coffee was a bit lukewarm today, which was a bummer. Also, the music was way too loud, I could barely hear my friend.")]
                    )
                )
            ]
        ),
        generated_memories=[
            ExampleGeneratedMemory(
                fact="The user reported that the drip coffee was lukewarm."
            ),
            ExampleGeneratedMemory(
                fact="The user felt the music in the shop was too loud."
            )
        ]
    )
    

    Anda juga dapat memberikan contoh percakapan yang tidak boleh menghasilkan kenangan yang dibuat dengan memberikan daftar kosong untuk output yang diharapkan (generated_memories):

    Kamus

    example = {
        "conversationSource": {
            "events": [
              {
                  "content": {
                      "role": "model",
                      "parts": [{ "text": "Good morning! What can I get for you at The Daily Grind?" }] }
              },
              {
                  "content": {
                      "role": "user",
                      "parts": [{ "text": "Thanks for the coffee." }] }
              }
            ]
        },
        "generatedMemories": []
    }
    

    Berbasis kelas

    from google.genai.types import Content, Part
    from vertexai.types import MemoryBankCustomizationConfigGenerateMemoriesExample as GenerateMemoriesExample
    from vertexai.types import MemoryBankCustomizationConfigGenerateMemoriesExampleConversationSource as ConversationSource
    from vertexai.types import MemoryBankCustomizationConfigGenerateMemoriesExampleConversationSourceEvent as ConversationSourceEvent
    
    example = GenerateMemoriesExample(
        conversation_source=ConversationSource(
            events=[
                ConversationSourceEvent(
                    content=Content(
                        role="model",
                        parts=[Part(text="Welcome back to The Daily Grind! We'd love to hear your feedback on your visit.")]
                    )
                ),
                ConversationSourceEvent(
                    content=Content(
                        role="user",
                        parts=[Part(text= "Thanks for the coffee!")]
                    )
                )
            ]
        ),
        generated_memories=[]
    )
    

    Konfigurasi penelusuran kemiripan

    Konfigurasi penelusuran kemiripan mengontrol model embedding mana yang digunakan oleh instance Anda untuk penelusuran kemiripan. Penelusuran kesamaan digunakan untuk mengidentifikasi memori mana yang harus menjadi kandidat untuk penggabungan dan untuk pengambilan memori berbasis penelusuran kesamaan. Jika konfigurasi ini tidak disediakan, Memory Bank akan menggunakan text-embedding-005 sebagai model default.

    Jika Anda memperkirakan percakapan pengguna akan menggunakan bahasa selain bahasa Inggris, gunakan model yang mendukung beberapa bahasa, seperti gemini-embedding-001 atau text-multilingual-embedding-002, untuk meningkatkan kualitas pengambilan.

    Kamus

    memory_bank_config = {
        "similarity_search_config": {
            "embedding_model": "EMBEDDING_MODEL",
        }
    }
    

    Berbasis kelas

    from vertexai.types import ReasoningEngineContextSpecMemoryBankConfig as MemoryBankConfig
    from vertexai.types import ReasoningEngineContextSpecMemoryBankConfigSimilaritySearchConfig as SimilaritySearchConfig
    
    memory_bank_config = MemoryBankConfig(
        similarity_search_config=SimilaritySearchConfig(
            embedding_model="EMBEDDING_MODEL"
        )
    )
    

    Ganti kode berikut:

    • EMBEDDING_MODEL: Model embedding teks Google yang akan digunakan untuk penelusuran kesamaan, dalam format projects/{project}/locations/{location}/publishers/google/models/{model}.

    Konfigurasi pembuatan

    Konfigurasi pembuatan mengontrol LLM mana yang digunakan untuk membuat kenangan, termasuk mengekstrak kenangan dan menggabungkan kenangan baru dengan kenangan yang ada.

    Memory Bank menggunakan gemini-2.5-flash sebagai model default. Untuk wilayah yang tidak memiliki ketersediaan Gemini regional, endpoint global akan digunakan.

    Kamus

    memory_bank_config = {
          "generation_config": {
                "model": "LLM_MODEL",
          }
    }
    

    Berbasis kelas

    from vertexai.types import ReasoningEngineContextSpecMemoryBankConfig as MemoryBankConfig
    from vertexai.types import ReasoningEngineContextSpecMemoryBankConfigGenerationConfig as GenerationConfig
    
    memory_bank_config = MemoryBankConfig(
        generation_config=GenerationConfig(
          model="LLM_MODEL"
        )
    )
    
    

    Ganti kode berikut:

    • LLM_MODEL: Model LLM Google yang akan digunakan untuk mengekstrak dan menggabungkan kenangan, dalam format projects/{project}/locations/{location}/publishers/google/models/{model}.

    Konfigurasi time to live (TTL)

    Konfigurasi TTL mengontrol cara Memory Bank menetapkan waktu habis masa berlaku memori secara dinamis. Setelah waktu habisnya berlalu, kenangan tidak akan tersedia untuk diambil dan akan dihapus.

    Jika konfigurasi tidak diberikan, waktu habis masa berlaku tidak akan disetel secara dinamis untuk kenangan yang dibuat atau diperbarui, sehingga kenangan tidak akan habis masa berlakunya kecuali jika waktu habis masa berlakunya disetel secara manual.

    Ada dua opsi untuk konfigurasi TTL:

    • TTL Default: TTL akan diterapkan ke semua operasi yang membuat atau memperbarui memori, termasuk UpdateMemory, CreateMemory, dan GenerateMemories.

      Kamus

      memory_bank_config = {
          "ttl_config": {
              "default_ttl": f"TTLs"
          }
      }
      

      Berbasis kelas

      from vertexai.types import ReasoningEngineContextSpecMemoryBankConfig as MemoryBankConfig
      from vertexai.types import ReasoningEngineContextSpecMemoryBankConfigTtlConfig as TtlConfig
      
      memory_bank_config = MemoryBankConfig(
          ttl_config=TtlConfig(
              default_ttl=f"TTLs"
          )
      )
      

      Ganti kode berikut:

      • TTL: Durasi dalam detik untuk TTL. Untuk kenangan yang diperbarui, waktu habis masa berlaku yang baru dihitung (sekarang + TTL) akan menggantikan waktu habis masa berlaku Kenangan sebelumnya.
    • TTL terperinci (per operasi): TTL dihitung berdasarkan operasi yang membuat atau memperbarui Memori. Jika tidak ditetapkan untuk operasi tertentu, operasi tidak akan memperbarui waktu habis masa berlaku Memori.

      Kamus

      memory_bank_config = {
          "ttl_config": {
              "granular_ttl": {
                  "create_ttl": f"CREATE_TTLs",
                  "generate_created_ttl": f"GENERATE_CREATED_TTLs",
                  "generate_updated_ttl": f"GENERATE_UPDATED_TTLs"
              }
          }
      }
      

      Berbasis kelas

      from vertexai.types import ReasoningEngineContextSpecMemoryBankConfig as MemoryBankConfig
      from vertexai.types import ReasoningEngineContextSpecMemoryBankConfigTtlConfig as TtlConfig
      from vertexai.types import ReasoningEngineContextSpecMemoryBankConfigTtlConfigGranularTtlConfig as GranularTtlConfig
      
      memory_bank_config = MemoryBankConfig(
          ttl_config=TtlConfig(
              granular_ttl_config=GranularTtlConfig(
                  create_ttl=f"CREATE_TTLs",
                  generate_created_ttl=f"GENERATE_CREATED_TTLs",
                  generate_updated_ttl=f"GENERATE_UPDATED_TTLs",
              )
          )
      )
      

      Ganti kode berikut:

      • CREATE_TTL: Durasi dalam detik untuk TTL memori yang dibuat menggunakan CreateMemory.
      • GENERATE_CREATED_TTL: Durasi dalam detik untuk TTL memori yang dibuat menggunakan GeneratedMemories.
      • GENERATE_UPDATED_TTL: Durasi dalam detik untuk TTL kenangan yang diperbarui menggunakan GeneratedMemories. Waktu habis masa berlaku yang baru dihitung (sekarang + TTL) akan menggantikan waktu habis masa berlaku Memori sebelumnya.

    Langkah berikutnya