跳到主要内容

使用会话 ID 管理组件间通信

Session ID(会话 ID)是客户端 / 服务端连接的唯一标识。一次会话通常对应一个客户端与服务器之间连接持续的整个周期。

在 SkillFlaw 的 Playground 中,当前会话会显示在面板左侧。

SkillFlaw 使用会话 ID 来区分同一个流程中的不同聊天交互,因此一个流程里可以同时存在多个聊天会话。消息会带着 session ID 存储到数据库中,用它作为引用键。

这种基于会话的用户区分,不仅有助于管理客户端 / 服务端连接,也对在同一流程里维持独立对话上下文非常重要。LLM 会依赖历史交互来生成回答;如果不同对话不加区分,回答会变得不准确,甚至互相串线。

自定义会话 ID

你可以在 API 请求的 payload 中传入自定义 session ID,也可以在单个组件的高级设置中设置。API 中提供的 session ID 优先级更高。如果未指定 session ID,则默认使用 flow ID。

如果你在 payload 中设置了自定义 session ID,所有下游组件都会沿用上游组件的 session ID。 请将 SKILLFLAW_SERVER_ADDRESSFLOW_IDSKILLFLAW_API_KEY 替换为你当前部署中的实际值。


_10
curl --request POST \
_10
--url "http://SKILLFLAW_SERVER_ADDRESS/api/v1/run/FLOW_ID" \
_10
--header "Content-Type: application/json" \
_10
--header "x-api-key: $SKILLFLAW_API_KEY" \
_10
--data '{
_10
"input_value": "Hello",
_10
"output_type": "chat",
_10
"input_type": "chat",
_10
"session_id": "my_custom_session_value"
_10
}'

my_custom_session_value 会被所有支持该字段的组件使用,并且该流程的消息会以各自的 session_id 存储到你配置的 SkillFlaw 消息存储中。

按 session ID 从记忆中读取消息

如果要从 SkillFlaw 本地记忆中读取消息,可在流程中添加 Message History 组件。 该组件接收 sessionID 作为过滤参数,并会自动沿用上游的 session ID,从存储中读取对应会话的历史消息。

你也可以通过 SkillFlaw API 的 GET /api/v1/monitor/messagessession_id 获取消息。

如果你想看 session ID 的实际使用示例,可以参考 Use Session IDs in SkillFlaw