本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
创建事件
事件是短期的基本单位,从中可以将结构化信息提取到记忆中的长期记 AgentCore 忆中。该CreateEvent操作允许您在 AgentCore 内存中存储各种类型的数据,这些数据按参与者和会话组织。事件的作用域在内存中,如下所示:
- ActorId
-
识别与事件相关的实体,例如最终用户或 agent/user 组合
- SessionId
-
将相关事件分组在一起,例如对话会话
该CreateEvent操作在指定的内存会话中存储一个新的不可变事件。事件代表您的代理想要记住的个别信息,例如对话消息、用户操作或系统事件。
此操作可用于:
-
记录用户、代理和工具之间的对话历史记录
-
存储用户互动和行为
-
捕获系统事件和状态变化
-
建立会话中按时间顺序排列的活动记录
有关示例代码,请参阅场景:客户支持 AI 代理使用 AgentCore 内存。
注意
如果您想将内容输入长期内存而不将其保留为可检索的短期事件,请改用该IngestData操作。
事件负载类型
该payload参数接受有效负载项目列表,允许您在单个事件中存储不同类型的数据。常见的有效载荷类型包括:
- 对话式
-
用于存储带有角色(例如 “用户” 或 “助手”)的对话消息和内容。
- JSON
-
用于存储非对话 JSON-formatted 数据(例如行为事件、活动日志或系统事件),每个有效负载最大 100 KB。
- Blob
-
用于存储二进制格式的数据,例如图像和文档,或代理独有的数据,例如以 JSON 格式存储的数据。
注意
会话和 JSON 有效载荷被提取到长期内存中。Blob 有效载荷仅存储在短期内存中,不能提取。
因为payload是一个列表,所以单个事件可以携带多个有效载荷项目并混合有效载荷类型。以下示例显示了一个将对话消息、JSON 活动日志和二进制 blob(base64 编码的图像)存储在一个事件中的 JSON 请求正文:
示例 — Multi-payload 活动请求
{ "memoryId": "mem-12345abcdef", "actorId": "agent-support-123/customer-456", "sessionId": "session-789", "eventTimestamp": 1718806000000, "payload": [ { "conversational": { "content": { "text": "Here's a photo of the camera I'm interested in." }, "role": "USER" } }, { "json": { "content": { "eventType": "product_viewed", "productId": "cam-9921", "category": "action-cameras", "priceUsd": 349.99 } } }, { "blob": "iVBORw0KGgoAAAANSUhEUg..." } ] }
提取配置
使用extractionConfig参数配置该事件的长期内存提取行为。使用此参数传递自定义命名空间变量值,服务namespaceTemplates在提取期间将替换为这些变量值。
- 命名空间变量
-
自定义命名空间变量键到其值的映射。如果您在创建内存时使用namespaceKeys参数定义了自定义命名空间变量,请将它们的值传递到此处,以便服务可以解析长期内存存储的命名空间层次结构。所有键和值都必须为小写。
以下示例显示在创建事件时如何传递自定义命名空间变量值:
{ "memoryId": "mem-12345abcdef", "actorId": "user456", "sessionId": "session789", "eventTimestamp": 1692804206123, "payload": [ { "conversational": { "content": {"text": "I need help with my deployment."}, "role": "USER" } } ], "extractionConfig": { "namespaceVariables": { "orgname": "engineering", "teamname": "backend" } } }
注意
如果中的必填值extractionConfig缺失或无效,则CreateEvent操作仍会成功并将该事件保存在短期内存中。但是,可能无法对受影响的策略启动长期记忆提取。设置已售日志以监控提取失败。
活动分支
该branch参数允许您通过高级分支来组织活动。这对于消息编辑或替代对话路径等场景很有用。例如,假设你有一个长时间的对话,并且你意识到自己有兴趣从前 5 条消息开始探索另一种对话。您可以使用branch参数从存储在新分支中的该消息开始新对话,这也允许您返回到原始对话。更平凡的是,如果你想让用户编辑他们最近的消息(以防用户提前按下回车键或有错字)并继续对话,这很有用。
创建分支时,您可以指定:
- name
-
分支的描述性名称,例如 “已编辑的对话”。
- rootEventId
-
分支来源的事件的 ID。
以下是创建分支事件以表示经过编辑的消息的示例:
{ "memoryId": "mem-12345abcdef", "actorId": "agent-support-123/customer-456", "sessionId": "session-789", "eventTimestamp": 1718806000000, "payload": [ { "conversational": { "content": { "text": "I'm looking for a waterproof action camera for extreme sports." }, "role": "USER" } } ], "branch": { "name": "edited-conversation", "rootEventId": "evt-67890" } }