Vertex AI Agent Engine Memory Bank を使用する前に、環境を設定する必要があります。Memory Bank は Agent Engine の一部ですが、Memory Bank を使用するためにコードを Agent Engine ランタイムにデプロイする必要はありません。
Google Cloud プロジェクトを設定する
すべてのプロジェクトは、プロジェクト番号またはプロジェクト ID によって識別できます。PROJECT_NUMBER
はプロジェクトの作成時に自動的に作成されますが、PROJECT_ID
はプロジェクトの作成者が作成します。プロジェクトを設定するには:
- 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.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Vertex AI API.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Vertex AI API.
エクスプレス モードで Vertex AI を使用していない場合は、Vertex AI に対する認証の手順に沿って操作します。
エクスプレス モードで Vertex AI を使用している場合は、環境に API キーを設定して認証を設定します。
os.environ["GOOGLE_API_KEY"] = "API_KEY"
PROJECT_ID
はプロジェクト ID です。LOCATION
は、Memory Bank のサポートされているリージョンの 1 つです。Agent Engine インスタンスを作成または更新する: インスタンスを作成または更新するときに、Agent Engine のデフォルトをオーバーライドして、インスタンスに次の変更を加えることができます。
- AGENT_ENGINE_NAME: エージェント エンジンの名前。
projects/.../locations/.../reasoningEngines/...
の形式で指定します。Memory Bank のサポートされているリージョンをご覧ください。 Memory Bank が思い出を生成して管理する方法の設定を行う。
エージェントを Agent Engine ランタイムにデプロイします。
agent_engine = client.agent_engines.create( # Optional. Set this argument if you want to deploy to Agent Engine Runtime. agent_engine=..., # Optional. Set this argument if you want to change the Memory Bank configuration. config=... )
新しいインスタンスは、思い出を作成するか、思い出を生成するまで空です。
メモリーの読み取りまたは書き込みを行うには、Agent Engine の名前が必要です。
agent_engine_name = agent_engine.api_resource.name
- AGENT_ENGINE_NAME: エージェント エンジンの名前。
projects/.../locations/.../reasoningEngines/...
の形式で指定します。Memory Bank のサポートされているリージョンをご覧ください。 - カスタマイズ構成: ソースデータからメモリーを抽出する方法を構成します。
- 類似性検索の構成: 類似性検索に使用するエンベディング モデルを構成します。デフォルトは
text-embedding-005
です。 - 生成構成: メモリ生成に使用する LLM を構成します。デフォルトは
gemini-2.5-flash
です。 - TTL の構成: 作成または更新されたメモリの TTL を自動的に設定する方法を構成します。デフォルトでは TTL は設定されません。
- メモリトピックの構成: Memory Bank が永続化するのに意味があると考える情報の種類を定義します。これらのメモリ トピックのいずれかに該当する情報のみがメモリバンクに保存されます。
- 少数ショットの例を提供する: メモリ バンクへのメモリ抽出の想定される動作を示します。
管理対象トピック: ラベルと手順は Memory Bank によって定義されます。指定する必要があるのは、マネージド トピックの名前だけです。たとえば
辞書
memory_topic = { "managed_memory_topic": { "managed_topic_enum": "USER_PERSONAL_INFO" } }
クラスベース
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 ) )
Memory Bank では、次のマネージド トピックがサポートされています。
- 個人情報(
USER_PERSONAL_INFO
): ユーザーに関する重要な個人情報(名前、関係、趣味、重要な日付など)。たとえば、「私は Google で働いています」、「結婚記念日は 12 月 31 日です」などです。 - ユーザーの好み(
USER_PREFERENCES
): 明示的または暗黙的な好み、嫌いなもの、好みのスタイル、パターン。たとえば、「真ん中の席がいいです」と入力します。 - 会話の重要なイベントとタスクの結果(
KEY_CONVERSATION_DETAILS
): 会話内の重要なマイルストーンまたは結論。たとえば、「JFK と SFO 間の往復航空券を予約しました。2025 年 6 月 1 日に出発し、2025 年 6 月 7 日に帰国します。」 - 明示的な記憶 / 忘却の指示(
EXPLICIT_INSTRUCTIONS
): エージェントに記憶または忘却を明示的に指示する情報。たとえば、ユーザーが「私は主に Python を使用していることを覚えておいて」と言うと、Memory Bank は「私は主に Python を使用している」というメモを生成します。
- 個人情報(
カスタム トピック: メモリーバンク インスタンスの設定時に、ラベルと手順を定義します。これらは、Memory Bank の抽出ステップのプロンプトで使用されます。たとえば
辞書
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.""" } }
クラスベース
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.""" ) )
カスタム トピックを使用する場合は、会話からメモリーを抽出する方法を示す少量のサンプルも提供することをおすすめします。
- EMBEDDING_MODEL: 類似性検索に使用する Google テキスト エンベディング モデル(
projects/{project}/locations/{location}/publishers/google/models/{model}
形式)。 - LLM_MODEL: メモリの抽出と統合に使用する Google LLM モデル(
projects/{project}/locations/{location}/publishers/google/models/{model}
形式)。 デフォルト TTL: TTL は、
UpdateMemory
、CreateMemory
、GenerateMemories
など、メモリを作成または更新するすべてのオペレーションに適用されます。辞書
memory_bank_config = { "ttl_config": { "default_ttl": f"TTLs" } }
クラスベース
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" ) )
次のように置き換えます。
- TTL: TTL の期間(秒単位)。更新されたメモリーの場合、新たに計算された有効期限(現在 + TTL)によって、メモリーの以前の有効期限が上書きされます。
きめ細かい(オペレーション単位の)TTL: TTL は、どのオペレーションが Memory を作成または更新したかに基づいて計算されます。特定のオペレーションに設定されていない場合、オペレーションは Memory の有効期限を更新しません。
辞書
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" } } }
クラスベース
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", ) ) )
次のように置き換えます。
- CREATE_TTL:
CreateMemory
を使用して作成されたメモリの TTL の秒単位の期間。 - GENERATE_CREATED_TTL:
GeneratedMemories
を使用して作成されたメモリの TTL の秒単位の期間。 - GENERATE_UPDATED_TTL:
GeneratedMemories
を使用して更新されたメモリの TTL の秒単位の期間。新たに計算された有効期限(現在 + TTL)は、Memory の以前の有効期限を上書きします。
- CREATE_TTL:
- STAGING_BUCKET: Agent Engine Runtime のステージングに使用する Cloud Storage バケット。
必要なロールを取得する
Vertex AI Agent Engine の使用に必要な権限を取得するには、プロジェクトに対する Vertex AI ユーザー (roles/aiplatform.user
)IAM ロールを付与するよう管理者に依頼してください。ロールの付与については、プロジェクト、フォルダ、組織に対するアクセス権の管理をご覧ください。
必要な権限は、カスタムロールや他の事前定義ロールから取得することもできます。
Google Kubernetes Engine または Cloud Run にデプロイされたエージェントから Memory Bank にリクエストを送信する場合は、サービス アカウントに必要な権限があることを確認してください。Reasoning Engine サービス エージェントには、メモリの読み取りと書き込みに必要な権限がすでに付与されているため、Agent Engine Runtime からのアウトバウンド リクエストには、Memory Bank にアクセスする権限がすでに付与されているはずです。
環境の設定
このセクションでは、Python 開発環境を設定しているか、Python 開発環境(Colab など)を含むランタイムを使用していることを前提としています。
ライブラリをインストールする
Vertex AI SDK をインストールする
pip install google-cloud-aiplatform>=1.111.0
認証
認証手順は、Vertex AI をエクスプレス モードで使用しているかどうかによって異なります。
Vertex AI SDK クライアントを設定する
次のコードを実行して、Vertex AI SDK クライアントを設定します。
import vertexai
client = vertexai.Client(
project="PROJECT_ID",
location="LOCATION",
)
ここで
Memory Bank 用に Agent Engine インスタンスを構成する
Memory Bank を使用するには、まず Agent Engine インスタンスが必要です。
次のいずれかを行います。
既存のインスタンスを使用する
既存の Agent Engine インスタンスを変更する必要がない場合は、次のコマンドを実行して、Memory Bank 用にインスタンスを構成します。
agent_engine = client.agent_engines.get(name="AGENT_ENGINE_NAME")
次のように置き換えます。
このインスタンスは、Google Kubernetes Engine や Cloud Run などの任意の環境で使用できます。開始するには、Memory Bank を識別する Agent Engine 名と、Memory Bank を呼び出すのに十分な権限が必要です。
インスタンスを作成または更新する
作成
Agent Engine インスタンスを作成すると、Memory Bank はデフォルトで有効になります。ランタイムなしで新しい Agent Engine を作成するには、数秒しかかかりません。
agent_engine = client.agent_engines.create()
Agent Engine インスタンスを作成するときに Agent Engine のデフォルトをオーバーライドして、次の変更を行うこともできます。
更新
インスタンスに保存されているメモリを保持したまま Agent Engine を更新する場合は、既存の Agent Engine インスタンスを更新できます。メモリバンクの構成の変更や Agent Engine ランタイムへのエージェントのデプロイなどの更新を行うことができます。
agent_engine = client.agent_engines.update(
# If you have an existing AgentEngine, you can access the name using `agent_engine.api_resource.name`.
name="AGENT_ENGINE_NAME",
# Optional. Set this argument if you want to deploy to Agent Engine Runtime.
agent_engine=...,
# Optional. Set this argument if you want to change the Memory Bank configuration.
config=...
)
次のように置き換えます。
メモリバンクの設定を行う
Memory Bank を構成して、思い出の生成と管理の方法をカスタマイズできます。構成が指定されていない場合、Memory Bank は各構成タイプのデフォルト設定を使用します。
メモリバンクの構成は、Agent Engine インスタンスの作成時または更新時に設定されます。
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
}
}
)
インスタンスに対して次の設定を構成できます。
カスタマイズ構成
ソースデータからメモリを抽出する方法をカスタマイズする場合は、Agent Engine インスタンスの設定時にメモリ抽出の動作を構成できます。カスタマイズに使用できるレバーは 2 つあります。
必要に応じて、スコープレベルごとに異なる動作を構成できます。たとえば、セッション レベルのメモリにとって意味のあるトピックが、ユーザー レベルのメモリ(複数のセッションにわたる)にとって意味のあるトピックとは限りません。特定のメモリのサブセットの動作を構成するには、カスタマイズ構成のスコープキーを設定します。これらのスコープキーを含む GenerateMemories
リクエストのみが、その構成を使用します。scope_key
フィールドを省略すると、デフォルトの動作(スコープキーのすべてのセットに適用)を構成することもできます。この構成は、別のカスタマイズ構成のスコープキーと完全に一致する構成がないすべてのリクエストに適用されます。
たとえば、user_level_config
は、スコープキー user_id
を正確に使用する GenerateMemories
リクエスト(追加のキーがない scope={"user_id": "123"}
など)にのみ適用されます。default_config
は、他のリクエストに適用されます。
辞書
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
]
}
クラスベース
from vertexai.types import MemoryBankCustomizationConfig as CustomizationConfig
user_level_config = CustomizationConfig(
scope_keys=["user_id"],
memory_topics=[...],
generate_memories_examples=[...]
)
メモリ トピックの構成
「メモリトピック」は、Memory Bank が有意義と見なし、生成されたメモリとして保持すべきと判断した情報を特定します。Memory Bank は、次の 2 種類のメモリトピックをサポートしています。
カスタマイズでは、メモリトピックを自由に組み合わせることができます。たとえば、使用可能なマネージド メモリ トピックのサブセットを使用できます。
辞書
{
"memory_topics": [
"managed_memory_topic": { "managed_topic_enum": "USER_PERSONAL_INFO" },
"managed_memory_topic": { "managed_topic_enum": "USER_PREFERENCES" }
]
}
クラスベース
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)
),
]
)
マネージド トピックとカスタム トピックを組み合わせて使用することも、カスタム トピックのみを使用することもできます。
辞書
{
"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."""
}
]
}
クラスベース
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."""
)
)
]
)
少数ショットの例
少数ショットの例を使用すると、Memory Bank に期待されるメモリ抽出動作を示すことができます。たとえば、入力会話のサンプルと、その会話から抽出されることが想定されるメモリーを指定できます。
Memory Bank が意図した動作を学習できるように、カスタム トピックで常にフューショットを使用することをおすすめします。マネージド トピックを使用する場合、Memory Bank が各トピックの例を定義するため、フューショットは省略可能です。空の generated_memories
リストを指定して、メモリーが生成されない会話を実証します。
たとえば、お客様のメッセージからビジネスに関するフィードバックを抽出する方法を示す少数ショットの例を指定できます。
辞書
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."
}
]
}
クラスベース
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."
)
]
)
生成されたメモが作成されない会話の例を示すこともできます。その場合は、期待される出力(generated_memories
)に空のリストを指定します。
辞書
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": []
}
クラスベース
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=[]
)
類似性検索の構成
類似性検索構成は、類似性検索にインスタンスで使用されるエンベディング モデルを制御します。類似性検索は、統合の候補となるメモリを特定するためと、類似性検索ベースのメモリ取得のために使用されます。この構成が指定されていない場合、Memory Bank はデフォルトのモデルとして text-embedding-005
を使用します。
ユーザーの会話が英語以外の言語で行われることが予想される場合は、gemini-embedding-001
や text-multilingual-embedding-002
などの多言語をサポートするモデルを使用して、検索の品質を向上させます。
辞書
memory_bank_config = {
"similarity_search_config": {
"embedding_model": "EMBEDDING_MODEL",
}
}
クラスベース
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"
)
)
次のように置き換えます。
生成構成
生成構成は、記憶の生成に使用される LLM を制御します。これには、記憶の抽出や、新しい記憶と既存の記憶の統合が含まれます。
Memory Bank は、デフォルトのモデルとして gemini-2.5-flash
を使用します。
辞書
memory_bank_config = {
"generation_config": {
"model": "LLM_MODEL",
}
}
クラスベース
from vertexai.types import ReasoningEngineContextSpecMemoryBankConfig as MemoryBankConfig
from vertexai.types import ReasoningEngineContextSpecMemoryBankConfigGenerationConfig as GenerationConfig
memory_bank_config = MemoryBankConfig(
generation_config=GenerationConfig(
model="LLM_MODEL"
)
)
次のように置き換えます。
有効期間(TTL)の構成
TTL 構成は、Memory Bank がメモリの有効期限を動的に設定する方法を制御します。有効期限が切れると、メモリーは取得できなくなり、削除されます。
構成が指定されていない場合、作成または更新された思い出の有効期限は動的に設定されないため、有効期限が手動で設定されていない限り、思い出は期限切れになりません。
TTL 構成には次の 2 つのオプションがあります。
メモリを使用してエージェントを Agent Engine にデプロイする
Memory Bank は任意のランタイムで使用できますが、Agent Engine Runtime と組み合わせて使用して、デプロイされたエージェントからメモリを読み書きすることもできます。
Vertex AI Agent Engine ランタイムで Memory Bank を使用してエージェントをデプロイするには、まず Agent Engine ランタイムの環境を設定します。次に、メモリ統合を使用して Agent Engine ランタイムにデプロイするエージェントを準備します。デプロイされたエージェントは、必要に応じてメモリの読み取りと書き込みを行う必要があります。
AdkApp
Agent Engine Agent Development Kit テンプレートを使用している場合、エージェントは Agent Engine Runtime にデプロイされるときにデフォルトで VertexAiMemoryBankService
を使用します。つまり、ADK Memory ツールは Memory Bank からメモリを読み取ります。
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_engine=adk_app,
config={
"staging_bucket": "STAGING_BUCKET",
"requirements": ["google-cloud-aiplatform[agent_engines,adk]"],
# Optional.
**context_spec
}
)
次のように置き換えます。
ADK での Memory Bank の使用について詳しくは、Agent Development Kit のクイックスタートをご覧ください。
カスタム エージェント
Memory Bank は、Agent Engine ランタイムにデプロイされたカスタム エージェントで使用できます。この場合、エージェントは Memory Bank への呼び出しをオーケストレートして、記憶生成と記憶取得の呼び出しをトリガーする必要があります。
Memory Bank と Agent Engine ランタイムの両方に同じ Agent Engine インスタンスを使用する場合は、環境変数 GOOGLE_CLOUD_PROJECT
、GOOGLE_CLOUD_LOCATION
、GOOGLE_CLOUD_AGENT_ENGINE_ID
を読み取って、環境から Agent Engine 名を推測できます。
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}"