传递自定义信息

更新时间不可用

了解如何在对话式 AI 引擎中传递自定义信息,包括适用场景、配置步骤、实现要点和注意事项。

与智能体对话时,你可能需要从端侧获取用户的说话状态、选中的文字、个性签名、得分等自定义上下文信息,并将这些信息传递给智能体,引导智能体输出更符合用户需求的内容。

本文介绍如何结合 RTM SDK 提供的能力,实现与智能体对话时携带自定义信息。

技术原理

声网实时消息 RTM SDK 支持为频道中的用户设置自定义的临时状态信息,并以事件通知的方式通知频道中其他的在线用户。如果你的 App 同时集成了声网实时互动 RTC 和实时消息 RTM 服务,就可以在创建智能体时开启 RTM 功能,让智能体在调用大模型前,从 RTM 频道中获取临时状态信息,并将其作为上下文信息传递给大模型,引导智能体输出更符合用户需求的内容。

前提条件

开始前,请确保你已经:

实现方式

启用 RTM

通过 Agents SDK 创建会话或调用 POST 创建对话式智能体时,将 advanced_features.enable_rtm 配置设置为 true 即可启用 RTM。启用后,智能体会在调用大模型前读取说话用户的临时状态,并将这些状态写入请求中的 context.presence 字段。

信息

  • 声网推荐启动 RTM 时开启 String UID(enable_string_uid 配置为 true),并参考 FAQ 生成同时具备 RTC 和 RTM 权限的 Token,之后传入 agent_rtc_uid 字段即可。
  • 同一频道内,Int 型和 String 型的用户 ID 不可混用。更多使用 String UID 的相关信息请参考如何使用 String 型用户 ID。
Go
// ... 其他智能体配置 ...
.WithAdvancedFeatures(&agentkit.AdvancedFeatures{
    EnableRtm: Agora.Bool(true),
})
// ... 继续调用 .CreateSession() ...

设置自定义信息

参考临时用户状态文档,为频道中的用户设置临时状态信息。

传递自定义信息

智能体在调用大模型前,会自动获取说话用户的临时状态信息,并将其作为上下文信息传递给大模型。该临时状态信息会被设置到 context.presence 字段中。

以下示例的场景为用户 UserA 在 App 中选中了文字“勾股定理”,并向智能体提问“这是什么意思?”。示例 JSON 展示了智能体在调用大模型时,从 RTM 获取了 UserA 的一个名为 selection 的临时状态信息,请求的数据结构如下:

JSON
{
  "messages": [
    {
      "role": "user",
      "content": "这是什么意思"
    }
  ],
  "context": {
    "presence": {
      "userA": {
        "selection": "勾股定理"
      }
    }
  },
  "model": "deepseek-r1"
}

适配大模型

启用 RTM 后,智能体只负责把临时状态传递给大模型;大模型是否使用这些信息,取决于你的自定义大模型服务如何处理 context.presence 字段。请参考自定义大模型适配请求解析逻辑,并在提示词或业务逻辑中明确使用所需的临时状态字段。