Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Especifique la organización de la memoria a largo plazo con espacios de nombres
Al crear una AgentCore memoria, utilice un espacio de nombres para especificar dónde se agrupan lógicamente las memorias Long-term memoria a largo plazo de una estrategia de memoria. Cada vez que se extrae una nueva memoria a largo plazo mediante la estrategia de memoria, se guarda en el espacio de nombres que haya establecido. Esto significa que todos los recuerdos a largo plazo se clasifican según su espacio de nombres específico, lo que los mantiene organizados y evita cualquier confusión con otros usuarios o sesiones. Debes usar un formato jerárquico separado por barras diagonales. / Esto ayuda a mantener los recuerdos organizados con claridad. Según sea necesario, puede optar por utilizar las siguientes variables predefinidas entre corchetes en el espacio de nombres en función de las necesidades organizativas de su aplicación:
-
actOrID: identifica a quién pertenece la memoria a largo plazo.
Un actor hace referencia a una entidad, como los usuarios finales o agent/user las combinaciones. Por ejemplo, en un chatbot de soporte de codificación, el actor suele ser el desarrollador que hace las preguntas. El uso del ID del actor ayuda al sistema a saber a qué usuario pertenece la memoria, manteniendo los datos de cada usuario separados y organizados.
-
StrategyID: muestra qué estrategia de memoria se está utilizando. Este identificador de estrategia se genera automáticamente al crear una memoria. AgentCore
-
SessionID: identifica de qué sesión o conversación proviene la memoria.
Una sesión suele ser un único período de conversación o interacción entre el usuario y el agente de IA. Agrupa todos los mensajes y eventos relacionados que ocurren durante esa conversación.
Por ejemplo, si defines el siguiente espacio de nombres como entrada para tu estrategia al crear una AgentCore memoria:
/strategy/{memoryStrategyId}/actor/{actorId}/session/{sessionId}/
Tras la creación de la memoria, este espacio de nombres podría tener el siguiente aspecto:
/strategy/summarization-93483043/actor/actor-9830m2w3/session/session-9330sds8
Un espacio de nombres puede tener diferentes niveles de granularidad. Los siguientes ejemplos utilizan únicamente variables integradas:
Granular a nivel de sesión
/strategy/{memoryStrategyId}/actor/{actorId}/session/{sessionId}/
Granular a nivel de actor en todas las sesiones
/strategy/{memoryStrategyId}/actor/{actorId}/
Granular a nivel de estrategia para todos los actores
/strategy/{memoryStrategyId}/
Global en todas las estrategias
/
Para una organización aún más granular, puedes agregar variables de espacio de nombres personalizadas para representar dimensiones adicionales, como el inquilino, el equipo o el entorno.
Para ver un código de ejemplo, consulta Habilitar la memoria a largo plazo.
Variables de espacio de nombres personalizadas
Además de las variables integradas (actorId,,memoryStrategyId)sessionId, puedes definir variables de espacio de nombres personalizadas para representar las dimensiones organizativas únicas de tu aplicación, como la empresa, la organización, el equipo o el entorno. Con las variables personalizadas, puedes organizar las memorias a largo plazo según jerarquías arbitrarias sin crear estrategias duplicadas ni sobrecargar las variables integradas.
Por ejemplo, una aplicación multiusuario puede necesitar memorias controladas por las organizaciones:
/org/{orgname}/team/{teamname}/actor/{actorId}/session/{sessionId}/
Las variables personalizadas se definen al crear o actualizar un recurso de memoria existente mediante el namespaceKeys parámetro y se proporcionan sus valores en tiempo de ejecución a través del extractionConfig.namespaceVariables campo de la operación. CreateEvent
importante
Todas las claves y valores de las variables de espacio de nombres personalizados deben estar en minúsculas.
Defina las claves del espacio de nombres
Al crear o actualizar un recurso de memoria, utilice el namespaceKeys parámetro para declarar las claves variables personalizadas y las reglas de validación opcionales. Cada clave debe:
-
Contener solo caracteres alfanuméricos en minúscula.
-
No debe ser un nombre de variable integrado (
actorIdsessionId, o).memoryStrategyId -
Debe tener 32 caracteres como máximo.
Puede definir hasta 5 claves de espacio de nombres por recurso de memoria y hasta 5 variables personalizadas por namespaceTemplate recurso.
Tenga en cuenta lo siguiente al definir las claves de espacio de nombres:
-
Puedes definir claves de espacio de nombres a las que no haga referencia ninguna estrategia para preregistrar las claves para usarlas en el futuro.
-
Varias estrategias pueden hacer referencia a una única clave de espacio de nombres. Por ejemplo,
{companyname}puede aparecer tanto en una estrategia semántica como en una estrategia resumida.namespaceTemplate -
No se
namespaceTemplatepuede eliminar una clave de espacio de nombres a la que hace referencia actualmente una estrategia. Primero debes eliminar la referencia de la estrategia (eliminar la referencia de la clave) y, a continuación, eliminarla.
Para cada clave, si lo desea, puede especificar reglas de validación que restrinjan los valores aceptados en tiempo de ejecución:
-
allowedValues: una lista de hasta 10 valores permitidos (distingue entre mayúsculas y minúsculas). Los valores deben empezar con un carácter alfanumérico en minúscula y contener únicamente caracteres alfanuméricos en minúscula, guiones y guiones bajos.
-
RegexPattern: un patrón de expresiones regulares (hasta 64 caracteres) con el que debe coincidir el valor.
Cuando especificas ambos allowedValues yregexPattern, el servicio aplica ambas reglas (lógicas). AND
En el siguiente ejemplo, se muestra cómo crear un recurso de memoria con variables de espacio de nombres personalizadas y validaciones:
aws bedrock-agentcore-control create-memory \ --name "MultiTenantAgentMemory" \ --description "Memory for a multi-tenant AI agent" \ --event-expiry-duration 10 \ --memory-strategies '[ { "semanticMemoryStrategy": { "name": "TenantScopedStrategy", "namespaceTemplates": ["/org/{orgname}/team/{teamname}/actor/{actorId}/session/{sessionId}/"] } } ]' \ --namespace-keys '[ {"key": "orgname", "validation": {"allowedValues": ["acme", "globex", "initech"]}}, {"key": "teamname", "validation": {"regexPattern": "^[a-z][a-z0-9-]*$"}} ]'
Proporcione valores de espacio de nombres en tiempo de ejecución
Al crear un evento mediante la CreateEvent operación, introduzca los valores de las variables de espacio de nombres personalizadas en el extractionConfig.namespaceVariables campo:
aws bedrock-agentcore create-event \ --memory-id "MultiTenantAgentMemory-n29sh5ka8r" \ --actor-id "user123" \ --session-id "session67" \ --event-timestamp "$(date -u +"%Y-%m-%dT%H:%M:%S.%3NZ")" \ --payload '[ { "conversational": { "content": {"text": "I need help debugging my application."}, "role": "USER" } } ]' \ --extraction-config '{ "namespaceVariables": { "orgname": "acme", "teamname": "engineering" } }'
El servicio sustituye estos valores en las plantillas de espacio de nombres durante la extracción de memoria a largo plazo.
nota
Si en la CreateEvent solicitud no se proporciona una variable de espacio de nombres personalizada a la que hace referencia una estrategia, no namespaceTemplate se resuelve el espacio de nombres para esa estrategia. Como resultado, no se inicia la extracción de memoria a largo plazo para esa estrategia. La CreateEvent operación se sigue realizando correctamente y el evento persiste en la memoria a corto plazo.
Para detectar estos errores, configure los registros vendidos y supervise la NamespaceResolutionFailure métrica, que muestra las dimensiones:Operation, ResourceStrategyType, y cuya extracción se StrategyId omitió.
Actualiza las claves del espacio de nombres
Al actualizar las claves del espacio de nombres con la UpdateMemory operación, el namespaceKeys valor reemplaza por completo al conjunto existente. Para actualizar de forma segura, recupera las claves actuales conGetMemory, aplica los cambios y envía la lista completa.
Tenga en cuenta las siguientes restricciones:
-
Si omites una clave a la que todavía hace referencia una estrategia
namespaceTemplate, el servicio arroja unaValidationException. Primero debes eliminar la clave de la estrategianamespaceTemplateantes de poder eliminarla denamespaceKeys. -
Para agregar una nueva clave, inclúyala junto con todas las claves existentes en la solicitud.
# Get the current memory configuration current = control_client.get_memory(memoryId="MultiTenantAgentMemory-n29sh5ka8r") existing_keys = current['memory'].get('namespaceKeys', []) # Add a new key while preserving existing ones existing_keys.append({ 'key': 'category', 'validation': { 'allowedValues': ['backend', 'frontend', 'data'] } }) # Update with the full set control_client.update_memory( memoryId="MultiTenantAgentMemory-n29sh5ka8r", namespaceKeys=existing_keys )
Restrinja el acceso a la ruta de escritura con las claves de condición de IAM
Puedes crear políticas de IAM que usen la clave de bedrock-agentcore:namespaceVariable/<variableName> condición para controlar qué valores de variables de espacio de nombres personalizados puede usar la persona que llama al crear eventos. Con esta clave de condición, puedes forzar el aislamiento de los inquilinos en la ruta de escritura.
La clave de condición sigue el patrón en el bedrock-agentcore:namespaceVariable/<key> que <key> se define el nombre de la variable del espacio de nombres. namespaceKeys
La siguiente política permite a la persona que llama crear eventos solo cuando orgname está configurada en y deniega explícitamente las solicitudes cuando orgname está configurada en: acme globex
{ "Version":"2012-10-17", "Statement": [ { "Sid": "AllowCreateEventForAcme", "Effect": "Allow", "Action": "bedrock-agentcore:CreateEvent", "Resource": "arn:aws:bedrock-agentcore:us-east-1:123456789012:memory/memory_id", "Condition": { "StringEquals": { "bedrock-agentcore:namespaceVariable/orgname": "acme" } } }, { "Sid": "DenyCreateEventForGlobex", "Effect": "Deny", "Action": "bedrock-agentcore:CreateEvent", "Resource": "arn:aws:bedrock-agentcore:us-east-1:123456789012:memory/memory_id", "Condition": { "StringEquals": { "bedrock-agentcore:namespaceVariable/orgname": "globex" } } } ] }
En la siguiente tabla, se muestra cómo IAM evalúa las solicitudes en función de si la política contiene una clave de condición y de si la solicitud proporciona la variable de espacio de nombres:
¿La política tiene una condición activada? namespaceVariable |
¿La solicitud proporciona la variable? | Resultado | Motivo |
|---|---|---|---|
|
No |
No |
Permitido |
¿Condición no evaluada |
|
No |
Sí |
Permitido |
Se ignoran las claves de contexto adicionales |
|
Sí |
Sí (valor coincidente) |
Permitido |
Se cumple la condición |
|
Sí |
No |
Denegado |
Falta la clave de condición, no se puede cumplir |
|
Sí |
Sí (valor no coincidente) |
Denegado |
La condición no se cumple |
Restrinja el acceso a la ruta de lectura con IAM
Puede crear políticas de IAM para restringir el acceso a la lectura de la memoria según los ámbitos que defina, como el actor, la sesión y el espacio de nombres. Usa los ámbitos como claves de contexto en tus políticas de IAM.
La siguiente política restringe el acceso a la recuperación de memorias de un espacio de nombres específico o de registros de una jerarquía de NamespacePath determinada. En este ejemplo, la política permite el acceso solo a memorias con espacios de nombres exactos, como, por ejemplo, o con espacios de nombres incluidos en la siguiente jerarquía de summaries/agent1/ NamespacePath con, por ejemplo, o. summaries/agent1/ summaries/agent1/session1/ summaries/agent1/session2/
{ "Version":"2012-10-17", "Statement": [ { "Sid": "SpecificNamespaceAccess", "Effect": "Allow", "Action": [ "bedrock-agentcore:RetrieveMemoryRecords" ], "Resource": "arn:aws:bedrock-agentcore:us-east-1:123456789012:memory/memory_id", "Condition": { "StringEquals": { "bedrock-agentcore:namespace": "summaries/agent1/" } } }, { "Sid": "SpecificNamespacePathAccess", "Effect": "Allow", "Action": [ "bedrock-agentcore:RetrieveMemoryRecords" ], "Resource": "arn:aws:bedrock-agentcore:us-east-1:123456789012:memory/memory_id", "Condition": { "StringLike": { "bedrock-agentcore:namespacePath": "summaries/agent1/*" } } } ] }
nota
Las API de recuperación (ListMemoryRecords,) requieren que el espacio de nombres esté completamente resuelto. RetrieveMemoryRecords Las variables de espacio de nombres personalizadas ya están sustituidas en este momento, por lo que las claves existentes bedrock-agentcore:namespace y de bedrock-agentcore:namespacePath condición cubren la ruta de lectura sin ninguna configuración adicional.