

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 创建事件
<a name="short-term-create-event"></a>

事件是短期的基本单位，从中可以将结构化信息提取到记忆中的长期记 AgentCore 忆中。该[CreateEvent](https://docs.amazonaws.cn/bedrock-agentcore/latest/APIReference/API_CreateEvent.html)操作允许您在 AgentCore 内存中存储各种类型的数据，这些数据按参与者和会话组织。事件的作用域在内存中，如下所示：

 **ActorId**   
识别与事件相关的实体，例如最终用户或 agent/user 组合

 **SessionId**   
将相关事件分组在一起，例如对话会话

该`CreateEvent`操作在指定的内存会话中存储一个新的不可变事件。事件代表您的代理想要记住的个别信息，例如对话消息、用户操作或系统事件。

此操作可用于：
+ 记录用户、代理和工具之间的对话历史记录
+ 存储用户互动和行为
+ 捕获系统事件和状态变化
+ 建立会话中按时间顺序排列的活动记录

有关示例代码，请参阅[场景：客户支持 AI 代理使用 AgentCore 内存](memory-customer-scenario.md)。

**注意**  
如果您想将内容输入长期内存而不将其保留为可检索的短期事件，请改用该[IngestData](long-term-ingest-data.md)操作。

## 事件负载类型
<a name="event-payload-types"></a>

该`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..."
    }
  ]
}
```

## 提取配置
<a name="short-term-event-extraction-config"></a>

使用`extractionConfig`参数配置该事件的长期内存提取行为。使用此参数传递自定义命名空间变量值，服务`namespaceTemplates`在提取期间将替换为这些变量值。

 **命名空间变量 **   
自定义命名空间变量键到其值的映射。如果您在创建内存时[使用`namespaceKeys`参数定义了](specify-long-term-memory-organization.md#specify-custom-namespace-variables)自定义命名空间变量，请将它们的值传递到此处，以便服务可以解析长期内存存储的命名空间层次结构。所有键和值都必须为小写。

以下示例显示在创建事件时如何传递自定义命名空间变量值：

```
{
  "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`操作仍会成功并将该事件保存在短期内存中。但是，可能无法对受影响的策略启动长期记忆提取。设置已售日志以监控提取失败。

## 活动分支
<a name="short-term-event-branching"></a>

该`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"
  }
}
```